Catch up on everything announced at Firebase Summit, and learn how Firebase can help you accelerate app development and run your app with confidence. Learn More

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

Mantenha tudo organizado com as coleções Salve e categorize o conteúdo com base nas suas preferências.

Se seu aplicativo Android usa uma das APIs de nuvem do Firebase ML, antes de iniciar seu aplicativo em produção, você deve seguir algumas etapas adicionais para impedir o acesso não autorizado à API.

Para seus aplicativos de produção, você garantirá que apenas clientes autenticados possam acessar os serviços em nuvem. (Observe que apenas dispositivos não enraizados podem autenticar usando o método descrito.)

Em seguida, você criará uma chave de API somente de depuração que pode ser usada por conveniência durante o teste e o desenvolvimento.

1. Registre seus aplicativos de produção no Firebase

Primeiro, registre seus aplicativos de produção no Firebase.

  1. Certifique-se de ter as assinaturas SHA-1 do seu aplicativo. Consulte Autenticando seu cliente para saber como.

  2. Acesse as do projeto no console do Firebase e selecione a guia Configurações .

  3. Role para baixo até o cartão Seus aplicativos e selecione seu aplicativo Android.

  4. Adicione a assinatura SHA-1 do seu aplicativo às informações do seu aplicativo.

2. Restrinja o escopo de suas chaves de API

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

  1. Abra a página Credenciais do Console do Google Cloud. 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 de restrições de API , selecione Restringir chave e adicione à lista todas as APIs às quais você deseja que a chave de API tenha acesso. Certifique-se de não incluir a API Cloud Vision.

    Ao configurar as restrições de API de uma chave de API , você declara explicitamente as APIs às quais a chave tem acesso. Por padrão, quando a seção de restrições de API tem a opção Não restringir chave selecionada, uma chave de API pode ser usada para acessar qualquer API habilitada para o projeto.

Agora, suas chaves de API existentes não concederão acesso a serviços de ML na nuvem, mas cada chave continuará funcionando para todas as APIs que você adicionou à lista de restrições de API .

Observe que, se você ativar APIs adicionais no futuro, deverá adicioná-las à lista de restrições de API para a chave de API aplicável.

3. Crie e use uma chave de API somente para depuração

Por fim, crie uma nova chave de API para ser usada apenas para desenvolvimento. O Firebase ML pode usar essa chave de API para acessar os serviços do Google Cloud em ambientes em que a autenticação do aplicativo não é possível, como quando executado em emuladores.

  1. Crie uma nova chave de API a ser usada para desenvolvimento:

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

    2. Clique em Criar credenciais > Chave de API e anote a nova chave de API. Essa chave permite o acesso à API de aplicativos não autenticados, portanto, mantenha essa chave confidencial .

  2. Para garantir que a nova chave de API de depuração não vaze com seu aplicativo lançado, especifique a chave de API de depuração em um arquivo de manifesto do Android usado apenas para compilações de depuração:

    1. Se você ainda não tiver um manifesto de depuração, crie um clicando em Arquivo > Novo > Outro > Arquivo de manifesto do Android e selecionando debug nos conjuntos de origem de destino.

    2. No manifesto de depuração, adicione a seguinte declaração:

      <application>
      <meta-data
          android:name="com.firebase.ml.cloud.ApiKeyForDebug"
          android:value="your-debug-api-key" />
      </application>
      
  3. No seu aplicativo, configure o Firebase ML para usar a correspondência de impressão digital de certificado para autenticar seu cliente em produção e usar chaves de API (a chave de depuração) apenas em compilações de depuração:

    Java

    FirebaseVisionCloudImageLabelerOptions.Builder optionsBuilder =
            new FirebaseVisionCloudImageLabelerOptions.Builder();
    if (!BuildConfig.DEBUG) {
        // Requires physical, non-rooted device:
        optionsBuilder.enforceCertFingerprintMatch();
    }
    
    // Set other options. For example:
    optionsBuilder.setConfidenceThreshold(0.8f);
    // ...
    
    // And lastly:
    FirebaseVisionCloudImageLabelerOptions options = optionsBuilder.build();
    FirebaseVision.getInstance().getCloudImageLabeler(options).processImage(myImage);

    Kotlin+KTX

    val optionsBuilder = FirebaseVisionCloudImageLabelerOptions.Builder()
    if (!BuildConfig.DEBUG) {
        // Requires physical, non-rooted device:
        optionsBuilder.enforceCertFingerprintMatch()
    }
    
    // Set other options. For example:
    optionsBuilder.setConfidenceThreshold(0.8f)
    // ...
    
    // And lastly:
    val options = optionsBuilder.build()
    FirebaseVision.getInstance().getCloudImageLabeler(options).processImage(myImage)

Próximos passos

Consulte a lista de verificação de lançamento para obter informações sobre como preparar seu aplicativo para lançamento ao usar outros recursos do Firebase.