Panduan ini menjelaskan cara menggunakan Workload Identity Federation dengan sertifikat X.509 yang diterbitkan oleh certificate authority (CA) Anda untuk melakukan autentikasi ke Google Cloud dan mengakses resource Google Cloud.
Jika workload Anda memiliki sertifikat klien mTLS, Anda dapat melakukan autentikasi ke Google Cloud dengan mendaftarkan satu atau beberapa CA ke Workload Identity Federation sebagai anchor kepercayaan. Anda juga dapat mendaftarkan CA perantara.
Dengan menggunakan Workload Identity Federation, Anda dapat mengizinkan workload ini mendapatkan kredensial Google Cloud jangka pendek melalui koneksi TLS bersama (mTLS). Workload dapat menggunakan kredensial jangka pendek ini untuk mengakses Google Cloud API.
Konsep
Konsep federasi berbasis sertifikat X.509 mencakup hal berikut:
Anchor kepercayaan adalah sertifikat CA yang dianggap sebagai root kepercayaan. Setiap rantai sertifikat klien harus dirantai ke salah satu anchor kepercayaan.
CA perantara adalah sertifikat certificate authority opsional yang membantu membuat rantai sertifikat klien.
Trust store berisi sertifikat anchor kepercayaan dan sertifikat CA perantara yang digunakan untuk memvalidasi rantai sertifikat klien. CA menerbitkan sertifikat tepercaya untuk klien.
Anda dapat mengupload jenis sertifikat klien berikut ke trust store:
- Sertifikat yang dikeluarkan oleh CA pihak ketiga pilihan Anda
- Sertifikat yang diterbitkan oleh CA pribadi Anda
- Sertifikat yang ditandatangani, seperti yang dijelaskan dalam Membuat sertifikat yang ditandatangani sendiri
Sebelum memulai
Untuk mulai mengonfigurasi Workload Identity Federation, lakukan langkah berikut:
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Sebaiknya Anda
menggunakan project khusus untuk mengelola workload identity pool dan penyedia workload.
-
Make sure that billing is enabled for your Google Cloud project.
Enable the IAM, Resource Manager, Service Account Credentials, and Security Token Service APIs.
Peran yang diperlukan
Untuk mendapatkan izin yang diperlukan guna mengonfigurasi Workload Identity Federation, minta administrator untuk memberi Anda peran IAM berikut pada project:
-
Admin Workload Identity Pool (
roles/iam.workloadIdentityPoolAdmin
) -
Service Account Admin (
roles/iam.serviceAccountAdmin
)
Untuk mengetahui informasi selengkapnya tentang cara memberikan peran, lihat Mengelola akses ke project, folder, dan organisasi.
Anda mungkin juga bisa mendapatkan izin yang diperlukan melalui peran khusus atau peran bawaan lainnya.
Peran dasar pemilik IAM (roles/owner
) juga
mencakup izin untuk mengonfigurasi penggabungan identitas.
Anda tidak boleh memberikan peran dasar dalam lingkungan produksi, tetapi Anda dapat memberikannya dalam
lingkungan pengembangan atau pengujian.
Mengonfigurasi Workload Identity Federation
Bagian ini menunjukkan cara mengonfigurasi Workload Identity Federation dan trust store Anda. Anda hanya perlu melakukan langkah-langkah ini satu kali untuk setiap trust store. Anda kemudian dapat menggunakan workload identity pool dan penyedia workload yang sama untuk beberapa workload dan di beberapa project Google Cloud.
Membuat dan mengonfigurasi trust store
Bagian ini menunjukkan cara membuat file konfigurasi YAML trust store dan sertifikat CA yang ditandatangani sendiri.
Membuat kunci dan sertifikat yang ditandatangani
Bagian ini menggunakan perintah openssl
untuk membuat sertifikat root dan
antara.
Jika sudah memiliki sertifikat, Anda dapat melewati langkah ini dan melanjutkan ke Memformat sertifikat.
Untuk membuat root certificate dan sertifikat
antara yang ditandatangani dengan kolom keyUsage
dan extendedKeyUsage
yang valid, lakukan
hal berikut:
Buat file
example.cnf
contoh dengan konfigurasi minimum yang diperlukan untuk membuat sertifikat penandatanganan yang valid. Anda dapat mengedit file ini untuk menetapkan kolom tambahan pada sertifikat ini.cat > example.cnf << EOF [req] distinguished_name = empty_distinguished_name [empty_distinguished_name] # Kept empty to allow setting via -subj command line arg. [ca_exts] basicConstraints=critical,CA:TRUE keyUsage=keyCertSign extendedKeyUsage=clientAuth EOF
Buat root certificate:
openssl req -x509 \ -new -sha256 -newkey rsa:2048 -nodes \ -days 3650 -subj '/CN=root' \ -config example.cnf \ -extensions ca_exts \ -keyout root.key -out root.cert
Buat permintaan penandatanganan untuk sertifikat perantara:
openssl req \ -new -sha256 -newkey rsa:2048 -nodes \ -subj '/CN=int' \ -config example.cnf \ -extensions ca_exts \ -keyout int.key -out int.req
Buat sertifikat intermediate:
openssl x509 -req \ -CAkey root.key -CA root.cert \ -set_serial 1 \ -days 3650 \ -extfile example.cnf \ -extensions ca_exts \ -in int.req -out int.cert
Memformat sertifikat
Untuk menyertakan sertifikat baru atau yang sudah ada di trust store, format sertifikat menjadi satu baris dan simpan di variabel lingkungan, sehingga dapat dibaca ke dalam file YAML. Sertifikat harus berformat PEM. Untuk memformat sertifikat dan menyimpan sertifikat dalam variabel lingkungan, lakukan hal berikut:
Simpan root certificate sebagai string satu baris:
export ROOT_CERT=$(cat root.cert | sed 's/^[ ]*//g' | sed -z '$ s/\n$//' | tr '\n' $ | sed 's/\$/\\n/g')
Simpan intermediate certificate sebagai string satu baris:
export INTERMEDIATE_CERT=$(cat int.cert | sed 's/^[ ]*//g' | sed -z '$ s/\n$//' | tr '\n' $ | sed 's/\$/\\n/g')
Membuat file YAML truststore
Di bagian ini, Anda akan membuat file YAML trust store yang berisi anchor kepercayaan dan CA perantara.
Untuk membuat file YAML trust store, jalankan perintah berikut. File ini berisi konten sertifikat dari variabel lingkungan
yang Anda buat di Memformat sertifikat. Untuk menambahkan anchor kepercayaan tambahan, tambahkan entri trustAnchors
tambahan di bagian trustStore
.
Untuk menambahkan sertifikat CA perantara tambahan, tambahkan entri intermediateCas
tambahan di bagian trustStore
.
cat << EOF > trust_store.yaml
trustStore:
trustAnchors:
- pemCertificate: "${ROOT_CERT}"
intermediateCas:
- pemCertificate: "${INTERMEDIATE_CERT}"
EOF
Menentukan pemetaan dan kondisi atribut
Sertifikat X.509 klien dapat berisi beberapa atribut.
Anda harus memilih atribut yang ingin digunakan sebagai ID subjek dengan memetakan
google.subject
di Google Cloud ke atribut dari sertifikat Anda.
Misalnya, jika atribut dalam sertifikat adalah
nama umum subjek, pemetaan akan menjadi sebagai berikut:
google.subject=assertion.subject.dn.cn
Secara opsional, Anda dapat memetakan atribut tambahan. Selanjutnya, Anda dapat merujuk ke atribut ini saat memberikan akses ke resource.
Pemetaan atribut Anda dapat menggunakan atribut dalam sertifikat klien, termasuk berikut ini:
serialNumberHex
: nomor serisubject.dn.cn
: nama umum subjeksubject.dn.o
: nama organisasi subjeksubject.dn.ou
: unit organisasi subjekissuer.dn.cn
: nama umum penerbitissuer.dn.o
: nama organisasi penerbitissuer.dn.ou
: unit organisasi penerbitsan.dns
: nama DNS pertama nama alternatif subjeksan.uri
: URI pertama nama alternatif subjek
Anda harus memetakan salah satu atribut ini ke google.subject
untuk mengidentifikasi
subjek secara unik. Untuk melindungi dari ancaman spoofing, pilih atribut dengan nilai unik
yang tidak dapat diubah. Secara default, ID google.subject
ditetapkan ke nama umum subjek sertifikat klien, assertion.subject.dn.cn
.
Opsional: Tentukan kondisi atribut.
Kondisi atribut adalah ekspresi CEL yang dapat memeriksa atribut pernyataan dan
atribut target. Jika kondisi atribut dievaluasi ke true
untuk kredensial
tertentu, kredensial tersebut akan diterima. Jika tidak, kredensial akan ditolak.
Anda dapat menggunakan kondisi atribut untuk membatasi subjek yang dapat menggunakan Workload Identity Federation untuk mendapatkan token Google Cloud dengan masa berlaku singkat.
Misalnya, kondisi berikut membatasi akses ke sertifikat klien
yang berisi ID SPIFFE spiffe://example/path
:
assertion.san.uri=="spiffe://example/path"
Membuat workload identity pool dan penyedia workload
Untuk membuat workload identity pool baru, jalankan perintah berikut:
gcloud iam workload-identity-pools create POOL_ID \ --location="global" \ --description="DESCRIPTION" \ --display-name="DISPLAY_NAME"
Ganti kode berikut:
POOL_ID
: ID unik untuk pool.DISPLAY_NAME
: nama pool.DESCRIPTION
: deskripsi pool yang Anda pilih. Deskripsi ini muncul saat Anda memberikan akses ke identitas pool.
Untuk menambahkan penyedia workload identity pool X.509, jalankan perintah berikut:
gcloud iam workload-identity-pools providers create-x509 PROVIDER_ID \ --location=global \ --workload-identity-pool="POOL_ID" \ --trust-store-config-path="TRUST_STORE_CONFIG" \ --attribute-mapping="MAPPINGS" \ --attribute-condition="CONDITIONS" \ --billing-project="ALLOWLISTED_PROJECT"
Ganti kode berikut:
PROVIDER_ID
: ID penyedia unik untuk workload identity pool yang Anda pilih.POOL_ID
: ID workload identity pool yang telah Anda buat sebelumnya.TRUST_STORE_CONFIG
: File YAML trust store.MAPPINGS
: Daftar yang dipisahkan koma untuk pemetaan atribut yang telah Anda buat sebelumnya dalam panduan ini. Jika Anda tidak menentukangoogle.subject
, pemetaan defaultnya akan menjadigoogle.subject=assertion.subject.dn.cn
CONDITIONS
: Kondisi atribut opsional yang telah Anda buat sebelumnya dalam panduan ini. Hapus parameter jika Anda tidak memiliki kondisi atribut.ALLOWLISTED_PROJECT
: Project ID.
Mengautentikasi workload
Langkah ini harus dilakukan satu kali untuk setiap workload.
Mengizinkan workload eksternal Anda mengakses resource Google Cloud
Untuk memberi beban kerja Anda akses ke resource Google Cloud, sebaiknya Anda memberikan akses resource langsung ke akun utama. Dalam hal ini, prinsipal adalah pengguna gabungan. Beberapa produk Google Cloud memiliki batasan Google Cloud API. Jika beban kerja Anda memanggil endpoint API yang memiliki batasan, Anda dapat menggunakan peniruan identitas akun layanan. Dalam hal ini, akun utama adalah akun layanan Google Cloud, yang bertindak sebagai identitas. Anda memberikan akses ke akun layanan di resource.
Akses resource langsung
Anda dapat memberikan akses ke identitas gabungan langsung di resource menggunakan konsol Google Cloud atau gcloud CLI.
Konsol
Untuk menggunakan konsol Google Cloud guna memberikan peran IAM
langsung di resource, Anda harus membuka halaman resource, lalu
memberikan peran. Contoh berikut menunjukkan cara membuka
halaman Cloud Storage dan memberikan peran Storage Object Viewer
(roles/storage.objectViewer
) ke identitas gabungan langsung di
bucket Cloud Storage.
- Di Konsol Google Cloud, buka halaman Bucket Cloud Storage.
Pada daftar bucket, klik nama bucket tempat Anda ingin memberi peran.
Pilih tab Permissions di dekat bagian atas halaman.
Klik tombol add_box Berikan akses.
Dialog Add principals akan muncul.
Di kolom Akun utama baru, masukkan satu atau beberapa identitas yang memerlukan akses ke bucket Anda.
Menurut subjek
principal://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID/subject/SUBJECT
Ganti kode berikut:
PROJECT_NUMBER
: nomor projectPOOL_ID
: ID workload poolSUBJECT
: subjek individu yang dipetakan dari IdP Anda—misalnya,administrator@example.com
Menurut grup
principalSet://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID/group/GROUP
Ganti kode berikut:
PROJECT_NUMBER
: nomor projectWORKLOAD_POOL_ID
: ID workload poolGROUP
: grup yang dipetakan dari IdP Anda—misalnya:administrator-group@example.com
Menurut atribut
principalSet://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID/attribute.ATTRIBUTE_NAME/ATTRIBUTE_VALUE
Ganti kode berikut:
PROJECT_NUMBER
: nomor projectWORKLOAD_POOL_ID
: ID workload poolATTRIBUTE_NAME
: salah satu atribut yang dipetakan dari IdP AndaATTRIBUTE_VALUE
: nilai atribut
Pilih satu (atau beberapa) peran dari menu drop-down Pilih peran. Peran yang Anda pilih akan muncul di panel dengan deskripsi singkat tentang izin yang diberikan.
Klik Simpan.
gcloud
Untuk menggunakan gcloud CLI guna memberikan peran IAM pada resource dalam project, lakukan tindakan berikut:
Dapatkan nomor project dari project tempat resource ditentukan.
gcloud projects describe $(gcloud config get-value core/project) --format=value\(projectNumber\)
Berikan akses ke resource.
Untuk menggunakan gcloud CLI guna memberikan peran Storage Object Viewer (
roles/storage.objectViewer
) ke identitas eksternal yang memenuhi kriteria tertentu, jalankan perintah berikut.Menurut subjek
gcloud storage buckets add-iam-policy-binding BUCKET_ID \ --role=roles/storage.objectViewer \ --member="principal://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID/subject/SUBJECT"
Menurut grup
gcloud storage buckets add-iam-policy-binding BUCKET_ID \ --role=roles/storage.objectViewer \ --member="principalSet://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID/group/GROUP"
Menurut atribut
gcloud storage buckets add-iam-policy-binding BUCKET_ID \ --role=roles/storage.objectViewer \ --member="principalSet://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID/attribute.ATTRIBUTE_NAME/ATTRIBUTE_VALUE"
Ganti kode berikut:
BUCKET_ID
: bucket tempat akses akan diberikanPROJECT_NUMBER
: nomor project dari project yang berisi workload identity poolPOOL_ID
: ID pool dari workload identity poolSUBJECT
: nilai yang diharapkan untuk atribut yang Anda petakan kegoogle.subject
GROUP
: nilai yang diharapkan untuk atribut yang Anda petakan kegoogle.groups
ATTRIBUTE_NAME
: nama atribut khusus dalam pemetaan atribut AndaATTRIBUTE_VALUE
: nilai atribut kustom dalam pemetaan atribut Anda
Anda dapat memberikan peran di resource Google Cloud mana pun yang mendukung kebijakan izin IAM.
Peniruan akun layanan
Untuk membuat akun layanan bagi beban kerja eksternal, lakukan langkah-langkah berikut:
Enable the IAM, Security Token Service, and Service Account Credentials APIs.
Buat akun layanan yang merepresentasikan workload. Sebaiknya Anda menggunakan akun layanan khusus untuk setiap workload. Akun layanan tidak perlu berada dalam project yang sama dengan workload identity pool, tetapi Anda harus merujuk ke project yang berisi akun layanan.
Berikan akses akun layanan untuk resource yang ingin diakses oleh identitas eksternal.
Berikan peran Workload Identity User (
roles/iam.workloadIdentityUser
) ke akun layanan.
Untuk memberikan akses ke identitas gabungan menggunakan peniruan identitas akun layanan menggunakan Konsol Google Cloud atau gcloud CLI:
Konsol
Untuk menggunakan konsol Google Cloud guna memberikan peran IAM ke identitas gabungan dengan akun layanan, lakukan tindakan berikut:
Akun Layanan dalam project yang sama
Untuk memberikan akses menggunakan peniruan identitas akun layanan untuk akun layanan di project yang sama, lakukan hal berikut:
Buka halaman Workload Identity Pool.
Pilih Berikan akses.
Pada dialog Grant access to service account, pilih Grant access using Service Account impersonation.
Dalam daftar Akun layanan, pilih akun layanan untuk ditiru oleh identitas eksternal, lalu lakukan hal berikut:
Untuk memilih identitas dalam kumpulan yang dapat meniru identitas akun layanan, lakukan salah satu tindakan berikut:
Untuk mengizinkan hanya identitas tertentu dari workload identity pool untuk meniru identitas akun layanan, pilih Hanya identitas yang cocok dengan filter.
Di daftar Nama atribut, pilih atribut yang ingin Anda filter.
Di kolom Nilai atribut, masukkan nilai atribut yang diharapkan; misalnya, jika Anda menggunakan pemetaan atribut
google.subject=assertion.sub
, tetapkan nama Atribut menjadisubject
dan Nilai atribut menjadi nilai klaimsub
dalam token yang dikeluarkan oleh penyedia identitas eksternal Anda.
Untuk menyimpan konfigurasi, klik Simpan, lalu Tutup.
Akun layanan di project lain
Untuk memberikan akses menggunakan peniruan akun layanan untuk akun layanan di project lain, lakukan hal berikut:
Buka halaman Akun Layanan.
Pilih akun layanan yang ingin Anda tirukan identitasnya.
Klik Kelola akses.
Klik Tambahkan akun utama.
Di kolom New principal, masukkan salah satu ID akun utama berikut untuk identitas dalam kumpulan Anda yang akan meniru identitas akun layanan.
Menurut subjek
principal://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID/subject/SUBJECT
Ganti kode berikut:
PROJECT_NUMBER
: nomor projectPOOL_ID
: ID workload poolSUBJECT
: subjek individu yang dipetakan dari IdP Anda—misalnya,administrator@example.com
Menurut grup
principalSet://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID/group/GROUP
Ganti kode berikut:
PROJECT_NUMBER
: nomor projectWORKLOAD_POOL_ID
: ID workload poolGROUP
: grup yang dipetakan dari IdP Anda—misalnya:administrator-group@example.com
Menurut atribut
principalSet://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID/attribute.ATTRIBUTE_NAME/ATTRIBUTE_VALUE
Ganti kode berikut:
PROJECT_NUMBER
: nomor projectWORKLOAD_POOL_ID
: ID workload poolATTRIBUTE_NAME
: salah satu atribut yang dipetakan dari IdP AndaATTRIBUTE_VALUE
: nilai atribut
Menurut kolam renang
principalSet://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID/*
Ganti kode berikut:
PROJECT_NUMBER
: nomor projectWORKLOAD_POOL_ID
: ID workload pool
Di Select a role, pilih peran Workload Identity User (
roles/iam.workloadIdentityUser
).Untuk menyimpan konfigurasi, klik Simpan.
gcloud
Untuk menggunakan gcloud CLI guna memberikan peran Pemilik Workload Identity (roles/iam.workloadIdentityUser
)
ke identitas eksternal yang memenuhi kriteria tertentu, jalankan perintah
berikut.
Menurut subjek
gcloud iam service-accounts add-iam-policy-binding SERVICE_ACCOUNT_EMAIL \ --role=roles/iam.workloadIdentityUser \ --member="principal://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID/subject/SUBJECT"
Menurut grup
gcloud iam service-accounts add-iam-policy-binding SERVICE_ACCOUNT_EMAIL \ --role=roles/iam.workloadIdentityUser \ --member="principalSet://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID/group/GROUP"
Menurut atribut
gcloud iam service-accounts add-iam-policy-binding SERVICE_ACCOUNT_EMAIL \ --role=roles/iam.workloadIdentityUser \ --member="principalSet://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID/attribute.ATTRIBUTE_NAME/ATTRIBUTE_VALUE"
Ganti kode berikut:
SERVICE_ACCOUNT_EMAIL
: alamat email akun layananPROJECT_NUMBER
: nomor project dari project yang berisi workload identity poolPOOL_ID
: ID pool dari workload identity poolSUBJECT
: nilai yang diharapkan untuk atribut yang Anda petakan kegoogle.subject
GROUP
: nilai yang diharapkan untuk atribut yang Anda petakan kegoogle.groups
ATTRIBUTE_NAME
: nama atribut khusus dalam pemetaan atribut AndaATTRIBUTE_VALUE
: nilai atribut kustom dalam pemetaan atribut Anda
Mendownload atau membuat konfigurasi kredensial
Library Klien Cloud dan gcloud CLI dapat otomatis memperoleh kredensial eksternal, dan menggunakannya untuk meniru identitas akun layanan. Agar library dan alat dapat menyelesaikan proses ini, Anda harus menyediakan file konfigurasi kredensial. File ini menentukan hal berikut:
- Tempat Anda bisa memperoleh kredensial eksternal
- Workload identity pool dan penyedia workload identity yang akan digunakan
- Akun layanan yang akan ditiru
Selain itu, untuk federasi sertifikat X.509, file konfigurasi sertifikat diperlukan. File ini berisi jalur ke file kunci pribadi dan sertifikat klien X.509.
Untuk membuat file konfigurasi kredensial dan sertifikat, lakukan hal berikut:
Akses resource langsung
Untuk membuat file konfigurasi kredensial dan sertifikat untuk akses resource langsung menggunakan
gcloud iam workload-identity-pools create-cred-config
,
lakukan hal berikut:
Buat file konfigurasi kredensial dan sertifikat yang memungkinkan library memperoleh token akses menggunakan sertifikat X.509.
gcloud iam workload-identity-pools create-cred-config projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID/providers/PROVIDER_ID \ --credential-cert-path CLIENT_CERT_PATH \ --credential-cert-private-key-path CLIENT_KEY_PATH \ --output-file=FILEPATH.json
Ganti kode berikut:
PROJECT_NUMBER
: Nomor project dari project yang berisi workload identity pool.POOL_ID
: ID workload identity pool.PROVIDER_ID
: ID penyedia workload identity pool.CLIENT_CERT_PATH
: Jalur file sertifikat klien.CLIENT_KEY_PATH
: Jalur file kunci pribadi sertifikat klien.FILEPATH
: File untuk menyimpan konfigurasi.
Menjalankan perintah ini juga akan membuat file konfigurasi sertifikat dan menyimpan file tersebut di lokasi Google Cloud CLI default:
Linux dan macOS:
~/.config/gcloud/certificate_config.json
Windows:
%APPDATA%\gcloud\certificate_config.json
Peniruan akun layanan
Untuk membuat file konfigurasi kredensial dan sertifikat dengan peniruan identitas akun layanan menggunakan
gcloud iam workload-identity-pools create-cred-config
,
lakukan hal berikut:
Buat file konfigurasi kredensial dan sertifikat yang memungkinkan library memperoleh token akses menggunakan sertifikat X.509.
gcloud iam workload-identity-pools create-cred-config \ projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID/providers/PROVIDER_ID \ --service-account=SERVICE_ACCOUNT_EMAIL \ --service-account-token-lifetime-seconds=SERVICE_ACCOUNT_TOKEN_LIFETIME \ --credential-cert-path CLIENT_CERT_PATH \ --credential-cert-private-key-path CLIENT_KEY_PATH \ --output-file=FILEPATH.json
Ganti kode berikut:
PROJECT_NUMBER
: Nomor project dari project yang berisi workload identity pool.POOL_ID
: ID workload identity pool.PROVIDER_ID
: ID penyedia workload identity pool.SERVICE_ACCOUNT_EMAIL
: Jika Anda menggunakan peniruan identitas akun layanan, ganti dengan alamat email akun layanan.SERVICE_ACCOUNT_TOKEN_LIFETIME
: Jika Anda menggunakan peniruan identitas akun layanan, masa aktif token akses akun layanan, dalam hitungan detik. Jika masa aktif tidak diberikan, default-nya adalah satu jam. Hapus tanda ini jika Anda tidak menggunakan peniruan akun layanan. Untuk menentukan masa aktif agar lebih lama dari satu jam, Anda harus mengonfigurasi batasan kebijakan organisasiconstraints/iam.allowServiceAccountCredentialLifetimeExtension
.CLIENT_CERT_PATH
: Jalur file sertifikat klien.CLIENT_KEY_PATH
: Jalur file kunci pribadi sertifikat klien.FILEPATH
: File untuk menyimpan konfigurasi.
Menjalankan perintah ini juga akan membuat file konfigurasi sertifikat dan menyimpan file tersebut di lokasi Google Cloud CLI default:
Linux dan macOS:
~/.config/gcloud/certificate_config.json
Windows:
%APPDATA%\gcloud\certificate_config.json
Menggunakan konfigurasi kredensial untuk mengakses Google Cloud
Untuk mengizinkan alat dan library klien menggunakan konfigurasi kredensial Anda, lakukan hal berikut:
Lakukan inisialisasi variabel lingkungan
GOOGLE_APPLICATION_CREDENTIALS
dan arahkan ke file konfigurasi kredensial:Bash
denganexport GOOGLE_APPLICATION_CREDENTIALS=`pwd`/FILEPATH.json
FILEPATH
adalah jalur relatif ke file konfigurasi kredensial.PowerShell
dengan$env:GOOGLE_APPLICATION_CREDENTIALS = Resolve-Path 'FILEPATH.json'
FILEPATH
adalah jalur relatif ke file konfigurasi kredensial.Pastikan library klien dapat menemukan file konfigurasi sertifikat. File konfigurasi sertifikat harus disimpan di lokasi Google Cloud CLI default:
Linux dan macOS:
~/.config/gcloud/certificate_config.json
Windows:
%APPDATA%\gcloud\certificate_config.json
atau ditunjuk oleh variabel lingkungan
GOOGLE_API_CERTIFICATE_CONFIG
.Gunakan library klien atau alat yang mendukung Workload Identity Federation dan dapat menemukan kredensial secara otomatis:
Go
Library klien untuk Go mendukung X.509 Workload Identity Federation jika menggunakan
modul cloud.google.com/go/auth
versi 0.8.0 atau yang lebih baru dan
modul google.golang.org/api
versi 0.189.0.
Untuk memeriksa versi modul yang digunakan library klien Anda, jalankan perintah berikut saat berada di direktori yang berisi file go.mod untuk modul Anda:
go list -m cloud.google.com/go/auth
go list -m cloud.google.com/api
Python
Library klien untuk Python mendukung X.509 Workload Identity Federation jika menggunakan
paket google-auth
versi 2.32.0 atau yang lebih baru
Untuk memeriksa versi paket yang digunakan library klien Anda, jalankan perintah berikut di lingkungan tempat paket diinstal:
pip show google-auth
Untuk menentukan project ID bagi klien autentikasi, Anda dapat menetapkan
variabel lingkungan GOOGLE_CLOUD_PROJECT
atau mengizinkan klien untuk otomatis
menemukan project ID. Untuk otomatis menemukan project ID,
akun layanan dalam file konfigurasi harus memiliki peran Browser (roles/browser
),
atau peran dengan izin yang setara, di project Anda. Untuk mengetahui detailnya, lihat
panduan pengguna untuk paket google-auth
.
gcloud
Untuk melakukan autentikasi menggunakan X.509 Workload Identity Federation, gunakan
perintah gcloud auth login
:
gcloud auth login --cred-file=FILEPATH.json
Ganti FILEPATH
dengan jalur ke file konfigurasi kredensial.
Dukungan untuk X.509 Workload Identity Federation di gcloud CLI tersedia di gcloud CLI versi 488.0.0 dan versi lebih baru.
Mendapatkan token akses menggunakan permintaan biasa untuk mengakses Google Cloud
Untuk mendapatkan token akses, lakukan langkah berikut:
Gunakan curl untuk melakukan pertukaran token dengan mTLS dan sertifikat klien:
curl --key CLIENT_CERT_KEY \ --cert CLIENT_CERT \ --request POST 'https://sts.mtls.googleapis.com/v1/token' \ --header "Content-Type: application/json" \ --data-raw '{ "subject_token_type": "urn:ietf:params:oauth:token-type:mtls", "grant_type": "urn:ietf:params:oauth:grant-type:token-exchange", "audience": "WORKLOAD_IDENTITY_POOL_URI", "requested_token_type": "urn:ietf:params:oauth:token-type:access_token", "scope": "https://www.googleapis.com/auth/cloud-platform", }'
Ganti kode berikut:
CLIENT_CERT_KEY
: kunci pribadi sertifikat klienCLIENT_CERT
: sertifikat klienWORKLOAD_IDENTITY_POOL_URI
: URL penyedia workload identity pool dalam format berikut://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID/providers/PROVIDER_ID
Gunakan token akses pembawa yang dibuat di langkah sebelumnya untuk mengakses resource Google Cloud—misalnya:
curl -X GET 'https://storage.googleapis.com/my_object' -H "Authorization: Bearer $ACCESS_TOKEN"
Kuota dan batas
Tabel berikut mencantumkan kuota dan batas.
Item | Kuota dan batas | Catatan |
---|---|---|
Jumlah anchor kepercayaan | Batas: 3 | Setiap sertifikat tidak boleh melebihi 32 KB. |
Jumlah intermediate certificate | Batas: 10 | Setiap sertifikat tidak boleh melebihi 32 KB. |
Jumlah batasan nama yang diizinkan selama validasi root dan sertifikat intermediate | Batas: 10 | |
Sertifikat perantara yang memiliki informasi Subjek dan Kunci Publik Subjek yang sama | Batas: 5 | Batas ini berlaku untuk setiap trust store. |
Kedalaman rantai sertifikat | Batas: 5 | Kedalaman maksimum untuk rantai sertifikat, termasuk root dan sertifikat klien. |
Frekuensi sertifikat perantara dapat dievaluasi saat mencoba membuat rantai kepercayaan | Batas: 100 | |
Kunci sertifikat yang diupload dan diteruskan dari klien | Batas: Kunci RSA dapat berukuran 2048 hingga 4096 bit Sertifikat ECDSA harus menggunakan kurva P-256 atau P-384 |
RSA-2048 dan P-256 direkomendasikan untuk kasus penggunaan normal, gunakan yang lain untuk praktik keamanan terbaik |
Langkah selanjutnya
- Baca selengkapnya tentang Workload Identity Federation.
- Pelajari praktik terbaik untuk menggunakan Workload Identity Federation.
- Lihat cara mengelola workload identity pool dan penyedia workload identity.