Ограничить запросы только для аутентифицированных пользователей

Вы можете включить режим аутентифицированных пользователей для проекта Firebase. Когда это правило применяется, все запросы Gemini API через Firebase AI Logic должны поступать от аутентифицированных пользователей вашего приложения. В частности, конечный пользователь вашего приложения должен пройти аутентификацию с помощью Firebase Authentication, прежде чем отправлять запрос к Firebase AI Logic из вашего приложения. Если конечный пользователь не аутентифицирован, запрос блокируется.

Если запрос заблокирован, возвращается ошибка 401: unauthenticated.

Важные примечания

При использовании режима аутентифицированных пользователей необходимо учитывать следующее:

Когда включен режим аутентифицированных пользователей

Если включен режим аутентифицированных пользователей, обратите внимание на следующее:

  • Это общепроектная настройка для Firebase AI Logic.

    • Оно применяется ко всем приложениям, зарегистрированным в проекте.
    • Оно применяется только к проекту, в котором оно действует.
  • Этот параметр блокирует все запросы через Firebase AI Logic, которые не отправляют учетные данные Firebase Authentication.

    • Пользователь должен пройти аутентификацию через Firebase Authentication до отправки запроса в Firebase AI Logic.
    • Эта настройка применяется ко всем запросам, отправляемым через Firebase AI Logic как в Gemini Developer API, так и в Agent Platform Gemini API (formerly Vertex AI).
    • Эта настройка применяется ко всем запросам, в которых используются шаблоны запросов к серверу.
    • Эту настройку нельзя применить к отдельным пользователям, API или шаблонам.
  • Эта настройка не блокирует запросы Gemini API в вашем проекте, которые отправляются не через Firebase AI Logic.

  • Если вы используете гибридную модель или модель на устройстве:

    • Этот параметр блокирует запросы к облачной модели, если пользователь не аутентифицирован.
    • Этот параметр не блокирует запросы к модели на устройстве независимо от статуса аутентификации пользователя.
  • Если вы используете Gemini Live API:

    • Этот параметр блокирует использование Gemini Live API для веб-приложений при использовании Firebase AI Logic, даже для аутентифицированных пользователей. Это относится и к веб-приложениям, в которых используется Firebase JS SDK или Flutter web.
  • Если вы используете REST API Firebase AI Logic:

    • Этот параметр блокирует запросы на инференс, которые не отправляют учетные данные Firebase Authentication. Это относится к запросам шаблонов подсказок сервера, таких как templateGenerateContent или templateStreamGenerateContent.
    • Этот параметр не блокирует запросы уровня управления (например, для управления шаблонами и конфигурациями), поскольку они защищены IAM.
  • Эта настройка не блокирует запросы к countTokens (Count Tokens API).

Перед включением режима аутентифицированных пользователей

Прежде чем включить режим аутентификации пользователей, обратите внимание на следующее:

  • Если у вас есть версии приложения, в которых не используется Firebase Authentication:

    • Эта настройка заблокирует запросы через Firebase AI Logic от существующих версий приложений.
    • Прежде чем включить режим аутентификации пользователей, убедитесь, что все активные клиенты обновлены и используют Firebase Authentication.
  • Более старые версии плагина Flutter требуют специального создания экземпляра для отправки учетных данных Firebase Authentication с запросами.

    • Если в вашем приложении используется плагин Flutter firebase_ai версии 3.11.0 или ниже (BoM версии 4.12.0 или ниже) и при создании экземпляра не передается Authentication, эта настройка будет блокировать запросы через Firebase AI Logic, даже если они поступают от аутентифицированных пользователей.
    • Прежде чем принудительно включить режим аутентифицированных пользователей, убедитесь, что все активные клиенты Flutter обновлены до более новой версии плагина.

Настроить Firebase Authentication

В документации по Firebase Authentication вы найдете описания и инструкции по реализации для поддерживаемых поставщиков аутентификации, в том числе с использованием паролей, номеров телефонов, популярных поставщиков федеративной идентификации (таких как Google, Facebook и GitHub) и т. д.

После того как вы реализуете Firebase Authentication в своем приложении, оно будет автоматически отправлять учетные данные Firebase Authentication для аутентифицированного пользователя в каждом запросе к Firebase AI Logic.

Обратите внимание на следующее:

  • Собственная аутентификация. Вам нужно получить подписанный токен аутентификации, чтобы отправить его вместе с запросом в Firebase AI Logic. Подробнее о специальной аутентификации…

  • Анонимная аутентификация или аутентификация по электронной почте и паролю. Пользователи, прошедшие такую аутентификацию, считаются аутентифицированными, поэтому их запросы к Firebase AI Logic не блокируются.

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

Как управлять настройкой режима аутентифицированных пользователей

Управлять настройками режима аутентифицированных пользователей можно в консоли Firebase.

Необходимые разрешения и роли IAM

Для управления настройками режима аутентифицированных пользователей требуется разрешение firebasevertexai.configs.update, которое по умолчанию включено в следующие роли IAM: владелец, редактор, администратор Firebase и администратор Firebase AI Logic.

Принудительно включить режим аутентифицированных пользователей

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

  1. Если вы ещё этого не сделали, ознакомьтесь с важными примечаниями для режима аутентифицированных пользователей, приведенными выше.

  2. Если вы ещё не сделали этого, настройте Firebase Authentication в своем приложении, как описано выше.

  3. Принудительное включение режима аутентификации пользователей:

    1. В консоли Firebase выберите AI Services (Сервисы ИИ) > AI Logic (Логика ИИ) > вкладка Settings (Настройки).

    2. В разделе Режим аутентифицированных пользователей установите переключатель Принудительно включить режим аутентифицированных пользователей в положение Принудительно.

    3. В диалоговом окне подтверждения нажмите Подтвердить.

Как отключить принудительное применение режима аутентифицированных пользователей

Если вы отключите принудительное применение режима аутентифицированных пользователей, обратите внимание на следующее:

  • Запросы через Firebase AI Logic, которые не отправляют учетные данные Firebase Authentication, будут разрешены.
  • Это настройка Firebase AI Logic на уровне проекта.

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

  1. В консоли Firebase выберите AI Services (Сервисы ИИ) > AI Logic (Логика ИИ) > вкладка Settings (Настройки).

  2. В разделе Режим аутентифицированных пользователей отключите параметр Принудительно включить режим аутентифицированных пользователей.

  3. В диалоговом окне подтверждения нажмите Подтвердить.