Защитите облачные учетные данные вашего приложения Firebase ML для Android

Если ваш Android приложение использует один из облачного API, Firebase ML, прежде, чем вы запустите приложение в производстве, вы должны принять дополнительные меры для предотвращения несанкционированного доступа к API.

Для ваших производственных приложений, вы можете быть уверены, что только аутентифицированные клиенты могут получить доступ облачных сервисов. (Обратите внимание, что только не укорененные устройства могут проходить проверку подлинности с помощью метода, описанного.)

Тогда вы будете создавать отладки только ключ API, который можно использовать для удобства во время тестирования и разработки.

1. Зарегистрировать производственные приложения с Firebase

Во-первых, зарегистрировать свои производственные приложения с Firebase.

  1. Убедитесь, что у вас есть подпись SHA-1 своего приложения. Обратитесь к аутентификации вашего клиента , чтобы узнать , как.

  2. Перейти к вашим проекта в Firebase консоли, а затем выберите вкладку Параметры .

  3. Прокрутите вниз до ваших приложений карты, затем выберите приложение для Android.

  4. Добавить ваше приложение SHA-1 подпись к информации вашего приложения.

2. Ограничить сферу ваших ключей API

Затем настройте существующие ключи API, чтобы запретить доступ к API Cloud Видения:

  1. Откройте Credentials страницу в Google Cloud Console. В ответ на запрос, выберите проект.

  2. Для каждого существующего ключа API в списке, открыть окно редактирования.

  3. В разделе ограничений API , выберите ключ Ограничить , а затем добавить в список все из API , к которому вы хотите ключ API , чтобы иметь доступ. Убедитесь в том , чтобы не включать в себя API Cloud Vision.

    При настройке ограничения API - ключей API , вы явно декларируя API , к которому ключ доступа. По умолчанию, когда секция ограничения API имеет не ограничивает ключ выбрано, ключ API может использоваться для доступа к любому API , который включен для проекта.

Теперь, существующие ключи API не будут предоставлять доступ к услугам облака ML, но каждая клавиша будет продолжать работать для любых интерфейсов , которые вы добавили в свой список ограничений API .

Обратите внимание , что если включить дополнительный API , в будущем, вы должны добавить их в список ограничений API для соответствующего ключа API.

3. Создание и использование отладки только ключ API

И, наконец, создать новый ключ API, который будет использоваться только для разработки. Firebase ML может использовать этот ключ API для доступа к службам Google Cloud в средах, где приложение аутентификации не представляется возможным, например, при работе на эмуляторах.

  1. Создайте новый ключ API, который будет использоваться для разработки:

    1. Откройте Credentials страницу в Google Cloud Console. В ответ на запрос, выберите проект.

    2. Нажмите кнопку Создать учетные данные> ключ API и принять к сведению нового ключа API. Этот ключ позволяет получить доступ API из неаутентифицированных приложений, так держать этот ключ в тайне .

  2. Для того, чтобы обеспечить новый ключ отладки API не просочился с выпущенным приложением, указать ключ отладки API в Android файл манифеста используется только для отладки сборки:

    1. Если вы уже не имеете отладочный манифест, создать, нажав File> New> Other> Android Manifest файл и выбрав debug из множества целевых источников.

    2. В отладочном манифесте, добавьте следующее объявление:

      <application>
      <meta-data
          android:name="com.firebase.ml.cloud.ApiKeyForDebug"
          android:value="your-debug-api-key" />
      </application>
      
  3. В вашем приложении, настроить Firebase ML использовать сертификат соответствия отпечатков пальцев для проверки подлинности клиента в производстве и использование ключей-АНИ отладки ключ только в отладочной версии:

    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)

Следующие шаги

См запуска контрольного списка для получения информации о подготовке вашего приложения к запуску при использовании других функций Firebase.