Log di esempio per la federazione delle identità della forza lavoro

Mantieni tutto organizzato con le raccolte Salva e classifica i contenuti in base alle tue preferenze.

Questa pagina mostra esempi degli audit log generati quando utilizzi la federazione delle identità per la forza lavoro. Con la federazione delle identità della forza lavoro, puoi consentire a identità di terze parti di accedere alle risorse di Google Cloud senza utilizzare una chiave dell'account di servizio.

Per ulteriori informazioni sull'abilitazione e sulla visualizzazione degli audit log, consulta Log di controllo di IAM.

IAM può generare audit log quando crei e gestisci i pool di forza lavoro. Per abilitare gli audit log durante la gestione dei pool di forza lavoro, devi attivare gli audit log per le attività di accesso ai dati per la seguente API:

  • API Identity and Access Management (IAM) (abilitazione del tipo di log "Lettura amministratore")

Per configurare ulteriormente gli audit log per il processo di scambio di token o l'accesso (federato) della console Google Cloud, devi anche attivare gli audit log per l'attività di accesso ai dati per la seguente API:

  • API Security Token Service (abilita il tipo di log "Lettura amministratore")

Log per la creazione di un pool di forza lavoro

L'esempio seguente 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 ID my-pool nell'organizzazione con 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 del token di un provider di identità con un token federato

Dopo aver configurato i pool di forza lavoro e i provider di identità, puoi creare un token per il tuo provider di identità e scambiarlo con un token federato.

Dopo aver abilitato 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 del provider di identità.
    • Per i provider di identità OIDC, questo campo contiene il valore della richiesta sub o dell'oggetto, proveniente dal token OIDC.
    • Per i provider di identità SAML, questo campo contiene il valore dell'attributo secondario NameID dell'attributo Subject nell'asserzione SAML.
  • protoPayload.metadata.mapped_principal: l'oggetto 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, 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.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"
  }
}

Log per le chiamate alle 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 API Google Cloud. Alcuni dei metodi da te chiamati potrebbero generare audit log.

L'esempio seguente mostra una voce di log di controllo per una richiesta di elenco dei bucket Cloud Storage in un progetto che utilizza 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/012345678901"
    },
    "methodName": "storage.buckets.list",
    "serviceName": "storage.googleapis.com",
  },
  "resource": {
    "type": "gcs_bucket"
  }
}

Log per l'accesso (federato) alla console Google Cloud

Dopo aver configurato i pool di identità della forza lavoro e i relativi provider di identità, gli utenti possono accedere a Google Cloud utilizzando il Single Sign-On.

Log per l'accesso riuscito

Questa sezione fornisce un esempio di Cloud Audit Logs che viene registrato 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 Cloud Audit Logs per i provider SAML può inoltre contenere 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 accesso non riuscito

Questa sezione fornisce un esempio di Cloud Audit Logs che viene registrato in seguito a un 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 nega l'accesso perché la condizione di un 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 disconnessione

Questa sezione fornisce un esempio di Cloud Audit Logs che viene registrato 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"
    }
  },
}

Passaggi successivi