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