本頁面提供使用 Workload Identity Federation 時產生的稽核記錄範例。透過 Workload Identity 聯盟,您可以允許地端部署或多雲端工作負載存取 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 Resource Name (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 稽核記錄記錄項目。
如果是 Workload Identity 聯盟,相關的記錄項目如下所示:
"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 雜湊十六進位表示法。系統會從附加至工作負載身分集區提供者的 SAML XML 中繼資料中,擷取 X.509 憑證。resourceName
:用於解密加密 SAML 判斷的 workload 身分集區提供者金鑰資源名稱。只有在身分同盟收到來自 IdP 的加密 SAML 回應時,才會顯示這個欄位。
X.509 聯盟的記錄
本節說明 Security Token Service 嘗試使用預先設定的信任儲存區驗證 mTLS 用戶端憑證時,建立的 Cloud 稽核記錄記錄項目。
如果是 Workload Identity 聯盟,相關的記錄項目如下所示:
"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 CloudAPI 時,使用憑證模擬服務帳戶。
您呼叫的部分方法可能會產生稽核記錄。一般來說,這些記錄項目會顯示下列身分:
- 短期憑證模擬的服務帳戶
- 建立短期憑證的身分
舉例來說,假設使用者 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 稽核記錄。
- 使用工作負載身分集區設定身分聯盟。
- 瞭解服務帳戶。