Halaman ini menunjukkan contoh log audit yang dibuat saat Anda menggunakan Workforce Identity Federation. Dengan Workforce Identity Federation, Anda dapat mengizinkan identitas pihak ketiga untuk mengakses resource Google Cloud, tanpa menggunakan kunci akun layanan.
Untuk informasi selengkapnya tentang cara mengaktifkan dan melihat log audit, lihat logging audit IAM.
IAM dapat menghasilkan log audit saat Anda membuat dan mengelola kumpulan tenaga kerja. Untuk mengaktifkan log audit saat mengelola kumpulan tenaga kerja, Anda harus mengaktifkan log audit untuk aktivitas Akses Data untuk API berikut:
- Identity and Access Management (IAM) API (mengaktifkan jenis log "Pembacaan Admin")
Guna mengonfigurasi log audit lebih lanjut untuk proses pertukaran token atau login konsol Google Cloud (gabungan), Anda juga harus mengaktifkan log audit untuk aktivitas Akses Data untuk hal berikut API:
- Security Token Service API (aktifkan jenis log "Pembacaan Admin")
Log untuk membuat kumpulan tenaga kerja
Contoh berikut menampilkan entri log untuk membuat kumpulan tenaga kerja. Dalam contoh
ini, pengguna sam@example.com
membuat kumpulan tenaga kerja dengan ID
my-pool
di bawah organisasi dengan ID 123456789012
.
{ "logName": "organizations/123456789012/logs/cloudaudit.googleapis.com%2Factivity", "protoPayload": { "@type": "type.googleapis.com/google.cloud.audit.AuditLog", "authenticationInfo": { "principalEmail": "sam@example.com", }, "methodName": "google.iam.admin.v1.WorkforcePools.CreateWorkforcePool", "resourceName": "locations/global/workforcePools/my-pool", "serviceName": "iam.googleapis.com", "request": { "@type": "type.googleapis.com/google.iam.admin.v1.CreateWorkforcePoolRequest", "workforcePool": { "parent": "organizations/123456789012" }, "workforcePoolId": "my-pool" } }, "resource": { "type": "audited_resource" } }
Log untuk menukar token IdP untuk token gabungan
Setelah menyiapkan kumpulan identitas tenaga kerja dan penyedia kumpulan identitas tenaga kerja, Anda dapat membuat token untuk penyedia identitas (IdP) dan menukarnya dengan token gabungan.
Setelah Anda mengaktifkan Cloud Audit Logs untuk aktivitas Akses Data, IAM akan menghasilkan entri log audit setiap kali akun utama bertukar token. Entri log ini mencakup kolom berikut:
protoPayload.authenticationInfo.principalSubject
: Subjek token IdP.- Untuk IdP OIDC, kolom ini berisi nilai klaim
sub
, atau subjek, dari token OIDC. - Untuk IdP SAML, kolom ini berisi nilai
sub-atribut
NameID
dari atributSubject
dalam pernyataan SAML.
- Untuk IdP OIDC, kolom ini berisi nilai klaim
protoPayload.metadata.mapped_principal
: Subjek token, menggunakan sintaksis IAM untuk mengidentifikasi akun utama:principal://iam.googleapis.com/locations/global/workforcePools/POOL_ID/subject/IDENTIFIER
protoPayload.resourceName
: Penyedia kumpulan tenaga kerja yang dikaitkan dengan token.
Contoh berikut menunjukkan entri log audit untuk permintaan penukaran token. Dalam contoh ini, token OIDC ditukar dengan token gabungan:
{ "logName": "organizations/123456789012/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/locations/global/workforcePools/oidc-pool/subject/a1234bcd-5678-9012-efa3-4b5cd678ef9a" }, "methodName": "google.identity.sts.v1.SecurityTokenService.ExchangeToken", "resourceName": "locations/global/workforcePools/oidc-pool/providers/oidc-provider", "serviceName": "sts.googleapis.com", "request": { "@type": "type.googleapis.com/google.identity.sts.v1.ExchangeTokenRequest", "audience": "//iam.googleapis.com/locations/global/workforcePools/oidc-pool/providers/oidc-provider", "grantType": "urn:ietf:params:oauth:grant-type:token-exchange", "requestedTokenType": "urn:ietf:params:oauth:token-type:access_token", "subjectTokenType": "urn:ietf:params:oauth:token-type:id_token" } }, "resource": { "type": "audited_resource" } }
Log untuk pernyataan SAML yang ditandatangani dan dienkripsi
Bagian ini menjelaskan entri log dari Cloud Audit Logs yang dibuat oleh Layanan Token Keamanan saat mencoba memverifikasi pernyataan SAML yang ditandatangani atau mendekripsi pernyataan terenkripsi yang dikirim dari IdP Anda.
Untuk Workforce Identity Federation, entri log terkait terlihat mirip dengan berikut ini:
"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/locations/global/workforcePools/WORKFORCE_POOL_NAME/providers/PROVIDER_NAME/keys/KEY_NAME" } ]
Output ini mencakup nilai-nilai berikut:
fingerprint
: representasi heksadesimal hash SHA-256 dari sertifikat X.509 yang digunakan untuk memverifikasi tanda tangan pada kredensial SAML. Sertifikat X.509 diekstrak dari metadata XML SAML yang dilampirkan ke penyedia workforce identity pool.resourceName
: nama resource kunci penyedia workforce identity pool kerja yang digunakan untuk mendekripsi pernyataan SAML terenkripsi. Kolom ini hanya ada jika federasi identitas menerima respons SAML terenkripsi dari IdP Anda.
Log untuk memanggil Google Cloud API dengan token gabungan
Setelah menukar token IdP dengan token gabungan, Anda dapat menggunakan token gabungan untuk memanggil Google Cloud API. Beberapa metode yang Anda panggil dapat menghasilkan log audit.
Contoh berikut menunjukkan entri log audit untuk permintaan guna mencantumkan bucket Cloud Storage dalam suatu project menggunakan token gabungan.
{ "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/locations/global/workforcePools/oidc-pool/subject/012345678901" }, "methodName": "storage.buckets.list", "serviceName": "storage.googleapis.com", }, "resource": { "type": "gcs_bucket" } }
Log untuk login (gabungan) konsol Google Cloud
Setelah Anda menyiapkan kumpulan identitas tenaga kerja dan IdP-nya, pengguna dapat login ke Google Cloud menggunakan konsol (gabungan).
Log untuk login yang berhasil
Bagian ini memberikan contoh entri Log Audit Cloud yang dicatat ke dalam log sebagai hasil dari
login yang berhasil. Dalam contoh ini, pengguna, user@example.com
, login
menggunakan locations/global/workforcePools/my-pool/providers/my-provider
penyedia. Dalam hal ini,
entri Cloud Audit Logs berikut akan dibuat:
{
"logName": "organizations/my-organization-id/logs/cloudaudit.googleapis.com%2Fdata_access",
"protoPayload": {
"@type": "type.googleapis.com/google.cloud.audit.AuditLog",
"authenticationInfo": {
"principalSubject": "user@example.com",
},
"serviceName": "sts.googleapis.com",
"methodName": "google.identity.sts.SecurityTokenService.WebSignIn",
"resourceName": "locations/global/workforcePools/my-pool/providers/my-provider",
"request": {
"@type": "type.googleapis.com/google.identity.sts.SecurityTokenService.WebSignInRequest",
"provider": "//iam.googleapis.com/locations/global/workforcePools/my-pool/providers/my-provider",
"continueUrl": "https://console.cloud.google",
"host": "http://auth.cloud.google",
},
"metadata": {
"mappedPrincipal": "principal://iam.googleapis.com/locations/global/workforcePools/my-pool/subject/user@example.com",
}
},
"resource": {
"type": "audited_resource",
"labels": {
"service": "sts.googleapis.com",
"method": "google.identity.sts.SecurityTokenService.WebSignIn",
}
},
}
Entri Cloud Audit Logs untuk penyedia SAML juga dapat berisi informasi kunci penandatanganan di kolom metadata.
{
"metadata": {
"mappedPrincipal": "principal://iam.googleapis.com/locations/global/workforcePools/my-pool/subject/user@example.com",
"keyInfo": [
{
"use": "verify",
"fingerprint": "AE:CK:LM:EF:LK:OG:EH:IJ:KN:AL:OM:AD:NO",
}
],
}
}
Log untuk login yang gagal
Bagian ini memberikan contoh entri Cloud Audit Logs yang dicatat ke dalam log sebagai hasil dari
login yang gagal. Dalam contoh ini, pengguna user@example.com
mencoba
login menggunakan locations/global/workforcePools/my-pool/providers/my-provider
penyedia, tetapi akses ditolak
karena kondisi atribut tidak terpenuhi. Dalam hal ini,
entri Cloud Audit Logs berikut akan dibuat:
{
"logName": "organizations/my-organization-id/logs/cloudaudit.googleapis.com%2Fdata_access",
"protoPayload": {
"@type": "type.googleapis.com/google.cloud.audit.AuditLog",
"authenticationInfo": {
"principalSubject": "user@example.com",
},
"status": {
"code": 3,
"message": "The given credential is rejected by the attribute condition.",
},
"serviceName": "sts.googleapis.com",
"methodName": "google.identity.sts.SecurityTokenService.WebSignIn",
"resourceName": "locations/global/workforcePools/my-pool/subject/user@example.com",
"request": {
"@type": "type.googleapis.com/google.identity.sts.SecurityTokenService.WebSignInRequest",
"provider": "//iam.googleapis.com/locations/global/workforcePools/my-pool/providers/my-provider",
"host": "http://auth.cloud.google",
},
"metadata": {
"mappedPrincipal": "principal://iam.googleapis.com/locations/global/workforcePools/my-pool/subject/user@example.com",
}
},
"resource": {
"type": "audited_resource",
"labels": {
"service": "sts.googleapis.com",
"method": "google.identity.sts.SecurityTokenService.WebSignIn",
}
},
}
Log untuk logout
Bagian ini memberikan contoh entri Log Audit Cloud yang dicatat ke dalam log sebagai hasil dari
peristiwa logout. Dalam contoh ini, pengguna user@example.com
, yang
login menggunakan locations/global/workforcePools/my-pool/providers/my-provider
penyedia akan memulai
logout. Dalam hal ini, entri Cloud Audit Logs berikut akan dibuat:
{
"logName": "organizations/my-organization-id/logs/cloudaudit.googleapis.com%2Fdata_access",
"protoPayload": {
"@type": "type.googleapis.com/google.cloud.audit.AuditLog",
"authenticationInfo": {
"principalSubject": "user@example.com",
},
"serviceName": "sts.googleapis.com",
"methodName": "google.identity.sts.SecurityTokenService.WebSignOut",
"resourceName": "locations/global/workforcePools/my-pool/providers/my-provider",
"request": {
"@type": "type.googleapis.com/google.identity.sts.SecurityTokenService.WebSignOutRequest",
"provider": "//iam.googleapis.com/locations/global/workforcePools/my-pool/providers/my-provider",
"host": "http://auth.cloud.google"
},
"metadata": {
"mappedPrincipal": "principal://iam.googleapis.com/locations/global/workforcePools/my-pool/subject/user@example.com",
}
},
"resource": {
"type": "audited_resource",
"labels": {
"service": "sts.googleapis.com",
"method": "google.identity.sts.SecurityTokenService.WebSignOut"
}
},
}
Log untuk login dengan alur OAuth
Setelah menyiapkan kumpulan identitas tenaga kerja dan penyedia kumpulan identitas tenaga kerja, Anda dapat menggunakan resource Google Cloud menggunakan alur OAuth.
Setelah Anda mengaktifkan Cloud Audit Logs untuk aktivitas log audit Akses Data, IAM akan membuat entri log audit setiap kali akun utama menggunakan alur OAuth untuk login. Entri log ini mencakup kolom berikut:
protoPayload.authenticationInfo.principalSubject
: Subjek token IdP.- Untuk IdP OIDC, kolom ini berisi nilai klaim
sub
, atau subjek, dari token OIDC. - Untuk IdP SAML, kolom ini berisi nilai
sub-atribut
NameID
dari atributSubject
dalam pernyataan SAML.
- Untuk IdP OIDC, kolom ini berisi nilai klaim
protoPayload.metadata.mapped_principal
: Subjek token, menggunakan sintaksis IAM untuk mengidentifikasi akun utama:principal://iam.googleapis.com/locations/global/workforcePools/POOL_ID/subject/IDENTIFIER
protoPayload.resourceName
: Penyedia kumpulan tenaga kerja yang dikaitkan dengan token.
Contoh berikut menunjukkan entri log audit untuk permintaan penukaran token. Dalam contoh ini, akun utama digabungkan menggunakan penyedia OIDC:
{ "logName": "organizations/123456789012/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/locations/global/workforcePools/POOL_ID/subject/IDENTIFIER" }, "methodName": "google.identity.sts.v1.SecurityTokenService.ExchangeOauthToken", "resourceName": "locations/global/workforcePools/POOL_ID/providers/WORKFORCE_PROVIDER_ID", "serviceName": "sts.googleapis.com", "request": { "@type": "type.googleapis.com/google.identity.sts.v1.ExchangeOauthTokenRequest", "grantType": "authorization_code", } }, "resource": { "type": "audited_resource" } }
Langkah selanjutnya
- Mengonfigurasi dan melihat log audit untuk IAM.
- Dapatkan informasi selengkapnya tentang Cloud Audit Logs.
- Siapkan Workforce Identity Federation menggunakan workforce identity pool.