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

Questa pagina mostra esempi di audit log generati quando utilizzi Federazione delle identità per la forza lavoro. Con 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 su come attivare e visualizzare i log di controllo, consulta Log di controllo IAM.

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

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

Per configurare ulteriormente gli audit log per il processo di scambio di token per accedere alla console Google Cloud (federata), devi inoltre abilitare gli audit log per l'attività di accesso ai dati per nell'API seguente:

  • API Security Token Service (attiva 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 Ad esempio, l'utente sam@example.com ha creato un pool forza lavoro con l'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 di un token IdP con un token federato

Dopo aver configurato il pool di identità della forza lavoro e il pool di identità della forza lavoro puoi creare un token per il tuo provider di identità (IdP) e scambiare per un token federato.

Dopo aver attivato 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. Il log include i seguenti campi:

  • protoPayload.authenticationInfo.principalSubject: l'oggetto del token IdP.
    • Per le IdP OIDC, questo campo contiene il valore dell'attributo sub o soggetto del token OIDC.
    • Per gli IdP SAML, questo campo contiene il valore Attributo secondario NameID dell'attributo Subject nell'asserzione SAML.
  • protoPayload.metadata.mapped_principal: l'oggetto del token, che utilizza 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 a cui è associato il token.

L'esempio seguente mostra una voce del log di controllo per una richiesta di scambio di un token. In questo esempio, viene scambiato un token OIDC token:

{
  "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 degli audit di Cloud che Security Token Service crea quando tenta di verificare le asserzioni SAML firmate o decriptare le asserzioni criptate inviate dal tuo IdP.

Per Workforce Identity Federation, 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/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 della credenziale SAML. La Il certificato X.509 viene estratto dai metadati XML SAML allegati il provider del pool di identità per la forza lavoro.
  • resourceName: il nome della risorsa della forza lavoro Chiave del provider del pool di identità utilizzata per decriptare la chiave criptata asserzione SAML. Questo campo è presente solo se la federazione delle identità riceve un una risposta SAML criptata dal tuo IdP.

Log per le chiamate alle API Google Cloud con il token federato

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

L'esempio seguente mostra una voce di audit log per una richiesta di elenco dei 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/012345678901"
    },
    "methodName": "storage.buckets.list",
    "serviceName": "storage.googleapis.com",
  },
  "resource": {
    "type": "gcs_bucket"
  }
}

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

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

Log per l'accesso riuscito

Questa sezione fornisce un esempio di voce Cloud Audit Logs che viene registrata come risultato di un accesso riuscito. In questo esempio, l'utente user@example.com accede utilizzando un fornitore 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 dei log di controllo di Cloud per i provider SAML può contenere inoltre 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 voce 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 fornitorelocations/global/workforcePools/my-pool/providers/my-provider, ma gli viene negato l'accesso a causa della mancata soddisfazione di una condizione dell'attributo. 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 la disconnessione

Questa sezione fornisce un esempio di voce 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 tramite un provider locations/global/workforcePools/my-pool/providers/my-provider avvia un esci dall'account. 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