Если ваше приложение Apple использует один из облачных API Firebase ML, прежде чем запускать приложение в рабочей среде, вы должны предпринять дополнительные шаги для предотвращения несанкционированного доступа к API.
1. Уменьшите объем существующих ключей API
Сначала настройте существующие ключи API, чтобы запретить доступ к Cloud Vision API:
Откройте страницу учетных данных Google Cloud Console. При появлении запроса выберите свой проект.
Для каждого существующего ключа API в списке откройте режим редактирования.
В разделе ограничений API выберите Ограничить ключ , затем добавьте в список все API, к которым вы хотите, чтобы ключ API имел доступ. Убедитесь, что вы не включили Cloud Vision API.
Когда вы настраиваете ограничения API ключа API, вы явно объявляете API, к которым у ключа есть доступ. По умолчанию, если в разделе ограничений API выбран параметр Не ограничивать ключ , ключ API можно использовать для доступа к любому API, включенному для проекта.
Теперь ваши существующие ключи API не будут предоставлять доступ к облачным службам машинного обучения, но каждый ключ будет продолжать работать для любых API, которые вы добавили в список ограничений API .
Обратите внимание: если вы в будущем включите какие-либо дополнительные API, вы должны добавить их в список ограничений API для соответствующего ключа API.
2. Создайте новый ключ API для использования с Firebase ML.
Затем создайте новый ключ API для Firebase ML, который разрешает вызовы только к API Cloud Vision:
Вернитесь на страницу учетных данных . Убедитесь, что ваш проект Firebase по-прежнему выбран.
Щелкните Создать учетные данные > Ключ API . Обратите внимание на новый ключ API, затем нажмите Ограничить ключ .
В разделе ограничений API выберите Ограничить ключ , затем добавьте в список только Cloud Vision API.
Этот ключ API предоставляет доступ только к API Cloud Vision и может использоваться Firebase ML для доступа к облачным моделям.
3. Рекомендуется: уменьшите квоту Cloud Vision API.
Чтобы смягчить последствия скомпрометированного ключа, следует уменьшить квоту Cloud Vision API на пользователя по сравнению с ее значением по умолчанию. Для этого:
Откройте страницу квот API Cloud Vision в Google Cloud Console. При появлении запроса выберите свой проект.
В разделе «Запросы» установите квоту «Запросов в минуту на пользователя» на что-то разумное для вашего приложения. Например, если ваше приложение предполагает загрузку изображения документа, чтобы получить его текст, маловероятно, что пользователь будет делать это чаще, чем раз в несколько секунд, поэтому квота 30-40, вероятно, будет безопасной.
Обратите внимание, что в этом контексте «запросы на пользователя» относятся к запросам с одного IP-адреса. Это может понадобиться, если вы ожидаете, что несколько пользователей будут одновременно использовать ваше приложение из-за NAT.
4. Вызовите облачные API, используя ключ Firebase ML API.
Наконец, в своем приложении настройте Firebase ML для использования нового ключа API.
Поскольку ключ Firebase ML API обеспечивает неавторизованный доступ к Cloud Vision API, важно сохранять конфиденциальность ключа, чтобы предотвратить несанкционированное использование и списание средств с вашего платежного аккаунта. Для этого вам следует воздержаться от включения вашего ключа API в двоичный файл вашего приложения. Вместо этого во время выполнения приложения убедитесь, что заведомо правильный пользователь вошел в систему, и только после этого получите ключ API с сервера.
Даже при соблюдении этих правил ключ API может быть скомпрометирован. Вы должны предпринять шаги, чтобы смягчить последствия скомпрометированного ключа, например уменьшить квоту API на пользователя, как описано выше, внедрить политики ротации ключей и выдать разные ключи разным группам пользователей.
Когда ваше приложение безопасно получит ключ API, когда вы хотите вызвать облачный API Firebase ML, укажите ключ:
Быстрый
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)
}
Цель-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];
}
Кроме того, вы должны следовать общим советам в разделе «Защита ключа API» .
Следующие шаги
См. контрольный список запуска для получения информации о подготовке вашего приложения к запуску при использовании других функций Firebase.