Questa pagina mostra esempi dei log di controllo generati quando utilizzi Workload Identity Federation. Con la federazione Workload Identity, puoi consentire a un carico di lavoro on-premise o multi-cloud di accedere alle risorse Google Cloud senza utilizzare una chiave dell'account di servizio.
Per ulteriori informazioni su come attivare e visualizzare i log di controllo, consulta Log di controllo IAM.
Log per lo scambio di un token IdP con un token federato
Dopo aver configurato i pool di identità del workload e il provider di identità (IdP), puoi creare un token per l'IdP e scambiarlo con un token federato.
IAM può generare audit log quando le entità si scambiano un token. Per ricevere i log di controllo per tutti i passaggi della procedura di scambio di token, devi attivare i log di controllo per l'attività di accesso ai dati per le seguenti API:
- API Identity and Access Management (IAM) (attiva il tipo di log "Lettura amministratore")
- API Security Token Service (attiva il tipo di log "Lettura amministratore")
Dopo aver attivato i log di controllo 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 del log include i seguenti campi:
protoPayload.authenticationInfo.principalSubject
: l'oggetto del token IdP.- In Amazon Web Services (AWS), questo campo contiene l'Amazon Resource Name (ARN) del principale che hai autenticato.
- In Microsoft Azure, questo campo contiene l'ID oggetto dell'identità gestita specificata come soggetto del token Azure.
- Per altri provider di identità OIDC, questo campo contiene il valore del claim
sub
o soggetto del token OIDC.
protoPayload.metadata.mapped_principal
: l'oggetto del token, che utilizza la sintassi IAM per identificare l'entità:principal://iam.googleapis.com/projects/project-number/locations/global/workloadIdentityPools/pool-id/subject/identifier
protoPayload.resourceName
: il provider del pool di identità del workload 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, un token Microsoft Azure è stato scambiato con un token federato:
{ "logName": "projects/my-project/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/projects/1234567890123/locations/global/workloadIdentityPools/azure-pool/subject/a1234bcd-5678-9012-efa3-4b5cd678ef9a" }, "methodName": "google.identity.sts.v1.SecurityTokenService.ExchangeToken", "resourceName": "projects/1234567890123/locations/global/workloadIdentityPools/azure-pool/providers/azure", "request": { "@type": "type.googleapis.com/google.identity.sts.v1.ExchangeTokenRequest", "grantType": "urn:ietf:params:oauth:grant-type:token-exchange" } }, "resource": { "type": "audited_resource" } }
Log per le asserzioni SAML firmate e criptate
Questa sezione descrive le voci di log Cloud Audit Logs che Security Token Service crea quando tenta di verificare le asserzioni SAML firmate o decriptare le asserzioni criptate inviate dal tuo IdP.
Per la federazione delle identità per i workload, la voce del 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/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/WORKLOAD_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 della credenziale SAML. Il certificato X.509 viene estratto dai metadati XML SAML allegati al provider del pool di identità del workload.resourceName
: il nome della risorsa della chiave del provider del pool di identità del carico di lavoro utilizzata per decriptare l'affermazione SAML criptata. Questo campo è presente solo se la federazione delle identità riceve una risposta SAML criptata dal tuo IdP.
Log per la federazione X.509
Questa sezione descrive le voci di log di Cloud Audit Logs che Security Token Service crea quando tenta di verificare il certificato client mTLS con un archivio attendibilità preconfigurato.
Per la federazione delle identità per i workload, la voce del log pertinente è simile alla seguente:
"keyInfo": [ { "certificateType": "trust_anchor" "timeUntilExpiration": 3333405600s "fingerprintSha256": "e33f612a0e426692f29db2c7b17b9e3810ce13f09ad117c67e7227a84fd25ea5" "use": "verify" }
Questo output include i seguenti valori:
certificateType
: il tipo di certificato coinvolto nella verifica del certificato client, che può esseretrust_anchor
ointermediate_ca
timeUntilExpiration
: il tempo rimanente in secondi fino alla scadenza del certificato quando viene utilizzato nella verifica della catena di certificatifingerprintSha256
: la rappresentazione esadecimale dell'hash SHA-256 del certificato X.509
Log per la creazione di credenziali di breve durata per un account di servizio
Dopo aver scambiato il token IdP con un token federato, puoi utilizzare quest'ultimo per creare credenziali di breve durata per un account di servizio. Tutti i servizi Google ti consentono di autenticarti con queste credenziali di breve durata.
Dopo aver attivato i log di controllo IAM per l'attività di accesso ai dati, IAM genera una voce di log di controllo ogni volta che un'entità genera credenziali di breve durata per un account di servizio. La voce di log include i seguenti campi:
protoPayload.authenticationInfo.principalSubject
: l'oggetto del token federato.resource.labels.email_id
: l'account di servizio per cui sono state generate le credenziali di breve durata.
L'esempio seguente mostra una voce di log di controllo per una richiesta di generazione di un
token di accesso OAuth 2.0 di breve durata per un account di servizio. In questo esempio, la richiesta è stata autenticata con le credenziali federate e le credenziali di breve durata sono state create per l'account di serviziomy-service-account@my-project.iam.gserviceaccount.com
:
{ "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/projects/1234567890123/locations/global/workloadIdentityPools/aws-pool/subject/012345678901" }, "methodName": "GenerateAccessToken", "request": { "@type": "type.googleapis.com/google.iam.credentials.v1.GenerateAccessTokenRequest", "name": "projects/-/serviceAccounts/my-service-account@my-project.iam.gserviceaccount.com" }, "resourceName": "projects/-/serviceAccounts/123456789012345678901" }, "resource": { "labels": { "email_id": "my-service-account@my-project.iam.gserviceaccount.com", "project_id": "my-project", "unique_id": "123456789012345678901" }, "type": "service_account" } }
Log per l'autenticazione con le credenziali dell'account di servizio sostituito
Dopo aver creato le credenziali di breve durata per un account di servizio, puoi utilizzarle per rubare l'identità dell'account di servizio quando chiami le API Google Cloud.
Alcuni dei metodi chiamati potrebbero generare log di controllo. In genere, queste voci del log mostrano le seguenti identità:
- L'account di servizio di cui le credenziali di breve durata simulano l'identità
- L'identità che ha creato le credenziali di breve durata
Ad esempio, supponiamo che l'utente jamie@example.com
crei un token federato per il soggettoprincipal://iam.googleapis.com/projects/1234567890123/locations/global/workloadIdentityPools/aws-pool/subject/jamie@example.com
, quindi utilizzi il token federato per creare credenziali di breve durata per l'account servizio my-service-account@my-project.iam.gserviceaccount.com
.
L'utente crea quindi un nuovo argomento Pub/Sub utilizzando le credenziali di breve durata per rubare l'identità dell'account di servizio. Pub/Sub genera una voce di log che identifica l'account di servizio, nonché l'oggetto del token dell'IDP:
{
"logName": "projects/my-project/logs/cloudaudit.googleapis.com%2Factivity",
"protoPayload": {
"@type": "type.googleapis.com/google.cloud.audit.AuditLog",
"authenticationInfo": {
"principalEmail": "my-service-account@my-project.iam.gserviceaccount.com",
"serviceAccountDelegationInfo": [
{
"principalSubject": "principal://iam.googleapis.com/projects/1234567890123/locations/global/workloadIdentityPools/aws-pool/subject/012345678901"
}
]
},
"methodName": "google.pubsub.v1.Publisher.CreateTopic",
"request": {
"@type": "type.googleapis.com/google.pubsub.v1.Topic",
"name": "projects/my-project/topics/my-topic"
},
"resourceName": "projects/my-project/topics/my-topic"
},
"resource": {
"type": "pubsub_topic"
}
}
Passaggi successivi
- Configura e visualizza gli audit log per IAM.
- Scopri di più su Cloud Audit Logs.
- Configura la federazione delle identità utilizzando i pool di identità per i carichi di lavoro.
- Scopri di più sugli account di servizio.