Journaux d'audit pour la fédération d'identité de la charge de travail

Cette page présente des exemples des journaux d'audit générés lorsque vous utilisez la fédération d'identité de charge de travail. Grâce à 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 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.

Échanger le jeton d'un fournisseur d'identité avec un jeton fédéré

Après avoir configuré vos pools Workload Identity et leurs fournisseurs d'identité, vous pouvez créer un jeton pour votre fournisseur d'identité et l'échanger contre un jeton fédéré.

IAM peut générer des journaux d'audit lorsque les membres é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'activité d'accès aux données pour les API suivantes :

  • API IAM (Identity and Access Management)
  • API Security Token Service

Une fois que vous avez activé les journaux d'audit pour l'activité d'accès aux données, IAM génère une entrée de journal d'audit chaque fois qu'un membre échange un jeton. L'entrée de journal comprend les champs suivants :

  • protoPayload.authenticationInfo.principalSubject : objet du jeton du fournisseur d'identité.
    • Sur Amazon Web Services (AWS), ce champ contient le nom ARN (Amazon Resource Name) du compte principal que vous avez authentifié.
    • Dans Microsoft Azure, ce champ contient l'ID d'objet de l'identité gérée que vous avez spécifié comme objet du jeton Azure.
    • Pour les autres fournisseurs d'identité OIDC, ce champ contient la valeur de sub, ou l'objet, de la revendication 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.v1beta.SecurityTokenService.ExchangeToken",
    "resourceName": "projects/1234567890123/locations/global/workloadIdentityPools/azure-pool/providers/azure",
    "request": {
      "@type": "type.googleapis.com/google.identity.sts.v1beta.ExchangeTokenRequest",
      "grantType": "urn:ietf:params:oauth:grant-type:token-exchange"
    }
  },
  "resource": {
    "type": "audited_resource"
  }
}

Créer des identifiants éphémères pour un compte de service

Après avoir échangé le jeton du fournisseur d'identité contre un jeton fédéré, vous pouvez utiliser le jeton fédéré pour créer des identifiants éphémères pour un compte de service. Tous les services Google vous permettent de vous authentifier avec ces identifiants éphémères.

Une fois que vous avez activé les journaux d'audit IAM pour l'activité d'accès aux données, IAM génère une entrée de journal d'audit chaque fois qu'un membre génère des identifiants éphémères pour un compte de service. L'entrée de journal 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"
  }
}

S'authentifier avec les identifiants du compte de service emprunté

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 du fournisseur d'identité :

{
  "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"
  }
}

Étape suivante