Join us for Firebase Summit on November 10, 2021. Tune in to learn how Firebase can help you accelerate app development, release with confidence, and scale with ease. Register

Proteja as credenciais de nuvem do seu aplicativo Firebase ML para iOS

Se seu aplicativo iOS usa uma das APIs de nuvem do Firebase ML, antes de lançar seu aplicativo em produção, você deve realizar algumas etapas adicionais para evitar o acesso não autorizado à API.

1. Reduza o escopo das chaves de API existentes

Primeiro, configure suas chaves de API existentes para impedir o acesso à API Cloud Vision:

  1. Abra a Credenciais página do Google Cloud Console. Quando solicitado, selecione seu projeto.

  2. Para cada chave de API existente na lista, abra a visualização de edição.

  3. Na seção restrições de API, selecione chave Restringir, em seguida, adicione à lista de todas as APIs para o qual você quer a chave de API para ter acesso. Certifique-se de não incluir o API Nuvem Vision.

    Quando você configurar restrições de uma chave de API API, você está declarando explicitamente as APIs para que a chave tem acesso. Por padrão, quando a seção restrições de API tem não restringem chave selecionada, uma chave de API pode ser usada para acessar qualquer API que está habilitado para o projeto.

Agora, suas chaves de API existentes não irá conceder o acesso aos serviços de nuvem ml, mas cada chave vai continuar a trabalhar para qualquer APIs que você adicionou à sua lista de restrições de API.

Note que se você ativar quaisquer APIs adicionais no futuro, você deve adicioná-los à lista de restrições da API para a chave de API aplicável.

2. Crie uma nova chave de API para usar com o Firebase ML

Em seguida, crie uma nova chave de API para Firebase ML que só permite chamadas para a API Cloud Vision:

  1. Voltar ao Credenciais página. Certifique-se de que seu projeto Firebase ainda esteja selecionado.

  2. Clique em Criar credenciais> chave de API. Tome nota da nova chave de API, em seguida, clique em Restringir chave.

  3. Na seção restrições de API, selecione chave Restringir, em seguida, adicione à lista apenas o Cloud API Vision.

Essa chave de API concede acesso apenas à API Cloud Vision e pode ser usada pelo Firebase ML para acessar modelos baseados em nuvem.

Para ajudar a mitigar as consequências de uma chave comprometida, você deve reduzir a cota por usuário da API Cloud Vision de sua configuração padrão. Para fazer isso:

  1. Abra o Quotas API Visão da nuvem página do Google Cloud Console. Quando solicitado, selecione seu projeto.

  2. Nos pedidos seção, defina os pedidos por minuto por quota do usuário para algo razoável para a sua aplicação. Por exemplo, se seu aplicativo envolve o upload de uma imagem de um documento para recuperar seu texto, é improvável que um usuário faça isso mais de uma vez a cada poucos segundos, portanto, uma cota de 30-40 provavelmente seria segura.

    Observe que, neste contexto, "solicitações por usuário" se refere a solicitações de um único endereço IP. Talvez seja necessário considerar isso se você espera que vários usuários usem seu aplicativo ao mesmo tempo por trás de um NAT.

4. Chame APIs de nuvem usando sua chave de API Firebase ML

Por fim, em seu aplicativo, configure o Firebase ML para usar sua nova chave de API.

Como a chave da Firebase ML API permite acesso não autenticado à API Cloud Vision, é importante manter a chave confidencial para evitar o uso não autorizado e cobranças em sua conta de faturamento. Para fazer isso, você deve evitar incluir sua chave de API no binário do seu aplicativo. Em vez disso, no tempo de execução do aplicativo, verifique se um bom usuário conhecido está conectado e, só então, recupere a chave de API de um servidor.

Mesmo quando essas práticas são observadas, é possível que uma chave de API seja comprometida. Você deve tomar medidas para ajudar a mitigar as consequências de uma chave comprometida, como reduzir a cota por usuário da API conforme descrito acima, implementar políticas de rotação de chaves e emitir chaves diferentes para diferentes grupos de usuários.

Depois que seu aplicativo tiver adquirido com segurança a chave de API, quando você quiser chamar uma API Firebase ML Cloud, especifique a chave:

Rápido

if let cloudVisionKey = getYourApiKey() {  // See note above about securing your API key
    let options = VisionCloudDetectorOptions()
    options.apiKeyOverride = cloudVisionKey
    let cloudDetector = Vision.vision().cloudLandmarkDetector(options: options)
}

Objective-C

NSString *cloudVisionKey = [self getYourApiKey];  // See note above about securing your API key
if (cloudVisionKey != nil) {
    FIRVisionCloudDetectorOptions *options =
            [[FIRVisionCloudDetectorOptions alloc] init];
    options.APIKeyOverride = cloudVisionKey;
    FIRVisionCloudLandmarkDetector *landmarkDetector =
            [vision cloudLandmarkDetectorWithOptions:options];
}

Além disso, você deve seguir o conselho geral no Securing uma chave de API .

Próximos passos

Veja a lista de verificação de lançamento para informações sobre como preparar seu aplicativo para lançamento quando se utilizam outras funções Firebase.