Panduan ini menjelaskan cara menggunakan Workload Identity Federation dengan sertifikat X.509 yang diterbitkan oleh certificate authority (CA) Anda untuk melakukan autentikasi ke Trusted Cloud dan mengakses Trusted Cloud resource.
Jika workload Anda memiliki sertifikat klien mTLS, Anda dapat melakukan autentikasi ke Trusted Cloud dengan mendaftarkan satu atau beberapa CA ke Workload Identity Federation sebagai anchor tepercaya. Anda juga dapat mendaftarkan CA perantara.
Dengan menggunakan Workload Identity Federation, Anda dapat mengizinkan workload ini mendapatkan kredensial Trusted Cloud dengan masa aktif singkat melalui koneksi TLS timbal balik (mTLS). Workload dapat menggunakan kredensial jangka pendek ini untuk mengakses Trusted Cloud API.
Konsep
Konsep federasi berbasis sertifikat X.509 mencakup hal berikut:
Anchor kepercayaan adalah sertifikat CA yang dianggap sebagai root kepercayaan. Semua rantai sertifikat klien harus dirantai hingga salah satu anchor tepercaya.
CA perantara adalah sertifikat certificate authority opsional yang membantu membangun rantai sertifikat klien.
Trust store berisi sertifikat trust anchor 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 diterbitkan 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 hal berikut:
-
In the Trusted Cloud console, on the project selector page, select or create a Trusted Cloud project.
Sebaiknya Anda
menggunakan project khusus untuk mengelola workload identity pool dan penyedia workload.
-
Verify that billing is enabled for your Trusted 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 Anda 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.
Membuat penyimpanan tepercaya
Bagian ini menunjukkan cara membuat penyimpanan tepercaya. Pada tingkat tinggi, langkah-langkahnya adalah sebagai berikut:
Membuat sertifikat yang ditandatangani sendiri
Bagian ini menunjukkan cara membuat kunci dan membuat sertifikat bertanda tangan. Jika sudah membuat sertifikat, Anda dapat melewati bagian ini dan melanjutkan ke Memformat sertifikat.
Bagian ini menggunakan perintah openssl
untuk membuat sertifikat root dan sertifikat perantara.
Untuk membuat sertifikat root dan sertifikat perantara bertanda tangan dengan kolom keyUsage
dan extendedKeyUsage
yang valid, lakukan langkah-langkah berikut:
Buat file konfigurasi
openssl
untuk membuat sertifikat penandatanganan Anda. Setidaknya, file tersebut mirip dengan yang berikut, tetapi Anda dapat menetapkan kolom tambahan sesuai kebutuhan.cat > example.cnf << EOF [req] distinguished_name = empty_distinguished_name [empty_distinguished_name] # Kept empty to allow setting via -subj command-line argument. [ca_exts] basicConstraints=critical,CA:TRUE keyUsage=keyCertSign extendedKeyUsage=clientAuth [leaf_exts] keyUsage=critical,Digital Signature, Key Encipherment basicConstraints=critical, CA:FALSE EOF
Buat sertifikat root.
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 intermediate certificate.
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
Buat permintaan penandatanganan untuk sertifikat leaf.
openssl req -new -sha256 -newkey rsa:2048 -nodes \ -subj '/CN=example' \ -config example.cnf \ -extensions leaf_exts \ -keyout leaf.key -out leaf.req
Buat sertifikat leaf yang dikeluarkan oleh sertifikat perantara.
openssl x509 -req \ -CAkey int.key -CA int.cert \ -set_serial 1 -days 3650 \ -extfile example.cnf \ -extensions leaf_exts \ -in leaf.req -out leaf.cert
Memformat sertifikat
Untuk menyertakan sertifikat baru atau yang sudah ada dalam trust store, format sertifikat menjadi string satu baris, lalu simpan di variabel lingkungan. Sertifikat harus diformat PEM. Untuk memformat sertifikat dan menyimpannya dalam variabel lingkungan, lakukan langkah berikut:
Simpan sertifikat root sebagai string satu baris.
export ROOT_CERT=$(cat root.cert | sed 's/^[ ]*//g' | sed -z '$ s/\n$//' | tr '\n' $ | sed 's/\$/\\n/g')
Simpan sertifikat perantara sebagai string satu baris.
export INTERMEDIATE_CERT=$(cat int.cert | sed 's/^[ ]*//g' | sed -z '$ s/\n$//' | tr '\n' $ | sed 's/\$/\\n/g')
Buat penyimpanan tepercaya
Di bagian ini, Anda akan membuat trust store menggunakan file berformat YAML yang berisi anchor tepercaya dan CA perantara Anda.
File ini berisi konten sertifikat dari variabel lingkungan yang Anda buat di Memformat sertifikat. Untuk menambahkan anchor tepercaya tambahan, tambahkan entri trustAnchors
tambahan di bagian trustStore
.
Untuk menambahkan sertifikat CA perantara tambahan, tambahkan entri intermediateCas
tambahan di bagian trustStore
.
Untuk membuat file trust store, jalankan perintah berikut:
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 mana yang ingin digunakan sebagai ID subjek dengan memetakan
google.subject
di Trusted Cloud ke atribut dari sertifikat Anda.
Misalnya, jika atribut dalam sertifikat adalah
nama umum subjek, pemetaannya adalah 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 terakhir subjekissuer.dn.cn
: nama umum penerbitissuer.dn.o
: nama organisasi penerbitissuer.dn.ou
: unit organisasi terakhir penerbitsan.dns
: nama DNS pertama dari nama alternatif subjeksan.uri
: URI pertama nama alternatif subjeksha256Fingerprint
: Hash sertifikat leaf SHA256 (Base64)
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
disetel ke nama umum subjek sertifikat klien, assertion.subject.dn.cn
.
Secara opsional, Anda dapat menentukan 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 Trusted Cloud dengan masa berlaku singkat.
Misalnya, kondisi berikut membatasi akses ke sertifikat klien
yang berisi SPIFFE ID spiffe://example/path
:
assertion.san.uri=="spiffe://example/path"
Mengonfigurasi Workload Identity Federation
Bagian ini menunjukkan cara mengonfigurasi workload identity pool dan penyedia workload identity pool. Anda hanya perlu melakukan langkah-langkah ini satu kali untuk setiap penyimpanan tepercaya. Kemudian, Anda dapat menggunakan workload identity pool dan penyedia workload yang sama untuk beberapa workload dan di beberapa project. Trusted Cloud
Buat workload identity pool
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.
Buat penyedia workload identity 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"
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. Misalnya,google.subject=assertion.subject.dn.cn
.CONDITIONS
: Opsional. Kondisi atribut yang Anda buat sebelumnya dalam panduan ini. Hapus parameter jika Anda tidak memiliki kondisi atribut.
Mengautentikasi workload
Langkah ini harus dilakukan satu kali untuk setiap workload.
Mengizinkan workload eksternal Anda mengakses resource Trusted Cloud
Untuk memberikan akses workload Anda ke resource Trusted Cloud , sebaiknya Anda memberikan akses resource langsung ke principal. Dalam hal ini, pokoknya adalah pengguna gabungan. Beberapa produk Trusted 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 layananTrusted Cloud , yang bertindak sebagai identitas. Anda memberikan akses ke akun layanan pada resource.
Akses resource langsung
Anda dapat memberikan akses ke identitas gabungan langsung di resource menggunakan Trusted Cloud konsol atau gcloud CLI.
Konsol
Untuk menggunakan konsol Trusted Cloud guna memberikan peran IAM
langsung pada 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
) kepada identitas gabungan langsung di bucket Cloud Storage.
- Di Trusted Cloud konsol, 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 hal berikut:
Dapatkan nomor project tempat resource ditentukan.
gcloud projects describe $(gcloud config get-value core/project) --format=value\(projectNumber\)
Beri akses ke resource.
Untuk menggunakan gcloud CLI guna memberikan peran Storage Object Viewer (
roles/storage.objectViewer
) kepada 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 yang akan diberi aksesPROJECT_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 khusus dalam pemetaan atribut Anda
Anda dapat memberikan peran pada resource Trusted Cloud apa pun yang mendukung kebijakan izin IAM.
Peniruan akun layanan
Untuk membuat akun layanan bagi workload eksternal, lakukan langkah-langkah berikut:
-
Enable the IAM, Security Token Service, and Service Account Credentials APIs.
Buat akun layanan yang merepresentasikan workload. Sebaiknya gunakan 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.
Agar identitas gabungan dapat meniru identitas akun layanan, lakukan hal berikut:
Konsol
Untuk menggunakan konsol Trusted Cloud guna memberikan peran IAM ke identitas gabungan dengan akun layanan, lakukan langkah-langkah berikut:
Akun Layanan dalam project yang sama
Untuk memberikan akses menggunakan peniruan identitas akun layanan bagi 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 yang akan ditiru identitasnya oleh identitas eksternal, lalu lakukan hal berikut:
Untuk memilih identitas dalam pool 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 dalam project yang berbeda
Untuk memberikan akses menggunakan peniruan identitas akun layanan bagi akun layanan di project lain, lakukan hal berikut:
Buka halaman Akun Layanan.
Pilih akun layanan yang ingin Anda tiru.
Klik Kelola akses.
Klik Tambahkan akun utama.
Di kolom New principal, masukkan salah satu ID akun utama untuk identitas di pool 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 kumpulan
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 memberikan peran Pengguna Workload Identity (roles/iam.workloadIdentityUser
)
kepada akun utama gabungan atau set akun utama, jalankan perintah
berikut. Untuk mempelajari lebih lanjut ID utama Workload Identity Federation, lihat Jenis utama.
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 khusus dalam pemetaan atribut Anda
Mendownload atau membuat konfigurasi kredensial
Library Klien Cloud dan gcloud CLI dapat otomatis memperoleh kredensial eksternal dan menggunakan kredensial ini untuk meniru identitas akun layanan. Agar library dan alat dapat menyelesaikan proses ini, Anda harus menyediakan file konfigurasi kredensial. File ini memberikan informasi 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 sertifikat klien X.509 dan kunci pribadi.
Buat file konfigurasi kredensial dan sertifikat yang memungkinkan library memperoleh token akses menggunakan sertifikat X.509.
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:
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_PRIVATE_KEY_PATH \ --credential-cert-trust-chain-path=TRUST_CHAIN_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_PRIVATE_KEY_PATH
: Jalur file kunci pribadi sertifikat klien.TRUST_CHAIN_PATH
: Opsional. Jalur file rantai kepercayaan yang berisi sertifikat perantara yang tidak dikonfigurasi di penyedia x509.FILEPATH
: File untuk menyimpan konfigurasi.
Menjalankan perintah ini juga akan membuat file konfigurasi sertifikat dan menyimpannya di lokasi gcloud 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 langkah-langkah berikut:
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 \ --credential-cert-trust-chain-path=TRUST_CHAIN_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
: Masa aktif token akses akun layanan, dalam hitungan detik, jika Anda menggunakan peniruan identitas akun layanan. Jika dihilangkan, masa berlaku ini akan ditetapkan secara default ke satu jam. Jangan gunakan tanda ini jika Anda tidak menggunakan peniruan identitas akun layanan. Untuk menentukan masa aktif yang lebih lama dari satu jam, Anda harus mengonfigurasiconstraints/iam.allowServiceAccountCredentialLifetimeExtension
batasan kebijakan organisasi.CLIENT_CERT_PATH
: Jalur file sertifikat klien.CLIENT_PRIVATE_KEY_PATH
: Jalur file kunci pribadi sertifikat klien.TRUST_CHAIN_PATH
: Opsional. Jalur file rantai kepercayaan yang berisi sertifikat perantara yang tidak dikonfigurasi di penyedia x509.FILEPATH
: File untuk menyimpan konfigurasi.
Menjalankan perintah ini juga akan membuat file konfigurasi sertifikat dan menyimpannya di lokasi default Google Cloud CLI:
Linux dan macOS:
~/.config/gcloud/certificate_config.json
Windows:
%APPDATA%\gcloud\certificate_config.json
Menggunakan konfigurasi kredensial untuk mengakses Trusted Cloud
Agar alat dan library klien dapat menggunakan konfigurasi kredensial Anda, lakukan hal berikut. Untuk mempelajari lebih lanjut Kredensial Default Aplikasi, lihat Cara kerja Kredensial Default Aplikasi.
Lakukan inisialisasi variabel lingkungan
GOOGLE_APPLICATION_CREDENTIALS
dan tetapkan ke file konfigurasi kredensial:Bash
Gantiexport GOOGLE_APPLICATION_CREDENTIALS=`pwd`/FILEPATH.json
FILEPATH
dengan jalur relatif ke file konfigurasi kredensial.PowerShell
Ganti$env:GOOGLE_APPLICATION_CREDENTIALS = Resolve-Path 'FILEPATH.json'
FILEPATH
dengan jalur relatif ke file konfigurasi kredensial.Pastikan library klien dapat menemukan file konfigurasi sertifikat. File konfigurasi sertifikat terletak di salah satu jalur berikut:
Jalur gcloud CLI default:
Linux dan macOS:
~/.config/gcloud/certificate_config.json
Windows:
%APPDATA%\gcloud\certificate_config.json
Jalur yang ditetapkan dalam variabel lingkungan
GOOGLE_API_CERTIFICATE_CONFIG
.
Gunakan Library Klien Cloud berikut yang mendukung Workload Identity Federation dengan sertifikat X.509.
Go
Library klien untuk Go mendukung X.509 Workload Identity Federation jika menggunakan modul
cloud.google.com/go/auth
versi 0.16.0 atau yang lebih baru dan modulgoogle.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.39.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 paketgoogle-auth
.Jika workload Anda berjalan di macOS, tetapkan
CLOUDSDK_PYTHON_SITEPACKAGES=1
untuk mengonfigurasi gcloud CLI agar menggunakan library Python di luar direktori instalasinya.Untuk melakukan autentikasi menggunakan gcloud CLI, jalankan perintah berikut:
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 519.0 dan versi yang lebih baru.
Mendapatkan token akses menggunakan permintaan biasa untuk mengakses Trusted Cloud
Membuat rantai kepercayaan
Langkah ini menunjukkan cara membuat rantai kepercayaan. Anda meneruskan rantai kepercayaan di kolom subject_token
saat memanggil Security Token Service dalam permintaan biasa.
Format sertifikat yang perlu disertakan dalam rantai sebagai daftar berformat JSON seperti yang ditentukan dalam RFC 7515. Sertifikat leaf yang digunakan untuk handshake mTLS harus ditentukan sebagai item pertama. Setiap sertifikat dalam paket harus berupa string berenkode base64.
Simpan sertifikat leaf dan sertifikat perantara ke string berenkode base64.
export LEAF_CERT=$(openssl x509 -in leaf.cert -out leaf.der -outform DER && cat leaf.der | openssl enc -base64 -A)
export INTERMEDIATE_CERT=$(openssl x509 -in int.cert -out int.der -outform DER && cat int.der | openssl enc -base64 -A)
Buat daftar string berformat JSON yang dapat diteruskan sebagai
subject_token
dalam panggilan ke Security Token Service, nanti dalam dokumen iniexport TRUST_CHAIN="[\\\"${LEAF_CERT}\\\", \\\"${INTERMEDIATE_CERT}\\\"]"
Mendapatkan token akses
Untuk mendapatkan token akses, lakukan hal berikut:
Lakukan pertukaran token dengan mTLS dan sertifikat klien:
curl --key CLIENT_CERT_KEY \ --cert CLIENT_CERT \ --request POST 'https://sts.mtls.s3nsapis.fr/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", "subject_token": "TRUST_CHAIN" }'
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
TRUST_CHAIN
: Rantai kepercayaan yang diperlukan untuk memverifikasi sertifikat leaf, setidaknya harus menyertakanCLIENT_CERT
sebagai item pertama. Jika Anda mengikuti petunjuk di bagian Memformat sertifikat, gantiTRUST_CHAIN
dengan'"${TRUST_CHAIN}"'
Gunakan token akses pembawa yang dibuat pada langkah sebelumnya untuk mengakses Trusted Cloud resource—misalnya:
curl -X GET 'https://storage.s3nsapis.fr/my_object' -H "Authorization: Bearer $ACCESS_TOKEN"
Batas
Tabel berikut mencantumkan batas.
Item | Batas | Catatan |
---|---|---|
Jumlah anchor kepercayaan | 3 | Setiap sertifikat tidak boleh melebihi 32 KB. |
Jumlah intermediate certificate | 10 | Setiap sertifikat tidak boleh melebihi 32 KB. |
Jumlah batasan nama yang diizinkan selama validasi sertifikat root dan intermediate | 10 | |
Sertifikat perantara yang berbagi informasi Kunci Publik Subjek dan Subjek yang sama | 5 | Batas ini berlaku untuk setiap toko tepercaya. |
Kedalaman rantai sertifikat | 5 | Kedalaman maksimum untuk rantai sertifikat, termasuk sertifikat root dan klien. |
Jumlah kali sertifikat perantara dapat dievaluasi saat mencoba membangun rantai kepercayaan | 100 | |
Kunci sertifikat yang diupload dan diteruskan dari klien | 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 |
Masa berlaku maksimum sertifikat entitas akhir | 390 hari | Sertifikat Leaf yang diterbitkan lebih dari 390 hari yang lalu akan ditolak |
Langkah berikutnya
- Baca selengkapnya tentang Workload Identity Federation.
- Pelajari praktik terbaik untuk menggunakan Workload Identity Federation.
- Lihat cara mengelola workload identity pool dan penyedia workload identity.