Mail Admin Quarantine API предназначен для автоматизации на стороне сервера, например для конвейеров безопасности и интеграции с SIEM или SOAR. Эти автоматизации проходят аутентификацию с помощью сервисного аккаунта Google Cloud, который использует делегирование доступа к данным в домене, чтобы действовать от имени администратора Google Workspace, у которого есть необходимые права администратора.
На этой странице рассказывается, какие области действия OAuth 2.0 требуются для API, как настроить сервисный аккаунт и как получить токен доступа.
Области действия OAuth 2.0
Admin Quarantine API использует следующие области действия OAuth 2.0:
| Область действия | Значение |
|---|---|
https://www.googleapis.com/auth/gmail.admin.quarantine |
Просмотр сообщений, помещенных в карантин, и управление ими. Требуется для разрешения или запрета доставки сообщений по отдельности или пакетами. |
https://www.googleapis.com/auth/gmail.admin.quarantine.readonly |
Просмотр сообщений в карантине. Достаточно для просмотра, поиска и получения сообщений, просмотра и получения карантинов, а также получения статуса пакетных операций. |
В таблице ниже показано, какие области действия принимает каждый метод.
| Метод | gmail.admin.quarantine |
gmail.admin.quarantine.readonly |
|---|---|---|
customers.quarantinedMessages.list |
✓ | ✓ |
customers.quarantinedMessages.search |
✓ | ✓ |
customers.quarantinedMessages.get |
✓ | ✓ |
customers.quarantines.list |
✓ | ✓ |
customers.quarantines.get |
✓ | ✓ |
customers.operations.get |
✓ | ✓ |
customers.quarantinedMessages.release |
✓ | |
customers.quarantinedMessages.deny |
✓ | |
customers.quarantinedMessages.batchRelease |
✓ | |
customers.quarantinedMessages.batchDeny |
✓ |
Следуйте принципу минимальных привилегий: запрашивайте область действия только для чтения для интеграций, которые только отслеживают карантин.
Если в запросе используется токен, который не включает принятую область действия, API возвращает ошибку 403 с причиной ACCESS_TOKEN_SCOPE_INSUFFICIENT.
Как создать сервисный аккаунт
- В консоли Google Cloud выберите IAM & Admin (IAM и администрирование) > Service Accounts (Сервисные аккаунты) и выберите облачный проект Google Cloud, в котором вы включили API.
- Нажмите Создать сервисный аккаунт, введите название, например
quarantine-api-service-account, и нажмите Создать и продолжить. Предоставлять сервисному аккаунту роли IAM не нужно. Нажмите Готово. - Откройте сервисный аккаунт и на вкладке Details (Сведения) скопируйте OAuth 2 Client ID (Идентификатор клиента OAuth 2). Это 21-значное число, например
109876543210987654321. Он понадобится вам в следующем разделе. - На вкладке Keys (Ключи) нажмите Add key (Добавить ключ) > Create new key (Создать ключ), выберите JSON и нажмите Create (Создать). Храните скачанный файл ключа JSON в безопасном месте.
Подробнее о том, как создать учетные данные для сервисного аккаунта…
Как разрешить делегирование доступа к данным в домене
Авторизуйте сервисный аккаунт для доступа к областям Admin Quarantine API в аккаунте Google Workspace:
- Войдите в консоль администратора Google как суперадминистратор.
- Выберите Безопасность > Управление доступом и данными > Управление API.
- В разделе Делегирование доступа к данным в домене нажмите Настроить делегирование доступа к данным в домене.
- Нажмите Добавить.
- В поле Идентификатор клиента введите идентификатор клиента OAuth 2.0 сервисного аккаунта. Не указывайте адрес электронной почты сервисного аккаунта.
В поле Области действия OAuth введите одну из следующих областей действия:
- Для доступа на чтение и запись:
https://www.googleapis.com/auth/gmail.admin.quarantine. - Для доступа только для чтения:
https://www.googleapis.com/auth/gmail.admin.quarantine.readonly.
- Для доступа на чтение и запись:
Нажмите Подтвердить.
Подробнее о том, как управлять доступом к API, используя делегирование доступа к данным в домене…
Получите токен доступа
Чтобы вызвать API, сервисный аккаунт выдает себя за администратора, устанавливая утверждение subject (sub) запроса токена на адрес электронной почты администратора. У администратора должны быть необходимые права администратора.
В примере ниже показано, как получить токен доступа с помощью библиотеки google-auth на Python.
from google.oauth2 import service_account
import google.auth.transport.requests
SERVICE_ACCOUNT_FILE = 'service_account.json'
# An administrator with the Access Admin Quarantine privilege.
ADMIN_EMAIL = 'admin@example.com'
SCOPES = ['https://www.googleapis.com/auth/gmail.admin.quarantine']
credentials = service_account.Credentials.from_service_account_file(
SERVICE_ACCOUNT_FILE,
scopes=SCOPES,
subject=ADMIN_EMAIL,
)
credentials.refresh(google.auth.transport.requests.Request())
access_token = credentials.token
Отправьте токен в заголовке Authorization каждого запроса:
Authorization: Bearer ACCESS_TOKEN
Срок действия токенов доступа истекает через час. Обновляйте учетные данные перед каждым пакетом запросов, а не кешируйте токены на длительное время.
Устранение ошибок авторизации
| Статус HTTP | Причина | Разрешение |
|---|---|---|
401 UNAUTHENTICATED |
Заголовок Authorization отсутствует, или токен имеет неправильный формат или срок его действия истек. |
Получите новый токен доступа и включите его в качестве токена на предъявителя. |
403 ACCESS_TOKEN_SCOPE_INSUFFICIENT |
Токен не включает область действия, которую принимает метод. | Запросите область действия https://www.googleapis.com/auth/gmail.admin.quarantine для методов release и deny и убедитесь, что она авторизована в консоли администратора. |
403 PERMISSION_DENIED |
У администратора, от имени которого выполняется действие, нет прав на доступ к карантину, в котором находится письмо. | Предоставьте администратору право Доступ к административному карантину или Доступ к специальным карантинам. |
403 SERVICE_DISABLED или 404 NOT_FOUND для каждого метода |
API не включен в облачном проекте, или проект не зарегистрирован в программе предварительной версии для разработчиков. | Включите API и подтвердите участие в программе предварительной версии для разработчиков Google Workspace. |