Gestion de l'authentification et des accès (IAM)

Les journaux d'audit Identity and Access Management (IAM) dans Google Distributed Cloud (GDC) air-gapped enregistrent les échanges de clés de jeton, les modifications d'accès aux ressources et les événements de session utilisateur. Ces entrées de journal utilisent Istio, l'API KRM (Kubernetes Resource Model) et des schémas GKE Identity Service personnalisés pour capturer l'identité, la ressource cible et les métadonnées d'action.

Échange de clés pour le jeton STS

Schéma de journal : Istio

Champs de l'entrée de journal contenant des informations d'audit
Métadonnées d'audit Nom du champ d'audit Valeur
Identité de l'utilisateur ou du service identity

\"user\":{\"identity\":\"system:serviceaccount:iam-test:service-account\"}

Cible

(Champs et valeurs qui appellent l'API)

resource

\"resource\":\"service-accounts.zone1.google.gdch.test\"

Action

(Champs contenant l'opération effectuée)

Non applicable
Code temporel de l'événement time

"time": "2022-11-23T18:25:54Z"

Source de l'action Non applicable
Résultat Non applicable
Autres champs Non applicable

Journaux d'audit des opérations CRUD sur les ressources Kubernetes, y compris la création de comptes de service et la gestion du contrôle des accès.

Schéma de journal : API KRM

Champs de l'entrée de journal contenant des informations d'audit
Métadonnées d'audit Nom du champ d'audit Valeur
Identité de l'utilisateur ou du service user/username

"user": {
    "groups": [
      "system:authenticated"
    ],
    "username": "fop-platform-admin@example.com"
  }

Cible

(Champs et valeurs qui appellent l'API)

objectRef

"objectRef": {
    "resource": "projectserviceaccounts",
    "apiGroup": "resourcemanager.gdc.goog",
    "name": "service-accountt",
    "apiVersion": "v1alpha1",
    "namespace": "iam-test"
}

Action

(Champs contenant l'opération effectuée)

verb

"verb": "create"

Code temporel de l'événement requestReceivedTimestamp

"requestReceivedTimestamp": "2022-11-23T18:24:26.514173Z"

Source de l'action sourceIPs

"sourceIPs": [
    "10.200.0.2"
  ]

Résultat responseStatus

"responseStatus": {
    "code": 201,
    "metadata": {}
  }

Autres champs annotations/authorization.k8s.io/reason

"annotations": {
    "authorization.k8s.io/reason": "RBAC: allowed by RoleBinding \"platform-admin-project-iam-admin/iam-test\" of Role \"project-iam-admin\" to User \"fop-platform-admin@example.com\"",
    "authorization.k8s.io/decision": "allow"
  }

Journal d'audit lorsqu'un utilisateur se déconnecte

Schéma de journal : format AIS personnalisé.

Champs de l'entrée de journal contenant des informations d'audit
Métadonnées d'audit Nom du champ d'audit Valeur
Identité de l'utilisateur ou du service payload.user

"payload": {
      "expirationTime": "2023-08-29T12:42:36.848454939+00:00",
      "groups": [],
      "id": "7a5bea7a-0821-45d8-b4a0-69f24d30ab3f",
      "issuer": "Google OIDC",
      "user": "test-user"
    }

Cible

(Champs et valeurs qui appellent l'API)

Non applicable

Action

(Champs contenant l'opération effectuée)

operation

"operation": "revoke"

Code temporel de l'événement metadata.timestamp

"timestamp": "2023-08-29T00:42:40.000544813+00:00"

Source de l'action Non applicable
Résultat Non applicable
Autres champs expirationTime

"expirationTime": "2023-08-29T12:42:36.848454939+00:00"

Journal d'audit lorsqu'un utilisateur se connecte

Schéma de journal : format AIS personnalisé.

Champs de l'entrée de journal contenant des informations d'audit
Métadonnées d'audit Nom du champ d'audit Valeur
Identité de l'utilisateur ou du service payload.user

"payload": {
      "expirationTime": "2023-08-29T05:22:13.350779831+00:00",
      "groups": [],
      "id": "dcb7c5d9-c171-4f5b-84b6-5c92bfffb0e0",
      "issuer": "Azure AD SAML",
      "user": "test-ais-e2e-saml@byoidcloudaccountgoogle.onmicrosoft.com"
    }

Cible

(Champs et valeurs qui appellent l'API)

Non applicable

Action

(Champs contenant l'opération effectuée)

operation

"operation": "create"

Code temporel de l'événement metadata.timestamp

"timestamp": "2023-08-28T17:22:13.351713088+00:00"

Source de l'action Non applicable
Résultat Non applicable
Autres champs expirationTime

"expirationTime": "2023-08-29T05:22:13.350779831+00:00"

Journal d'audit lorsque l'AP révoque les sessions d'un utilisateur

Schéma de journal : format AIS personnalisé.

Champs de l'entrée de journal contenant des informations d'audit
Métadonnées d'audit Nom du champ d'audit Valeur
Identité de l'utilisateur ou du service payload.admin / payload.user

"payload": {
      "admin": "test-user-1@gdch.com",
      "numSessionsAffected": 1,
      "peerWorkloadIdentity": "system:serviceaccount:anthos-identity-service:default",
      "peerWorkloadIdentityIssuer": "https://kubernetes.default.svc.cluster.local",
      "user": "test-user-2@gdch.com"
    }

Cible

(Champs et valeurs qui appellent l'API)

resource

"resource": "session"

Action

(Champs contenant l'opération effectuée)

operation

"operation": "revoke"

Code temporel de l'événement metadata.timestamp

"timestamp": "2023-08-28T17:22:24.043644569+00:00"

Source de l'action Non applicable
Résultat Non applicable
Autres champs numSessionsAffected

"numSessionsAffected": 1

Exemple de journal IAM

{
  "pri": "46",
  "_gdch_flbProcessedTimestamp": 1669227957.340494,
  "_gdch_fluentbit_pod": "anthos-audit-logs-forwarder-vk6vx",
  "time": "2022-11-23T18:25:54Z",
  "message": "{\"time\":\"2022-11-23T18:25:54.257503516Z\",\"auditID\":\"d1c33645-bed0-47dc-8180-06b752673109\",\"user\":{\"identity\":\"system:serviceaccount:iam-test:service-accountt\"},\"resource\":\"service-accounts.zone1.google.gdch.test\",\"description\":\"{\\\"keyID\\\":\\\"f9540561-84d5-4113-983f-fd8868501596\\\",\\\"expirationTime\\\":\\\"2022-11-24T06:25:53Z\\\"}\"}",
  "ident": "/service-identity-server",
  "pid": "1",
  "msgid": "audit-log",
  "extradata": "-",
  "_gdch_cluster": "root-admin",
  "host": "serviceidentity-sa-server-55544bd9f5-nwg8m",
  "_gdch_service_name": "service-identity-audit-logs"
}