此页面展示了管理或使用服务账号时生成的审核日志示例。
如需详细了解如何启用和查看审核日志,请参阅 IAM 审核日志记录。
创建服务账号时生成的日志
当您创建或修改服务账号时,Identity and Access Management (IAM) 会生成日志条目。以下示例展示了创建服务账号时生成的日志条目:
{ "protoPayload": { "@type": "type.googleapis.com/google.cloud.audit.AuditLog", "authenticationInfo": { "principalEmail": "hao@example.com" }, "methodName": "google.iam.admin.v1.CreateServiceAccount", "response": { "email": "my-service-account@my-project.iam.gserviceaccount.com", "@type": "type.googleapis.com/google.iam.admin.v1.ServiceAccount", "display_name": "My service account." } }, "resource": { "type": "service_account" } }
授予角色时生成的日志
本部分展示您在授予与服务账号相关的角色时收到的日志条目。
授予 Service Account User 角色时生成的日志
主账号可以通过模拟服务账号,获得与服务账号相同的权限。要允许主账号模拟某个服务账号,您可以向该服务账号的主账号授予 Service Account User 角色 (roles/iam.serviceAccountUser
)。
以下示例展示了向主账号授予 Service Account User 角色的日志条目:
{
"logName": "projects/my-project/logs/cloudaudit.googleapis.com%2Factivity",
"protoPayload": {
"@type": "type.googleapis.com/google.cloud.audit.AuditLog",
"methodName": "google.iam.admin.v1.SetIAMPolicy",
"request": {
"@type": "type.googleapis.com/google.iam.v1.SetIamPolicyRequest",
"resource": "projects/-/serviceAccounts/my-service-account@my-project.iam.gserviceaccount.com"
},
"resourceName": "projects/-/serviceAccounts/123456789012345678901",
"response": {
"@type": "type.googleapis.com/google.iam.v1.Policy",
"bindings": [
{
"members": [
"user:srini@example.com"
],
"role": "roles/iam.serviceAccountUser"
}
]
}
},
"resource": {
"type": "service_account"
}
}
当您授予 Service Account Token Creator 角色 (roles/iam.serviceAccountTokenCreator
) 时,主账号可创建短期有效的凭据,Cloud IAM 会生成类似的日志条目。
为服务账号授予资源的访问权限时生成的日志
您可以为服务账号授予特定资源的角色,从而允许服务账号访问该资源。如果拥有资源的服务也支持审核日志记录,则为服务账号授予角色会生成审核日志条目。日志条目包含字段 protoPayload.authenticationInfo.principalEmail
,该字段用来标识为服务账号授予角色的主账号。
以下示例展示了为项目的服务账号授予角色的审核日志条目。在此示例中,julia@example.com
将 Organization Viewer 角色 (roles/resourcemanager.organizationViewer
) 授予了服务账号。protoPayload.serviceName
字段设置为 cloudresourcemanager.googleapis.com
,因为 Resource Manager 是管理项目的 Google Cloud 服务。此外,resource.type
字段设置为 project
:
{
"logName": "projects/my-project/logs/cloudaudit.googleapis.com%2Factivity",
"protoPayload": {
"@type": "type.googleapis.com/google.cloud.audit.AuditLog",
"authenticationInfo": {
"principalEmail": "julia@example.com"
},
"methodName": "SetIamPolicy",
"request": {
"@type": "type.googleapis.com/google.iam.v1.SetIamPolicyRequest",
"resource": "my-project"
},
"resourceName": "projects/my-project",
"response": {
"@type": "type.googleapis.com/google.iam.v1.Policy",
"bindings": [
{
"members": [
"serviceAccount:my-service-account@my-project.iam.gserviceaccount.com"
],
"role": "roles/resourcemanager.organizationViewer"
}
]
},
"serviceName": "cloudresourcemanager.googleapis.com"
},
"resource": {
"type": "project"
}
}
设置 Compute Engine 实例以服务账号身份运行时生成的日志
如果用户的服务账号拥有 Service Account User 角色 (roles/iam.serviceAccountUser
),则用户可以创建以服务账号的身份运行的 Compute Engine 虚拟机 (VM) 实例。在这种情况下,用户使用自己的凭据创建虚拟机实例,并且该请求会指定虚拟机实例要使用的服务账号。
当用户创建虚拟机实例时,Compute Engine 会创建多个日志条目。以下示例展示了第一个日志条目,它标识了创建虚拟机实例的用户和实例使用的服务账号。在此示例中,用户 jackie@example.com
创建了一个使用服务账号 my-service-account@my-project.iam.gserviceaccount.com
的实例。结果是,protoPayload.authenticationInfo.principalEmail
字段设置为 jackie@example.com
,protoPayload.request.serviceAccounts[0].email
字段设置为 my-service-account@my-project.iam.gserviceaccount.com
:
{
"logName": "projects/my-project/logs/cloudaudit.googleapis.com%2Factivity",
"protoPayload": {
"@type": "type.googleapis.com/google.cloud.audit.AuditLog",
"authenticationInfo": {
"principalEmail": "jackie@example.com"
},
"methodName": "v1.compute.instances.insert",
"request": {
"@type": "type.googleapis.com/compute.instances.insert",
"serviceAccounts": [
{
"email": "my-service-account@my-project.iam.gserviceaccount.com"
}
]
},
"resourceName": "projects/my-project/zones/us-central1-a/instances/my-instance"
},
"resource": {
"type": "gce_instance"
}
}
使用服务账号密钥访问 Google Cloud 时生成的日志
本部分展示您在创建服务账号密钥并使用该密钥访问 Google Cloud 时收到的日志条目。
创建服务账号密钥时生成的日志
如果您的服务账号拥有 Service Account Key Admin 角色 (roles/iam.serviceAccountKeyAdmin
),则可以创建服务账号密钥,然后使用该密钥对发送到 Google Cloud 服务的请求进行身份验证。
以下示例展示了用于创建服务账号密钥的一个日志条目。在此示例中,用户 sam@example.com
为服务账号 my-service-account@my-project.iam.gserviceaccount.com
创建了一个密钥:
{
"logName": "projects/my-project/logs/cloudaudit.googleapis.com%2Factivity",
"protoPayload": {
"@type": "type.googleapis.com/google.cloud.audit.AuditLog",
"authenticationInfo": {
"principalEmail": "sam@example.com",
},
"methodName": "google.iam.admin.v1.CreateServiceAccountKey",
"request": {
"@type": "type.googleapis.com/google.iam.admin.v1.CreateServiceAccountKeyRequest",
"name": "projects/-/serviceAccounts/my-service-account@my-project.iam.gserviceaccount.com"
},
"resourceName": "projects/-/serviceAccounts/123456789012345678901"
},
"resource": {
"type": "service_account"
}
}
使用服务账号密钥进行身份验证时生成的日志
创建服务账号密钥后,您可以使用该密钥为服务账号请求 OAuth 2.0 访问令牌,然后使用访问令牌对发送到 Google Cloud 服务的请求进行身份验证。一般来说,这些服务的审核日志包含以下信息:
protoPayload.authenticationInfo.principalEmail
:访问令牌所代表的服务账号的电子邮件地址。protoPayload.authenticationInfo.serviceAccountKeyName
:用于请求 OAuth 2.0 访问令牌的服务账号密钥。此字段通过其完整资源名称(采用//iam.googleapis.com/projects/project-id/serviceAccounts/service-account-email/
格式)标识服务账号密钥。keys/key-id
以下示例展示了创建 Memorystore for Redis 实例的请求的审核日志条目。该请求通过服务账号的 OAuth 2.0 访问令牌进行了身份验证。在此示例中,服务账号名为 my-service-account@my-project.iam.gserviceaccount.com
,服务账号密钥 ID 为 c71e040fb4b71d798ce4baca14e15ab62115aaef
:
{
"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",
"serviceAccountKeyName": "//iam.googleapis.com/projects/my-project/serviceAccounts/my-service-account@my-project.iam.gserviceaccount.com/keys/c71e040fb4b71d798ce4baca14e15ab62115aaef"
},
"methodName": "google.cloud.redis.v1.CloudRedis.CreateInstance",
"request": {
"@type": "type.googleapis.com/google.cloud.redis.v1.CreateInstanceRequest"
}
}
}
模拟服务账号以访问 Google Cloud 时生成的日志
本部分展示了在您在为服务账号创建短期有效的凭据,随后使用这些凭据来模拟服务账号并访问 Google Cloud 时收到的日志条目。
创建短期有效的凭据时生成的日志
如果您拥有服务账号的 Service Account Token Creator 角色 (roles/iam.serviceAccountTokenCreator
),则可以为服务账号创建短期有效凭据,然后使用这些凭据模拟服务账号。例如,您可以创建短期有效凭据,以便从未在 Google Cloud 上运行的应用调用 Google Cloud API。
在主账号创建短期有效凭据时,IAM 可生成审核日志。如需接收这些审核日志,您必须为数据访问活动启用 IAM 审核日志。
为数据访问活动启用 IAM 审核日志后,主账号每次创建短期有效凭据时,IAM 都会生成审核日志条目。该条目包含以下字段:
protoPayload.authenticationInfo.principalEmail
:创建短期有效凭据的主账号。resource.labels.email_id
:为其生成短期有效凭据的服务账号。
以下示例展示了生成短期有效 OAuth 2.0 访问令牌的请求对应的审核日志条目。在此示例中,用户 amara@example.com
为服务账号 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": {
"principalEmail": "amara@example.com"
},
"methodName": "GenerateAccessToken",
"request": {
"@type": "type.googleapis.com/google.iam.credentials.v1.GenerateAccessTokenRequest",
"name": "projects/-/serviceAccounts/my-service-account@my-project.iam.gserviceaccount.com"
},
"serviceName": "iamcredentials.googleapis.com"
},
"resource": {
"labels": {
"email_id": "my-service-account@my-project.iam.gserviceaccount.com",
"project_id": "my-project",
"unique_id": "123456789012345678901"
},
"type": "service_account"
}
}
使用短期有效的凭据进行身份验证时生成的日志
为服务账号创建短期有效凭据后,您就可以在调用 Google Cloud API 时使用这些凭据来模拟服务账号。
您调用的某些方法可能会生成审核日志。通常,这些日志条目会显示以下身份:
- 短期有效凭据所要模拟的服务账号
- 创建短期有效凭据的身份
例如,假设用户 yoon@example.com
为服务账号 my-service-account@my-project.iam.gserviceaccount.com
创建了短期有效凭据。随后,该用户创建了新的 Pub/Sub 主题,并使用短期有效凭据来模拟服务账号。Pub/Sub 生成了一个日志条目用于标识服务账号以及模拟该服务账号的用户:
{
"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": [
{
"firstPartyPrincipal": {
"principalEmail": "yoon@example.com"
}
}
]
},
"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"
}
}
后续步骤
- 为 IAM 配置和查看审核日志。
- 详细了解 Cloud Audit Logs。
- 了解服务账号。
- 创建和管理服务账号。
- 创建短期有效凭据以模拟服务账号。