Cette page présente des exemples de journaux d'audit générés lors de l'utilisation de la fédération d'identité de charge de travail. Avec la fédération d'identité de charge de travail, vous pouvez autoriser une charge de travail sur site ou multicloud à accéder aux ressources Google Cloud sans avoir à utiliser de clé de compte de service.
Pour en savoir plus sur l'activation et l'affichage des journaux d'audit, consultez la page Journaux d'audit Cloud IAM.
Journaux permettant d'échanger un jeton de fournisseur d'identité contre un jeton fédéré
Après avoir configuré vos pools d'identités de charge de travail et votre fournisseur d'identité (IdP), vous pouvez créer un jeton pour votre IdP et l'échanger contre un jeton fédéré.
Cloud IAM peut générer des journaux d'audit lorsque les comptes principaux échangent un jeton. Afin de recevoir des journaux d'audit pour toutes les étapes du processus d'échange de jetons, vous devez activer les journaux d'audit pour l'accès aux données pour les API suivantes :
- API IAM (Identity and Access Management) (activer le type de journal "Lecture administrateur")
- API Security Token Service (activer le type de journal "Lecture administrateur")
Une fois que vous avez activé les journaux d'audit pour l'accès aux données, IAM génère une entrée de journal d'audit chaque fois qu'un compte principal échange un jeton. Cette entrée comprend les champs suivants :
protoPayload.authenticationInfo.principalSubject
: objet du jeton d'IdP.- Sur Amazon Web Services (AWS), ce champ contient le nom ARN (Amazon Resource Name) du compte principal que vous avez authentifié.
- Sur Microsoft Azure, ce champ contient l'ID d'objet de l'identité gérée que vous avez spécifiée comme objet de jeton Azure.
- Pour les fournisseurs d'identité OIDC, ce champ contient la valeur de la revendication
sub
(l'objet) provenant du jeton OIDC.
protoPayload.metadata.mapped_principal
: objet du jeton, utilisant la syntaxe IAM pour identifier le compte principal :principal://iam.googleapis.com/projects/project-number/locations/global/workloadIdentityPools/pool-id/subject/identifier
protoPayload.resourceName
: fournisseur de pools Identity Workload auquel le jeton est associé.
L'exemple suivant montre une entrée de journal d'audit pour une requête d'échange de jeton. Dans cet exemple, un jeton Microsoft Azure a été échangé contre un jeton fédéré :
{ "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" } }
Journaux pour les assertions SAML signées et chiffrées
Cette section décrit les entrées des journaux Cloud Audit Logs créées par Security Token Service lorsqu'elle tente de valider des assertions SAML signées ou de déchiffrer des assertions chiffrées envoyées par votre IdP.
Pour la fédération d'identité de charge de travail, l'entrée de journal pertinente se présente comme suit :
"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" } ]
Ce résultat inclut les valeurs suivantes :
fingerprint
: représentation hexadécimale du hachage SHA-256 du certificat X.509 utilisé pour vérifier la signature de l'identifiant SAML. Le certificat X.509 est extrait des métadonnées XML SAML associées au fournisseur du pool d'identités de charge de travail.resourceName
: nom de ressource de la clé du fournisseur de pool d'identités de charge de travail utilisée pour déchiffrer l'assertion SAML chiffrée. Ce champ n'est présent que si la fédération d'identité de charge de travail reçoit une réponse SAML chiffrée de votre IdP.
Journaux permettant de créer des identifiants éphémères pour un compte de service
Une fois que vous avez échangé le jeton de l'IdP contre un jeton fédéré, vous pouvez l'utiliser pour créer des identifiants éphémères pour un compte de service. Tous les services Google vous permettent de vous authentifier à l'aide de ces identifiants éphémères.
Une fois que vous avez activé les journaux d'audit IAM pour l'accès aux données, IAM génère une entrée de journal d'audit chaque fois qu'un compte principal génère des identifiants éphémères pour un compte de service. Cette entrée comprend les champs suivants :
protoPayload.authenticationInfo.principalSubject
: objet du jeton fédéré.resource.labels.email_id
: compte de service pour lequel des identifiants éphémères ont été générés
L'exemple suivant illustre une entrée de journal d'audit pour une requête visant à générer un jeton d'accès OAuth 2.0 éphémère pour un compte de service. Dans cet exemple, la requête a été authentifiée avec des identifiants fédérés et les identifiants éphémères ont été créés pour le compte de service my-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" } }
Journaux d'authentification avec les identifiants du compte de service dont l'identité est empruntée
Une fois les identifiants éphémères créés pour un compte de service, vous pouvez les utiliser pour emprunter l'identité du compte de service lorsque vous appelez les API Google Cloud.
Certaines des méthodes appelées peuvent générer des journaux d'audit. En général, ces entrées de journal indiquent les identités suivantes :
- Compte de service dont l'identité est empruntée par les identifiants éphémères
- Identité ayant créé les identifiants éphémères
Par exemple, supposons que l'utilisateur jamie@example.com
crée un jeton fédéré pour l'objet principal://iam.googleapis.com/projects/1234567890123/locations/global/workloadIdentityPools/aws-pool/subject/jamie@example.com
, puis utilise ce jeton fédéré pour créer des identifiants éphémères pour le compte de service my-service-account@my-project.iam.gserviceaccount.com
.
Il crée ensuite un sujet Pub/Sub à l'aide des identifiants éphémères pour emprunter l'identité du compte de service. Pub/Sub génère une entrée de journal qui identifie le compte de service, ainsi que l'objet du jeton de l'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"
}
}
Étapes suivantes
- Configurez et affichez les journaux d'audit pour Cloud IAM.
- Apprenez-en plus sur les journaux d'audit Cloud.
- Configurez la fédération d'identité à l'aide de pools Workload Identity.
- En savoir plus sur les comptes de service