При прямом вызове API из мобильного или веб-приложения (например, API, предоставляющие доступ к моделям генеративного ИИ), API уязвим для злоупотреблений со стороны неавторизованных клиентов. Для защиты таких API от злоупотреблений можно использовать Firebase App Check , чтобы убедиться, что все входящие вызовы API поступают из вашего приложения и с неподготовленного устройства.
Firebase AI Logic предоставляет прокси-шлюз, позволяющий интегрироваться с Firebase App Check и защищать API моделей генеративного ИИ, вызываемые вашими мобильными и веб-приложениями. Использование App Check с SDK Firebase AI Logic поддерживает все наши конфигурации:
Обеспечивает защиту обоих поставщиков "Gemini API": Gemini Developer API и Vertex AI Gemini API .
Защищает все поддерживаемые модели, как модели Gemini , так и модели Imagen .
App Check также поддерживает защиту от повторного воспроизведения , что означает, что токен App Check можно использовать только один раз.
Краткое описание принципа работы App Check
С помощью App Check устройства, на которых работает ваше приложение, используют поставщика аттестации приложений или устройств, который проверяет одно или оба из следующих условий:
- Запросы поступают из вашего подлинного приложения.
- Запросы поступают с подлинного, не подвергавшегося модификациям устройства.
Это подтверждение добавляется к каждому запросу, который ваше приложение отправляет с помощью Firebase AI Logic SDK. При включении App Check ) запросы от клиентов без действительного подтверждения будут отклонены, как и любые запросы, исходящие от приложения или платформы, которые вы не авторизовали.
При настройке App Check рекомендуется добавить защиту от повторного воспроизведения , благодаря чему токены App Check будут использоваться только один раз . Эта опция обеспечивает расширенную защиту по сравнению с базовой и позволяет установить соответствующий уровень защиты для вашего приложения и сценариев использования.
Подробную информацию об App Check , включая квоты и лимиты, можно найти в его документации.
Настройка App Check
В документации App Check содержится подробное описание поставщиков услуг аттестации, а также подробные инструкции по внедрению.
Выберите поставщика услуг по подтверждению подлинности и следуйте инструкциям по внедрению по следующим ссылкам:
- Платформы Apple : DeviceCheck или App Attest
- Android : Проверка целостности игрового процесса
- Веб-сайт : reCAPTCHA Enterprise
- Flutter : Поддерживает все перечисленные выше провайдеры по умолчанию.
Если вы используете более старые версии плагинов, см. примечание о специальном создании экземпляров ниже. (для Flutter и App Check . - Unity : Supports all the default providers above
Обратите внимание, что если ни один из этих поставщиков аттестации не удовлетворяет вашим потребностям, вы можете реализовать собственный поставщик , использующий либо сторонний поставщик аттестации, либо ваши собственные методы аттестации.
(Обязательно) Включите App Check перед тем, как добавить ваше приложение в общедоступную систему контроля версий, поделиться им или сделать его общедоступным.
(Рекомендуется) Усильте защиту, добавив защиту от повторного воспроизведения , что означает, что токен App Check можно использовать только один раз.
Для локальной разработки при включенной App Check ) настройте отладочный поставщик App Check таким образом, чтобы он обходил аттестацию, сохраняя при этом действие App Check . См. инструкции по настройке для вашей платформы: iOS+ | Android | Web | Flutter | Unity .
Чтобы просмотреть контент и код, относящиеся к вашему поставщику API Gemini , нажмите на него. |
Эта специальная инициализация требуется только в том случае, если ваше приложение использует плагин Flutter firebase_ai версии 3.11.0 или ниже (BoM версии 4.12.0 или ниже). Если ваше приложение использует более новую версию плагина, эта специальная инициализация не требуется.
Если вы включите проверку App Check , то в приложениях Flutter, использующих более старые версии плагинов, вам потребуется явно передавать App Check при создании экземпляра, следующим образом:
// ...
// During instantiation, enable usage of limited-use tokens
final ai = await FirebaseAI.googleAI(
// For Flutter plugin v3.11.0 or lower (BoM v4.12.0 or lower), pass in App Check explicitly.
appCheck: FirebaseAppCheck.instance,
useLimitedUseAppCheckTokens: true,
);
// ...
Усильте защиту, добавив защиту от повторного воспроизведения.
| Мы рекомендуем использовать последние версии SDK, но для включения защиты от повторного воспроизведения убедитесь, что вы используете как минимум одну из следующих версий: Платформы Apple v12.2.0+ | Android BoM v34.14.0+ ( App Check v19.1.0+) | Веб v12.14.0+ | Flutter v4.15.0+ ( App Check v4.10.0+) | Unity v13.12.0+ |
По умолчанию App Check использует токены сессии с настраиваемым временем жизни (TTL) от
Однако вы можете усилить защиту сверх базового уровня, включив защиту от повторного воспроизведения , которая использует токены ограниченного использования . При включении защиты от повторного воспроизведения происходит следующее:
App Check будет блокировать запросы к Firebase AI Logic , использующие токены сессии . Вместо этого App Check разрешит запрос к Firebase AI Logic только в том случае, если он использует недавно созданный токен ограниченного использования .
После проверки токена ограниченного использования он расходуется, так что его можно использовать только один раз, что предотвращает атаки повторного воспроизведения.
SDK App Check генерирует новый токен ограниченного использования для каждого запроса. Обратите внимание, что этот процесс может повлиять на ваши запросы, увеличивая задержку и иногда стоимость (в зависимости от вашего поставщика аттестации).
Настройте и обеспечьте защиту от повторного воспроизведения.
Чтобы просмотреть контент и код, относящиеся к вашему поставщику API Gemini , нажмите на него. |
Вот как настроить и обеспечить защиту от повторного воспроизведения:
Если вы еще этого не сделали, внедрите App Check и включите принудительное применение App Check для вашего приложения.
Разрешить использование токенов с ограниченным сроком действия.
В вашем приложении при создании экземпляра установите параметр
useLimitedUseAppCheckTokensвtrue:Быстрый
// ... // During instantiation, enable usage of limited-use tokens let ai = FirebaseAI.firebaseAI( backend: .googleAI(), useLimitedUseAppCheckTokens: true ) // ...Kotlin
// ... // During instantiation, enable usage of limited-use tokens val ai = Firebase.ai( backend = GenerativeBackend.googleAI(), useLimitedUseAppCheckTokens = true ) // ...Java
// ... // During instantiation, enable usage of limited-use tokens FirebaseAI ai = FirebaseAI.getInstance( /* backend: */ GenerativeBackend.googleAI(), /* useLimitedUseAppCheckTokens: */ true ); // ...Web
// ... // During instantiation, enable usage of limited-use tokens const ai = getAI(firebaseApp, { backend: new GoogleAIBackend(), useLimitedUseAppCheckTokens: true }); // ...Dart
// ... // During instantiation, enable usage of limited-use tokens final ai = await FirebaseAI.googleAI( useLimitedUseAppCheckTokens: true, ); // ...Единство
// ... // During instantiation, enable usage of limited-use tokens var ai = FirebaseAI.GetInstance( useLimitedUseAppCheckTokens: true ); // ...Внедрить защиту от повторного воспроизведения.
В коде вашего приложения убедитесь, что включено использование токенов ограниченного действия (см. предыдущий шаг).
В консоли Firebase перейдите в раздел Безопасность > Проверка приложений .
Разверните представление метрик для Firebase AI Logic .
Убедитесь, что включена базовая защита , затем нажмите «Продолжить» .
Для защиты от повторного воспроизведения выберите либо «Неприменимо» (только мониторинг) , либо «Применимо» .
Принимая решение о том, когда следует применять защиту от повторного воспроизведения, следует учитывать следующие факторы:
Рекомендуется отслеживать запросы, если значительное число ваших пользователей, вероятно, используют более ранние версии вашего приложения без включенной защиты от повторного воспроизведения. Если вы немедленно включите защиту от повторного воспроизведения, запросы от таких пользователей будут заблокированы.
Вы можете отслеживать, в частности, метрику «Неподтвержденный: повторно используемый токен» , которая показывает количество запросов, в которых токен уже использовался в предыдущем запросе. Отслеживайте эту метрику в консоли Firebase (перейдите в раздел «Безопасность» > «Проверка приложений» > вкладка «API» ).
Если значительная часть недавних запросов относится к этой категории, вы можете избежать неудобств для пользователей и рассмотреть возможность отложить внедрение защиты от повторного воспроизведения до тех пор, пока больше пользователей не обновятся до версии вашего приложения, использующей токены ограниченного использования.
Разберитесь, как Firebase AI Logic интегрируется с App Check
Для использования SDK Firebase AI Logic необходимо включить API Firebase AI Logic ( firebasevertexai.googleapis.com ) в вашем проекте Firebase. Это связано с тем, что запросы, отправляемые SDK Firebase AI Logic, сначала направляются на сервер Firebase AI Logic , который выступает в качестве прокси-шлюза, где происходит проверка Firebase App Check прежде чем запрос будет разрешен к бэкэнду выбранного вами поставщика « Gemini API » и API для доступа к моделям Gemini и Imagen .
(Необязательно) Принудительная App Check без поставщика аттестации для производственной среды (только для отладочного поставщика)
Вы можете использовать App Check для AI Logic без регистрации вашего приложения у поставщика аттестации в производственной среде. Такая настройка позволяет использовать отладочный поставщик App Check для более простого начала работы с AI Logic, одновременно защищая API Gemini .
Проверьте, включена ли уже App Check для AI Logic .
В консоли Firebase перейдите в раздел Безопасность > Проверка приложений > вкладка API .
Найдите строку с параметром Firebase AI Logic . Если в ней указано
Unenforced, то продолжайте выполнение остальных инструкций.
Используйте REST API App Check для принудительной App Check в Firebase AI Logic .
Отправьте запрос к конечной точке
projects.services.patch.Укажите следующие параметры запроса:
PROJECT_NUMBER : Номер вашего проекта Firebase.
Найдите этот идентификатор проекта в> Вкладка «Общие» в консоли Firebase . SERVICE_ID :
firebasevertexai.googleapis.com
Этот идентификатор является официальным названием сервиса Firebase AI Logic API и действителен независимо от того, обращаетесь ли вы к Vertex AI Gemini API или к Gemini Developer API .updateMask:enforcementMode
В теле запроса укажите следующее:
-
"enforcementMode": "ENFORCED"
-
В условиях обязательного использования App Check для локальной разработки необходимо настроить отладочный поставщик App Check таким образом, чтобы он обходил аттестацию, сохраняя при этом обязательное использование App Check .
Подробную информацию о настройке поставщика отладки см. в инструкциях для вашей платформы: iOS+ | Android | Web | Flutter | Unity .