Log di esempio per la federazione delle identità per i carichi di lavoro

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 sull'abilitazione e la visualizzazione degli audit log, consulta Log di controllo IAM.

Log per lo scambio di un token IdP con un token federato

Dopo aver configurato i pool di identità dei carichi di lavoro 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à 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) (abilita il tipo di log "Lettura amministratore")
  • API Security Token Service (attiva il tipo di log "Lettura amministratore")

Dopo aver abilitato gli audit log per l'attività di accesso ai dati, IAM genera una voce di audit log 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 il nome della risorsa Amazon (ARN) dell'entità 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à per i carichi di lavoro a cui è associato il token.

L'esempio seguente mostra una voce di audit log per una richiesta di scambio di un di accesso. 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

In questa sezione vengono descritte le voci di log di Cloud Audit Logs che Security Token Service crea quando tenta di verificare le asserzioni SAML firmate o decriptare asserzioni inviate dal tuo IdP.

Per la federazione delle identità per i carichi di lavoro, il 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 codice X.509 utilizzato per verificare la firma della credenziale SAML. La Il certificato X.509 viene estratto dai metadati XML SAML allegati il provider del pool di identità per i carichi di lavoro.
  • 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

In questa sezione vengono descritte le voci di log di Cloud Audit Logs che Security Token Service crea quando tenta di verificare il certificato client mTLS con un archivio di attendibilità preconfigurato.

Per la federazione delle identità per i carichi di lavoro, 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 nel certificato client che può essere trust_anchor o intermediate_ca
  • timeUntilExpiration: il tempo rimanente in secondi prima del certificato scadenza quando viene utilizzato nella verifica della catena di certificati
  • fingerprintSha256: la rappresentazione esadecimale dell'hash SHA-256 dell'hash 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 il token federato per creare credenziali di breve durata per un account di servizio. Tutti i servizi Google ti consentono di autenticarti con questi servizi e credenziali.

Dopo aver abilitato gli audit log IAM per l'attività di accesso ai dati, IAM genera una voce di audit log ogni volta che un'entità genera credenziali di breve durata per un account di servizio. La voce di log include nei 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 audit log 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 per l'account di servizio impersonato

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 richiamati potrebbero generare audit log. In generale, questi le voci di log mostrano le seguenti identità:

  • L'account di servizio impersonato dalle credenziali di breve durata
  • 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 soggetto principal://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 il modello per rappresentare l'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