本页面介绍使用工作负载身份联合时生成的审核日志示例。借助工作负载身份联合,您可以允许本地或多云工作负载访问 Google Cloud 资源,而无需使用服务账号密钥。
如需详细了解如何启用和查看审核日志,请参阅 IAM 审核日志记录。
为联合令牌交换 IdP 令牌时生成的日志
设置工作负载身份池和身份提供商 (IdP) 后,您可以为 IdP 创建令牌,并将其用于交换联合令牌。
当主账号交换令牌时,IAM 可以生成审核日志。如需接收令牌交换流程所有步骤的审核日志,您必须为以下 API 启用数据访问审核日志:
- Identity and Access Management (IAM) API(启用日志类型“管理员读取”)
- Security Token Service API(启用日志类型“管理员读取”)
启用数据访问活动的审核日志后,IAM 会在主账号交换令牌时生成一个审核日志条目。该日志条目包含以下字段:
protoPayload.authenticationInfo.principalSubject
:IdP 令牌的主题。- 在 Amazon Web Services (AWS) 上,此字段包含您已通过身份验证的主账号的 Amazon 资源名称 (ARN)。
- 在 Microsoft Azure 上,此字段包含您指定为 Azure 令牌主题的托管式身份的对象 ID。
- 对于其他 OIDC IdP,此字段包含 OIDC 令牌中的
sub
值或主题声明。
protoPayload.metadata.mapped_principal
:令牌的主题,使用 IAM 语法来标识主账号:principal://iam.googleapis.com/projects/project-number/locations/global/workloadIdentityPools/pool-id/subject/identifier
protoPayload.resourceName
:与令牌关联的工作负载身份池提供程序。
以下示例展示了用于交换令牌的请求的审核日志条目。以下示例中,用于交换联合令牌的 Microsoft Azure 令牌如下所示:
{ "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.v1.SecurityTokenService.ExchangeToken", "resourceName": "projects/1234567890123/locations/global/workloadIdentityPools/azure-pool/providers/azure", "request": { "@type": "type.googleapis.com/google.identity.sts.v1.ExchangeTokenRequest", "grantType": "urn:ietf:params:oauth:grant-type:token-exchange" } }, "resource": { "type": "audited_resource" } }
签名和加密 SAML 断言的日志
本部分介绍 Security Token Service 在尝试验证签名的 SAML 断言或解密从 IdP 发送的加密断言时创建的 Cloud Audit Logs 日志条目。
对于工作负载身份联合,相关日志条目类似于以下内容:
"keyInfo": [ { "use": "verify" "fingerprint": "3C:B2:47:F8:A5:9A:8A:52:BD:1C:BC:96:B5:45:C1:8D:A7:F1:73:2D" }, { "use": "decrypt" "resourceName": "//iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/WORKLOAD_POOL_NAME/providers/PROVIDER_NAME/keys/KEY_NAME" } ]
此输出包括以下值:
fingerprint
:用于验证 SAML 凭据上的签名的 X.509 证书的 SHA-256 哈希的十六进制表示形式。X.509 证书是从附加到工作负载身份池提供方的 SAML XML 元数据中提取的。resourceName
:用于解密加密 SAML 断言的工作负载身份池提供方密钥的资源名称。仅当身份联合收到来自 IdP 的加密 SAML 响应时,此字段才会显示。
X.509 联合日志
本部分介绍 Security Token Service 在尝试使用预配置的信任库验证 mTLS 客户端证书时创建的 Cloud Audit Logs 日志条目。
对于工作负载身份联合,相关日志条目类似于以下内容:
"keyInfo": [ { "certificateType": "trust_anchor" "timeUntilExpiration": 3333405600s "fingerprintSha256": "e33f612a0e426692f29db2c7b17b9e3810ce13f09ad117c67e7227a84fd25ea5" "use": "verify" }
此输出包括以下值:
certificateType
:客户端证书验证所涉及的证书类型,可以是trust_anchor
或intermediate_ca
timeUntilExpiration
:证书在证书链验证中使用时到期前的剩余时间(以秒为单位)fingerprintSha256
:X.509 证书的 SHA-256 哈希的十六进制表示法
为服务账号创建短期有效的凭据时生成的日志
将 IdP 令牌交换为联合令牌后,您可以使用联合令牌为服务账号创建短期有效凭据。所有 Google 服务都允许您使用这些短期有效凭据进行身份验证。
启用数据访问活动的 IAM 审核日志后,每次主账号为服务账号生成短期有效凭据时,IAM 都会生成审核日志条目。该日志条目包含以下字段:
protoPayload.authenticationInfo.principalSubject
:联合令牌的主题。resource.labels.email_id
:为其生成短期有效凭据的服务账号。
以下示例展示了用于为服务账号生成短期 OAuth 2.0 访问令牌的请求的审核日志条目。在此示例中,系统使用联合凭据对请求进行身份验证,并为服务账号 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" } }
使用模拟服务账号的凭据进行身份验证时生成的日志
为服务账号创建短期有效凭据后,您就可以在调用 Google Cloud API 时使用这些凭据来模拟服务账号。
您调用的某些方法可能会生成审核日志。通常,这些日志条目会显示以下身份:
- 短期有效凭据所要模拟的服务账号
- 创建短期有效凭据的身份
例如,假设用户 jamie@example.com
为主题 principal://iam.googleapis.com/projects/1234567890123/locations/global/workloadIdentityPools/aws-pool/subject/jamie@example.com
创建了一个联合令牌,然后使用联合令牌为服务账号创建短期凭据my-service-account@my-project.iam.gserviceaccount.com
中移除。
随后,该用户创建了新的 Pub/Sub 主题,并使用短期有效凭据来模拟服务账号。Pub/Sub 会生成一个日志条目,用于标识服务账号以及 IdP 的令牌主题:
{
"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"
}
}
后续步骤
- 为 IAM 配置和查看审核日志。
- 详细了解 Cloud Audit Logs。
- 使用工作负载身份池设置身份联合。
- 了解服务账号。