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

Questa pagina mostra esempi di audit log generati quando utilizzi la federazione delle identità per la forza lavoro. Con la federazione delle identità per la forza lavoro, puoi consentire alle identità di terze parti 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 Audit logging di IAM.

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

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

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

  • API Security Token Service (abilita il tipo di log "Admin Read")

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 sotto l'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 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 che hai abilitato Cloud Audit Logs per l'attività di accesso ai dati, IAM genera una voce di audit log 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 gli IdP OIDC, questo campo contiene il valore della rivendicazione sub, o soggetto, del token OIDC.
    • Per gli IdP 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 audit log relativa a 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 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 sembra 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 collegati al provider del pool di identità della forza lavoro.
  • resourceName: il nome della risorsa della chiave del provider del pool di identità della forza lavoro utilizzata per decriptare l'asserzione SAML criptata. Questo campo è presente solo se la federazione delle identità della forza lavoro riceve una risposta SAML criptata dal tuo IdP.

Log per chiamare le API Google Cloud con il token federato

Dopo aver scambiato il token dell'IdP con un token federato, puoi utilizzarlo per chiamare le API Google Cloud. Alcuni dei metodi che chiami potrebbero generare audit log.

L'esempio seguente mostra una voce dell'audit log relativa a 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 alla console Google Cloud (federato)

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

Log per l'accesso riuscito

Questa sezione fornisce un esempio di voce di Cloud Audit Logs che viene registrata come risultato di 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 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ò 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 gli accessi non riusciti

Questa sezione fornisce un esempio di voce di Cloud Audit Logs che viene registrata come risultato di 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 l'accesso viene negato a causa di 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 che viene registrata come risultato di 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 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