En esta página se muestran ejemplos de los registros de auditoría que se generan cuando usas Federación de Identidades de Workforce. Con Workforce Identity Federation, puedes permitir que identidades de terceros accedan aTrusted Cloud by S3NS recursos sin usar una clave de cuenta de servicio.
Para obtener más información sobre cómo habilitar y ver los registros de auditoría, consulta Registro de auditoría de IAM.
La gestión de identidades y accesos puede generar registros de auditoría cuando creas y gestionas grupos de usuarios. Para habilitar los registros de auditoría al gestionar grupos de usuarios, debes habilitar los registros de auditoría de actividad de acceso a datos para la siguiente API:
- API de Gestión de Identidades y Accesos (IAM) (habilita el tipo de registro "Admin Read")
Para configurar los registros de auditoría del proceso de intercambio de tokens o del inicio de sesión en la consola (federado), también debes habilitar los registros de auditoría de la actividad de acceso a datos de la siguiente API:Trusted Cloud
- API Security Token Service (habilita el tipo de registro "Lectura de administrador")
Registros para crear un grupo de Workforce
En el siguiente ejemplo se muestra una entrada de registro para crear un grupo de trabajadores. En este ejemplo, el usuario sam@example.com
ha creado un grupo de usuarios con el ID my-pool
en la organización con el ID 123456789012
.
{ "logName": "organizations/123456789012/logs/cloudaudit.googleapis.com%2Factivity", "protoPayload": { "@type": "type.googleapis.com/google.cloud.audit.AuditLog", "authenticationInfo": { "principalEmail": "sam@example.com", }, "methodName": "google.iam.admin.v1.WorkforcePools.CreateWorkforcePool", "resourceName": "locations/global/workforcePools/my-pool", "serviceName": "iam.googleapis.com", "request": { "@type": "type.googleapis.com/google.iam.admin.v1.CreateWorkforcePoolRequest", "workforcePool": { "parent": "organizations/123456789012" }, "workforcePoolId": "my-pool" } }, "resource": { "type": "audited_resource" } }
Registros para intercambiar un token de IdP por un token federado
Una vez que hayas configurado tu grupo de identidades de Workforce y tu proveedor de grupos de identidades de Workforce, podrás crear un token para tu proveedor de identidades e intercambiarlo por un token federado.
Después de habilitar los registros de auditoría de Cloud para la actividad de acceso a datos, Gestión de identidades y accesos genera una entrada de registro de auditoría cada vez que una entidad intercambia un token. La entrada de registro incluye los siguientes campos:
protoPayload.authenticationInfo.principalSubject
: el asunto del token de proveedor de identidades.- En el caso de los proveedores de identidades de OIDC, este campo contiene el valor de la reclamación
sub
o de asunto del token de OIDC. - En el caso de los proveedores de identidades SAML, este campo contiene el valor del subatributo
NameID
del atributoSubject
en la aserción SAML.
- En el caso de los proveedores de identidades de OIDC, este campo contiene el valor de la reclamación
protoPayload.metadata.mapped_principal
: el asunto del token, que usa la sintaxis de IAM para identificar la entidad principal:principal://iam.googleapis.com/locations/global/workforcePools/POOL_ID/subject/IDENTIFIER
protoPayload.resourceName
: el proveedor del grupo de usuarios de la organización al que está asociado el token.
Intercambio de tokens correcto
En el siguiente ejemplo se muestra una entrada de registro de auditoría de una solicitud para intercambiar un token. En este ejemplo, se intercambia un token de OIDC por un token federado:
{ "logName": "organizations/123456789012/logs/cloudaudit.googleapis.com%2Fdata_access", "protoPayload": { "@type": "type.googleapis.com/google.cloud.audit.AuditLog", "authenticationInfo": { "principalSubject": "b6112abb-5791-4507-adb5-7e8cc306eb2e" }, "metadata": { "mapped_principal": "principal://iam.googleapis.com/locations/global/workforcePools/oidc-pool/subject/a1234bcd-5678-9012-efa3-4b5cd678ef9a" }, "methodName": "google.identity.sts.v1.SecurityTokenService.ExchangeToken", "resourceName": "locations/global/workforcePools/oidc-pool/providers/oidc-provider", "serviceName": "sts.googleapis.com", "request": { "@type": "type.googleapis.com/google.identity.sts.v1.ExchangeTokenRequest", "audience": "//iam.googleapis.com/locations/global/workforcePools/oidc-pool/providers/oidc-provider", "grantType": "urn:ietf:params:oauth:grant-type:token-exchange", "requestedTokenType": "urn:ietf:params:oauth:token-type:access_token", "subjectTokenType": "urn:ietf:params:oauth:token-type:id_token" } }, "resource": { "type": "audited_resource" } }
Error al intercambiar tokens: demasiados grupos
En el siguiente ejemplo de registro se describe un intercambio de tokens que ha fallado porque el número de reclamaciones de grupos ha superado el máximo de 400.
Para registrar los atributos que recibe Workforce Identity Federation, debes habilitar el registro de auditoría detallado al crear tu proveedor de grupos de Workforce Identity.
Para saber cómo solucionar errores de asignación de atributos con registros de auditoría detallados, consulta Errores generales de asignación de atributos.
En el ejemplo siguiente, mappedAttributes
contiene atributos que se han recibido del IdP, incluida una lista de grupos. En este caso, el número de grupos ha superado el límite de Workforce Identity Federation.
{ "protoPayload": { "@type": "type.googleapis.com/google.cloud.audit.AuditLog", "status": { "code": 3, "message": "The current count of 800 mapped attribute google.groups exceeds the 400 count limit. Either modify your attribute mapping or the incoming assertion to produce a mapped attribute that is less than 400." }, "authenticationInfo": { "principalSubject": "3Kn-kJQal4N-WXVjxMqcOF1tQcCdBliu97lV-2P-Khc" }, "requestMetadata": { "callerIp": "2601:647:4680:9140:9d68:88c9:cab9:a908", "callerSuppliedUserAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/135.0.0.0 Safari/537.36", "requestAttributes": { "time": "2025-04-09T18:32:34.979311Z", "auth": {} }, "destinationAttributes": {} }, "serviceName": "sts.googleapis.com", "methodName": "google.identity.sts.SecurityTokenService.WebSignIn", "authorizationInfo": [ { "permission": "sts.identityProviders.checkLogging", "granted": false, "permissionType": "ADMIN_READ" } ], "resourceName": "locations/global/workforcePools/my-pool/providers/my-provider", "request": { "@type": "type.googleapis.com/google.identity.sts.SecurityTokenService.WebSignInRequest", "provider": "//iam.googleapis.com/locations/global/workforcePools/my-pool/providers/my-provider", "host": "auth-staging.corp.cloud.google" }, "metadata": { "mappedAttributes": { "google.subject": "3Nk-kJQal4N-WXVjxMqcOF1tQcCdBliu97lV-2P-Khc", "google.providerId": "my-provider-id", "google.groups": "[group-claim-1, group-claim-2, ..., group-claim-800]" } } }, "insertId": "-llnhbmck3a", "resource": { "type": "audited_resource", "labels": { "service": "sts.googleapis.com", "method": "google.identity.sts.SecurityTokenService.WebSignIn" } }, "timestamp": "2025-04-09T18:32:34.208412Z", "severity": "ERROR", "logName": "organizations/123456789012/logs/cloudaudit.googleapis.com%2Fdata_access", "receiveTimestamp": "2025-04-09T18:32:35.059811619Z" }
Registros de aserciones SAML firmadas y cifradas
En esta sección se describen las entradas de registro de Cloud Audit Logs que crea Security Token Service cuando intenta verificar aserciones SAML firmadas o descifrar aserciones cifradas que se envían desde tu IdP.
En el caso de la federación de identidades de Workforce, la entrada de registro pertinente tiene un aspecto similar al siguiente:
"keyInfo": [ { "use": "verify" "fingerprint": "3C:B2:47:F8:A5:9A:8A:52:BD:1C:BC:96:B5:45:C1:8D:A7:F1:73:2D" }, { "use": "decrypt" "resourceName": "//iam.googleapis.com/locations/global/workforcePools/WORKFORCE_POOL_NAME/providers/PROVIDER_NAME/keys/KEY_NAME" } ]
Esta salida incluye los siguientes valores:
fingerprint
: la representación hexadecimal del hash SHA-256 del certificado X.509 que se ha usado para verificar la firma de la credencial SAML. El certificado X.509 se extrae de los metadatos XML de SAML que se adjuntan al proveedor de identidades de la fuerza de trabajo.resourceName
: el nombre del recurso de la clave del proveedor de identidades de la fuerza de trabajo que se ha usado para descifrar la aserción SAML cifrada. Este campo solo está presente si la federación de identidades recibe una respuesta SAML cifrada de tu proveedor de identidades.
Registros de llamadas a Trusted Cloud APIs con el token federado
Después de intercambiar el token del IdP por un token federado, puedes usar el token federado para llamar a las APIs Trusted Cloud . Algunos de los métodos que llames pueden generar registros de auditoría.
En el ejemplo siguiente se muestra una entrada de registro de auditoría de una solicitud para enumerar los segmentos de Cloud Storage de un proyecto mediante un token federado.
{ "logName": "projects/my-project/logs/cloudaudit.googleapis.com%2Fdata_access", "protoPayload": { "@type": "type.googleapis.com/google.cloud.audit.AuditLog", "authenticationInfo": { "principalSubject": "principal://iam.googleapis.com/locations/global/workforcePools/oidc-pool/subject/kalani@altostrat.com" }, "methodName": "storage.buckets.list", "serviceName": "storage.googleapis.com", }, "resource": { "type": "gcs_bucket" } }
Registros de inicio de sesión en la consola (federado) de Trusted Cloud
Una vez que hayas configurado tus grupos de identidades de Workforce y sus IdPs, los usuarios podrán iniciar sesión en Trusted Cloud mediante la consola (federada).
Registros de inicios de sesión correctos
En esta sección se proporciona un ejemplo de entrada de Registros de auditoría de Cloud que se registra como resultado de un inicio de sesión correcto. En este ejemplo, el usuario user@example.com
inicia sesión con un proveedor locations/global/workforcePools/my-pool/providers/my-provider
. En este caso, se genera la siguiente entrada de Registros de auditoría de Cloud:
{
"logName": "organizations/my-organization-id/logs/cloudaudit.googleapis.com%2Fdata_access",
"protoPayload": {
"@type": "type.googleapis.com/google.cloud.audit.AuditLog",
"authenticationInfo": {
"principalSubject": "user@example.com",
},
"serviceName": "sts.googleapis.com",
"methodName": "google.identity.sts.SecurityTokenService.WebSignIn",
"resourceName": "locations/global/workforcePools/my-pool/providers/my-provider",
"request": {
"@type": "type.googleapis.com/google.identity.sts.SecurityTokenService.WebSignInRequest",
"provider": "//iam.googleapis.com/locations/global/workforcePools/my-pool/providers/my-provider",
"continueUrl": "https://console.cloud.google",
"host": "http://auth.cloud.google",
},
"metadata": {
"mappedPrincipal": "principal://iam.googleapis.com/locations/global/workforcePools/my-pool/subject/user@example.com",
}
},
"resource": {
"type": "audited_resource",
"labels": {
"service": "sts.googleapis.com",
"method": "google.identity.sts.SecurityTokenService.WebSignIn",
}
},
}
La entrada de Cloud Audit Logs de los proveedores de SAML también puede contener información sobre la clave de firma en el campo de metadatos.
{
"metadata": {
"mappedPrincipal": "principal://iam.googleapis.com/locations/global/workforcePools/my-pool/subject/user@example.com",
"keyInfo": [
{
"use": "verify",
"fingerprint": "AE:CK:LM:EF:LK:OG:EH:IJ:KN:AL:OM:AD:NO",
}
],
}
}
Registros de inicios de sesión fallidos
En esta sección se proporciona un ejemplo de entrada de Registros de auditoría de Cloud que se registra como resultado de un inicio de sesión fallido. En este ejemplo, el usuario user@example.com
intenta iniciar sesión con un proveedor locations/global/workforcePools/my-pool/providers/my-provider
, pero se le deniega el acceso porque no se cumple una condición de atributo. En este caso, se genera la siguiente entrada de Registros de auditoría de Cloud:
{
"logName": "organizations/my-organization-id/logs/cloudaudit.googleapis.com%2Fdata_access",
"protoPayload": {
"@type": "type.googleapis.com/google.cloud.audit.AuditLog",
"authenticationInfo": {
"principalSubject": "user@example.com",
},
"status": {
"code": 3,
"message": "The given credential is rejected by the attribute condition.",
},
"serviceName": "sts.googleapis.com",
"methodName": "google.identity.sts.SecurityTokenService.WebSignIn",
"resourceName": "locations/global/workforcePools/my-pool/subject/user@example.com",
"request": {
"@type": "type.googleapis.com/google.identity.sts.SecurityTokenService.WebSignInRequest",
"provider": "//iam.googleapis.com/locations/global/workforcePools/my-pool/providers/my-provider",
"host": "http://auth.cloud.google",
},
"metadata": {
"mappedPrincipal": "principal://iam.googleapis.com/locations/global/workforcePools/my-pool/subject/user@example.com",
}
},
"resource": {
"type": "audited_resource",
"labels": {
"service": "sts.googleapis.com",
"method": "google.identity.sts.SecurityTokenService.WebSignIn",
}
},
}
Registros de cierre de sesión
En esta sección se proporciona un ejemplo de entrada de Registros de auditoría de Cloud que se registra como resultado de un evento de cierre de sesión. En este ejemplo, el usuario user@example.com
, que ha iniciado sesión con un proveedor locations/global/workforcePools/my-pool/providers/my-provider
, inicia el cierre de sesión. En este caso, se genera la siguiente entrada de Registros de auditoría de Cloud:
{
"logName": "organizations/my-organization-id/logs/cloudaudit.googleapis.com%2Fdata_access",
"protoPayload": {
"@type": "type.googleapis.com/google.cloud.audit.AuditLog",
"authenticationInfo": {
"principalSubject": "user@example.com",
},
"serviceName": "sts.googleapis.com",
"methodName": "google.identity.sts.SecurityTokenService.WebSignOut",
"resourceName": "locations/global/workforcePools/my-pool/providers/my-provider",
"request": {
"@type": "type.googleapis.com/google.identity.sts.SecurityTokenService.WebSignOutRequest",
"provider": "//iam.googleapis.com/locations/global/workforcePools/my-pool/providers/my-provider",
"host": "http://auth.cloud.google"
},
"metadata": {
"mappedPrincipal": "principal://iam.googleapis.com/locations/global/workforcePools/my-pool/subject/user@example.com",
}
},
"resource": {
"type": "audited_resource",
"labels": {
"service": "sts.googleapis.com",
"method": "google.identity.sts.SecurityTokenService.WebSignOut"
}
},
}
Registros de inicio de sesión con el flujo de OAuth
Una vez que hayas configurado tu grupo de identidades de empleados y tu proveedor de identidades de empleados, podrás usar los recursos de Trusted Cloud mediante el flujo de OAuth.
Después de habilitar los registros de auditoría de Cloud para la actividad de los registros de auditoría de acceso a datos, Gestión de identidades y accesos genera una entrada de registro de auditoría cada vez que una entidad usa el flujo de OAuth para iniciar sesión. La entrada de registro incluye los siguientes campos:
protoPayload.authenticationInfo.principalSubject
: el asunto del token de proveedor de identidades.- En el caso de los proveedores de identidades de OIDC, este campo contiene el valor de la reclamación
sub
o de asunto del token de OIDC. - En el caso de los proveedores de identidades SAML, este campo contiene el valor del subatributo
NameID
del atributoSubject
en la aserción SAML.
- En el caso de los proveedores de identidades de OIDC, este campo contiene el valor de la reclamación
protoPayload.metadata.mapped_principal
: el asunto del token, que usa la sintaxis de IAM para identificar la entidad principal:principal://iam.googleapis.com/locations/global/workforcePools/POOL_ID/subject/IDENTIFIER
protoPayload.resourceName
: el proveedor del grupo de usuarios de la organización al que está asociado el token.
En el siguiente ejemplo se muestra una entrada de registro de auditoría de una solicitud para intercambiar un token. En este ejemplo, la entidad principal se federa mediante un proveedor de OIDC:
{ "logName": "organizations/123456789012/logs/cloudaudit.googleapis.com%2Fdata_access", "protoPayload": { "@type": "type.googleapis.com/google.cloud.audit.AuditLog", "authenticationInfo": { "principalSubject": "b6112abb-5791-4507-adb5-7e8cc306eb2e" }, "metadata": { "mapped_principal": "principal://iam.googleapis.com/locations/global/workforcePools/POOL_ID/subject/IDENTIFIER" }, "methodName": "google.identity.sts.v1.SecurityTokenService.ExchangeOauthToken", "resourceName": "locations/global/workforcePools/POOL_ID/providers/WORKFORCE_PROVIDER_ID", "serviceName": "sts.googleapis.com", "request": { "@type": "type.googleapis.com/google.identity.sts.v1.ExchangeOauthTokenRequest", "grantType": "authorization_code", } }, "resource": { "type": "audited_resource" } }
Siguientes pasos
- Configura y consulta los registros de auditoría de gestión de identidades y accesos.
- Consulta más información sobre los registros de auditoría de Cloud.
- Configura Workforce Identity Federation con grupos de identidades de Workforce.