Identity and Access Management (IAM) audit logs in Google Distributed Cloud (GDC) air-gapped record token key exchanges, resource access changes, and user session events. These log entries use Istio, Kubernetes Resource Model (KRM) API, and custom GKE Identity Service schemas to capture the identity, target resource, and action metadata.
Key exchange for STS token
Log schema: Istio
| Fields in the log entry that contain audit information | ||
|---|---|---|
| Audit metadata | Audit field name | Value |
| User or service identity | identity |
\"user\":{\"identity\":\"system:serviceaccount:iam-test:service-account\"} |
Target (Fields and values that call the API) |
resource |
\"resource\":\"service-accounts.zone1.google.gdch.test\" |
Action (Fields containing the performed operation) |
Not applicable | |
| Event timestamp | time |
"time": "2022-11-23T18:25:54Z" |
| Source of action | Not applicable | |
| Outcome | Not applicable | |
| Other fields | Not applicable | |
Audit logs CRUD operations on Kubernetes resources including creation of service accounts, and access control management.
Log schema: KRM API
| Fields in the log entry that contain audit information | ||
|---|---|---|
| Audit metadata | Audit field name | Value |
| User or service identity | user/username |
"user": { "groups": [ "system:authenticated" ], "username": "fop-platform-admin@example.com" } |
Target (Fields and values that call the API) |
objectRef |
"objectRef": { "resource": "projectserviceaccounts", "apiGroup": "resourcemanager.gdc.goog", "name": "service-accountt", "apiVersion": "v1alpha1", "namespace": "iam-test" } |
Action (Fields containing the performed operation) |
verb |
"verb": "create" |
| Event timestamp | requestReceivedTimestamp |
"requestReceivedTimestamp": "2022-11-23T18:24:26.514173Z" |
| Source of action | sourceIPs |
"sourceIPs": [ "10.200.0.2" ] |
| Outcome | responseStatus |
"responseStatus": { "code": 201, "metadata": {} } |
| Other fields | 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" } |
Audit Log when a user logs out
Log schema: Custom AIS format.
| Fields in the log entry that contain audit information | ||
|---|---|---|
| Audit metadata | Audit field name | Value |
| User or service identity | 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" } |
Target (Fields and values that call the API) |
Not applicable | |
Action (Fields containing the performed operation) |
operation |
"operation": "revoke" |
| Event timestamp | metadata.timestamp |
"timestamp": "2023-08-29T00:42:40.000544813+00:00" |
| Source of action | Not applicable | |
| Outcome | Not applicable | |
| Other fields | expirationTime |
"expirationTime": "2023-08-29T12:42:36.848454939+00:00" |
Audit Log when a user logs in
Log schema: Custom AIS format.
| Fields in the log entry that contain audit information | ||
|---|---|---|
| Audit metadata | Audit field name | Value |
| User or service identity | 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" } |
Target (Fields and values that call the API) |
Not applicable | |
Action (Fields containing the performed operation) |
operation |
"operation": "create" |
| Event timestamp | metadata.timestamp |
"timestamp": "2023-08-28T17:22:13.351713088+00:00" |
| Source of action | Not applicable | |
| Outcome | Not applicable | |
| Other fields | expirationTime |
"expirationTime": "2023-08-29T05:22:13.350779831+00:00" |
Audit Log when PA revokes sessions for a user
Log schema: Custom AIS format.
| Fields in the log entry that contain audit information | ||
|---|---|---|
| Audit metadata | Audit field name | Value |
| User or service identity | 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" } |
Target (Fields and values that call the API) |
resource |
"resource": "session" |
Action (Fields containing the performed operation) |
operation |
"operation": "revoke" |
| Event timestamp | metadata.timestamp |
"timestamp": "2023-08-28T17:22:24.043644569+00:00" |
| Source of action | Not applicable | |
| Outcome | Not applicable | |
| Other fields | numSessionsAffected |
"numSessionsAffected": 1 |
Example log 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"
}