Questa pagina mostra esempi di audit log generati quando utilizzi la federazione delle identità per la forza lavoro. Con la federazione delle identità della forza lavoro, puoi consentire alle identità di terze parti di accedere alle risorseGoogle Cloud senza utilizzare una chiave del account di servizio.
Per saperne di più sull'attivazione e la visualizzazione degli audit log, consulta Audit logging IAM.
IAM può generare audit log quando crei e gestisci i pool di forza lavoro. Per attivare i log di controllo durante la gestione dei pool di forza lavoro, devi attivare i log di controllo per l'attività di accesso ai dati per la seguente API:
- API Identity and Access Management (IAM) (attiva il tipo di log "Admin Read")
Per configurare gli audit log per il processo di scambio di token o l'accesso (federato) alla consoleGoogle Cloud , devi anche attivare gli audit log per l'attività di accesso ai dati per le seguenti API:
- Servizio token di sicurezza (abilita il tipo di log "Lettura amministratore")
- API Cloud OAuth (attiva il tipo di log "Lettura amministratore")
Log per la creazione di un pool di forza lavoro
Il seguente esempio mostra una voce di log per la creazione di un pool di forza lavoro. In questo
esempio, l'utente sam@example.com ha creato un pool di forza lavoro con l'ID
my-pool nell'organizzazione con l'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" } }
Log per lo scambio di un token IdP con un token federato
Dopo aver configurato il pool di identità della forza lavoro e il provider del pool di identità della forza lavoro, puoi creare un token per il provider di identità (IdP) e scambiarlo con un token federato.
Dopo aver attivato Cloud Audit Logs per l'attività di accesso ai dati, IAM genera una voce di log di controllo ogni volta che un'entità scambia un token. La voce di log include i seguenti campi:
protoPayload.authenticationInfo.principalSubject: l'oggetto del token IdP.- Per i provider di identità OIDC, questo campo contiene il valore dell'attestazione
subo soggetto del token OIDC. - Per gli IdP SAML, questo campo contiene il valore dell'attributo secondario
NameIDdell'attributoSubjectnell'asserzione SAML.
- Per i provider di identità OIDC, questo campo contiene il valore dell'attestazione
protoPayload.metadata.mapped_principal: Il soggetto del token, utilizzando la sintassi IAM per identificare l'entità:principal://iam.googleapis.com/locations/global/workforcePools/POOL_ID/subject/IDENTIFIER
protoPayload.resourceName: il provider del pool di forza lavoro a cui è associato il token.
Scambio di token riuscito con Security Token Service
L'esempio seguente mostra una voce di audit log per una richiesta di scambio di un token utilizzando Security Token Service (sts.googleapis.com). In questo esempio, un token OIDC viene scambiato con un token federato:
{ "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.SecurityTokenService.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" } }
Scambio di token non riuscito: troppi gruppi
Il seguente log di esempio descrive uno scambio di token non riuscito perché il numero di gruppi ha superato il massimo di 400.
Per registrare gli attributi ricevuti dalla federazione delle identità per la forza lavoro, devi attivare la registrazione di controllo dettagliata quando crei il provider del pool di identità per la forza lavoro.
Per scoprire come risolvere i problemi di mappatura degli attributi con la registrazione dettagliata degli audit, vedi Errori generali di mappatura degli attributi.
Nell'esempio seguente, mappedAttributes contiene gli attributi ricevuti
dall'IdP, incluso un elenco di gruppi. In questo caso, il numero di
gruppi ha superato il limite della federazione delle identità per la forza lavoro.
{
"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"
}
Log per le asserzioni SAML firmate e criptate
Questa sezione descrive le voci di log di Cloud Audit Logs che Security Token Service crea quando tenta di verificare le asserzioni SAML firmate o di decriptare le asserzioni criptate inviate dal tuo IdP.
Per la federazione delle identità per la forza lavoro, la voce di log pertinente è simile alla seguente:
"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"
}
]
Questo output include i seguenti valori:
fingerprint: la rappresentazione esadecimale dell'hash SHA-256 del certificato X.509 utilizzato per verificare la firma sulla credenziale SAML. Il certificato X.509 viene estratto dai metadati XML SAML allegati al provider del pool di identità della forza lavoro.resourceName: il nome della risorsa della chiave del provider del pool di identità del personale che è stata utilizzata per decriptare l'asserzione SAML criptata. Questo campo è presente solo se la federazione di identità riceve una risposta SAML criptata dal tuo IdP.
Log per la chiamata delle API Google Cloud con il token federato
Dopo aver scambiato il token del provider di identità con un token federato, puoi utilizzare il token federato per chiamare le Google Cloud API. Alcuni dei metodi che chiami potrebbero generare audit log.
L'esempio seguente mostra una voce di log di controllo per una richiesta di elencare i bucket Cloud Storage in un progetto utilizzando un token federato.
{ "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" } }
Log per l'accesso alla console (federato) Google Cloud
Dopo aver configurato i pool di identità per la forza lavoro e i relativi IdP, gli utenti possono accedere a Google Cloud utilizzando la console (federata).
Log per l'accesso riuscito
Questa sezione fornisce un esempio di voce di Cloud Audit Logs registrata in seguito
a un accesso riuscito. In questo esempio, l'utente user@example.com accede
utilizzando un provider
locations/global/workforcePools/my-pool/providers/my-provider. In questo caso,
viene generata la seguente voce di Cloud Audit Logs:
{
"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 voce di Cloud Audit Logs per i provider SAML può contenere anche informazioni sulla chiave di firma nel campo dei metadati.
{
"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",
}
],
}
}Log per l'accesso non riuscito
Questa sezione fornisce un esempio di voce di Cloud Audit Logs registrata in seguito a un tentativo di accesso non riuscito. In questo esempio, l'utente user@example.com tenta di
accedere utilizzando un provider
locations/global/workforcePools/my-pool/providers/my-provider, ma l'accesso
viene negato perché una condizione dell'attributo non è soddisfatta. In questo caso, viene generata la seguente voce di Cloud Audit Logs:
{
"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",
}
},
}Log per l'uscita
Questa sezione fornisce un esempio di voce di Cloud Audit Logs registrata in seguito a un evento di disconnessione. In questo esempio, l'utente user@example.com, che ha eseguito l'accesso utilizzando un provider locations/global/workforcePools/my-pool/providers/my-provider, avvia una disconnessione. In questo caso, viene generata la seguente voce di Cloud Audit Logs:
{
"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"
}
},
}Log per l'accesso con il flusso OAuth
Dopo aver configurato il pool di identità della forza lavoro e il provider del pool di identità della forza lavoro, puoi accedere alle risorse Google Cloud utilizzando il flusso OAuth.
Dopo aver attivato Cloud Audit Logs per l'attività di audit log di accesso ai dati, IAM genera una voce di log ogni volta che un'entità utilizza il flusso OAuth per accedere. La voce di log include i seguenti campi:
protoPayload.authenticationInfo.principalSubject: l'oggetto del token IdP.- Per i provider di identità OIDC, questo campo contiene il valore dell'attestazione
subo soggetto del token OIDC. - Per gli IdP SAML, questo campo contiene il valore dell'attributo secondario
NameIDdell'attributoSubjectnell'asserzione SAML.
- Per i provider di identità OIDC, questo campo contiene il valore dell'attestazione
protoPayload.metadata.mapped_principal: Il soggetto del token, utilizzando la sintassi IAM per identificare l'entità:principal://iam.googleapis.com/locations/global/workforcePools/POOL_ID/subject/IDENTIFIER
protoPayload.resourceName: il provider del pool di forza lavoro a cui è associato il token.
L'esempio seguente mostra una voce di log di controllo per una richiesta di scambio di un token. In questo esempio, l'entità è federata utilizzando un provider 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.SecurityTokenService.ExchangeOauthTokenRequest", "grantType": "authorization_code", } }, "resource": { "type": "audited_resource" } }
Passaggi successivi
- Configura e visualizza gli audit log per IAM.
- Scopri di più su Cloud Audit Logs.
- Configura la federazione delle identità per la forza lavoro utilizzando i pool di identità per la forza lavoro.