La API de Mail Admin Quarantine está diseñada para automatizaciones del servidor, como canalizaciones de seguridad y, también, integraciones de SIEM o SOAR. Estas automatizaciones se autentican con una cuenta de servicio de Google Cloud que usa la delegación de todo el dominio para actuar en nombre de un administrador de Google Workspace que tiene el privilegio de administrador requerido.
En esta página, se explica qué permisos de OAuth 2.0 requiere la API y cómo configurar una cuenta de servicio y obtener un token de acceso.
Alcances de OAuth 2.0
La API de Admin Quarantine usa los siguientes permisos de OAuth 2.0:
| Alcance | Significado |
|---|---|
https://www.googleapis.com/auth/gmail.admin.quarantine |
Consultar y administrar los mensajes en cuarentena Se requiere para liberar o rechazar mensajes, de forma individual o por lotes. |
https://www.googleapis.com/auth/gmail.admin.quarantine.readonly |
Ver los mensajes en cuarentena Es suficiente para enumerar, buscar y obtener mensajes, enumerar y obtener cuarentenas, y obtener el estado de las operaciones por lotes. |
En la siguiente tabla, se muestra qué permiso acepta cada método:
| Método | 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 |
✓ |
Sigue el principio de privilegio mínimo: solicita el permiso de solo lectura para las integraciones que solo supervisan la cuarentena.
Si una solicitud usa un token que no incluye un permiso aceptado, la API
devuelve un error 403 con el motivo ACCESS_TOKEN_SCOPE_INSUFFICIENT.
Crea una cuenta de servicio
- En la consola de Google Cloud, ve a IAM y administración > Cuentas de servicio y selecciona el proyecto de Google Cloud en el que habilitaste la API.
- Haz clic en Crear cuenta de servicio, ingresa un nombre como
quarantine-api-service-accounty haz clic en Crear y continuar. No es necesario otorgar roles de IAM a la cuenta de servicio. Haz clic en Listo. - Abre la cuenta de servicio y, en la pestaña Detalles, copia el
ID de cliente de OAuth 2. Es un número de 21 dígitos, por ejemplo,
109876543210987654321. Necesitarás este ID en la siguiente sección. - En la pestaña Claves, haz clic en Agregar clave > Crear clave nueva, selecciona JSON y haz clic en Crear. Almacena de forma segura el archivo de claves JSON que descargaste.
Para obtener más información, consulta Crea credenciales para una cuenta de servicio.
Autoriza la delegación de todo el dominio
Autoriza a la cuenta de servicio para que acceda a los permisos de la API de Admin Quarantine en tu cuenta de Google Workspace:
- Accede a la Consola del administrador de Google como administrador avanzado.
- Ve a Seguridad > Control de acceso y datos > Controles de API.
- En Delegación de todo el dominio, haz clic en Administrar la delegación de todo el dominio.
- Haz clic en Agregar nueva.
- En el campo ID de cliente, ingresa el ID de cliente de OAuth 2.0 de la cuenta de servicio. No ingreses la dirección de correo electrónico de la cuenta de servicio.
En el campo Permisos de OAuth, ingresa uno de los siguientes permisos:
- Para el acceso de lectura y escritura:
https://www.googleapis.com/auth/gmail.admin.quarantine - Para obtener acceso de solo lectura, usa
https://www.googleapis.com/auth/gmail.admin.quarantine.readonly.
- Para el acceso de lectura y escritura:
Haz clic en Autorizar.
Para obtener más información, consulta Controla el acceso a la API con la delegación de todo el dominio.
Cómo obtener un token de acceso
Para llamar a la API, la cuenta de servicio actúa en nombre de un administrador configurando
la reclamación subject (sub) de la solicitud de token en la dirección de correo electrónico
del administrador. El administrador debe tener el
privilegio de administrador requerido.
En el siguiente ejemplo de Python, se usa la biblioteca
google-auth para obtener un
token de acceso:
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
Envía el token en el encabezado Authorization de cada solicitud:
Authorization: Bearer ACCESS_TOKEN
Los tokens de acceso vencen después de una hora. Actualiza las credenciales antes de cada lote de solicitudes en lugar de almacenar en caché los tokens durante períodos prolongados.
Solucionar problemas de autorización
| Estado de HTTP | Motivo | Solución |
|---|---|---|
401 UNAUTHENTICATED |
Falta el encabezado Authorization, o bien el token tiene un formato incorrecto o venció. |
Obtén un nuevo token de acceso y, luego, inclúyelo como un token del portador. |
403 ACCESS_TOKEN_SCOPE_INSUFFICIENT |
El token no incluye un permiso que acepte el método. | Solicita el permiso https://www.googleapis.com/auth/gmail.admin.quarantine para los métodos de liberación y denegación, y asegúrate de que el permiso esté autorizado en la Consola del administrador. |
403 PERMISSION_DENIED |
El administrador suplantado no tiene un privilegio de cuarentena de administrador o no tiene acceso a la cuarentena que contiene el mensaje. | Otorga al administrador el privilegio Acceso a la cuarentena de administrador o Acceso a las cuarentenas restringidas. |
403 SERVICE_DISABLED o 404 NOT_FOUND en cada método |
La API no está habilitada en el proyecto de Cloud o el proyecto no está inscrito en el Programa de Versión preliminar para desarrolladores. | Habilita la API y confirma tu inscripción en el Programa de versión preliminar para desarrolladores de Google Workspace. |