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

Защитите облачные учетные данные вашего приложения 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 Vision:

  1. Откройте страницу учетных данных Google Cloud Console. При появлении запроса выберите свой проект.

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

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

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

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

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

3. Создайте и используйте ключ API только для отладки

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

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

    1. Откройте страницу учетных данных Google Cloud Console. При появлении запроса выберите свой проект.

    2. Щелкните Создать учетные данные > Ключ API и запишите новый ключ API. Этот ключ разрешает доступ к API из приложений, не прошедших проверку подлинности, поэтому держите этот ключ в секрете .

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

    1. Если у вас еще нет манифеста отладки, создайте его, нажав « Файл» > «Создать» > «Другое» > «Файл манифеста Android» и выбрав debug из целевых исходных наборов.

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

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

    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.