Panduan ini menjelaskan cara menggunakan workload identity federation agar workload dapat menggunakan kredensial Active Directory untuk melakukan autentikasi ke Google Cloud.
Jika Anda menjalankan workload Windows Server di lingkungan Active Directory, workload ini mungkin memiliki akses ke kredensial Active Directory. Contoh:
- Layanan Windows mungkin dikonfigurasi untuk masuk sebagai pengguna domain.
- Aplikasi IIS mungkin dikonfigurasi untuk dijalankan sebagai akun layanan terkelola grup (gMSA).
Dengan menggunakan workload identity federation yang dikombinasikan dengan Active Directory Federation Services (AD FS), Anda dapat mengizinkan workload ini menukar kredensial Kerberos Active Directory-nya dengan kredensial Google Cloud yang memiliki masa aktif singkat. Workload dapat menggunakan kredensial yang memiliki masa aktif singkat ini untuk mengakses Google Cloud API.
Pertukaran kredensial Active Directory dengan kredensial Google Cloud yang memiliki masa aktif singkat dapat dilakukan dengan merangkai dua pertukaran token:
- Workload menggunakan OpenID Connect (OIDC), SAML-POST, atau WS-Trust untuk meminta token OIDC atau pernyataan SAML dari AD FS. Untuk mengautentikasi ke AD FS, workload menggunakan autentikasi Windows terintegrasi (IWA) dan kredensial Active Directory yang ada.
- Kemudian, workload menggunakan workload identity federation untuk menukar token OIDC atau pernyataan SAML dengan token dari Layanan Token Keamanan dan, secara opsional, meniru akun layanan Google Cloud.
Artikel ini menunjukkan cara mengotomatiskan proses ini menggunakan Workload Authenticator untuk Windows tanpa perlu mengubah aplikasi Anda.
Menyiapkan AD FS
Anda hanya perlu melakukan langkah ini satu kali.
Pilih protokol
Cara menyiapkan AD FS bergantung pada protokol mana yang ingin Anda gunakan:
SAML: Anda dapat mengizinkan workload menggunakan SAML atau WS-Trust untuk mendapatkan pernyataan SAML.
Untuk menggunakan SAML atau WS-Trust, buat pihak pengandal di AD FS dan konfigurasikan workload identity pool agar dapat menetapkan pernyataan kepercayaan yang dikeluarkan untuk pihak yang mengandalkan bagian ini.
Workload dapat menggunakan pengguna Active Directory-nya untuk mengautentikasi ke AD FS, baik dengan menggunakan binding SAML-POST maupun WS-Trust. AD FS kemudian mengeluarkan pernyataan SAML yang berisi informasi tentang pengguna Active Directory workload dan informasi tambahan seperti keanggotaan grup.
Penggunaan SAML atau WS-Trust memerlukan AD FS 3.0, AD FS untuk Windows Server 2016, atau versi AD FS yang lebih baru.
OIDC: Anda dapat mengizinkan workload menggunakan OIDC untuk mendapatkan token OIDC.
Untuk menggunakan OIDC, buat klien OIDC (aplikasi native) dan resource OIDC (Web API) di AD FS. Kemudian, Anda akan mengonfigurasi workload identity pool ke token akses kepercayaan yang dikeluarkan untuk Web API.
Workload dapat menggunakan pengguna Active Directory-nya dan pemberian
client_credentials
OAuth untuk mengautentikasi ke AD FS. AD FS kemudian mengeluarkan token akses, tetapi tidak mengeluarkan token ID.Token akses berisi informasi tentang aplikasi klien OIDC, tetapi tidak menyertakan informasi apa pun tentang pengguna Active Directory workload atau keanggotaan grupnya.
Karena token akses tidak berisi informasi apa pun terkait pengguna Active Directory, penggunaan OIDC mungkin kurang fleksibel dibandingkan menggunakan SAML atau WS-Trust.
Penggunaan OIDC memerlukan AD FS untuk Windows Server 2016 atau versi AD FS yang lebih baru.
Untuk login, IdP Anda harus memberikan informasi autentikasi yang ditandatangani: IdP OIDC harus memberikan token JWT, dan respons IdP SAML harus ditandatangani.
Prasyarat IWA
Bagian ini menjelaskan prasyarat IWA yang diperlukan untuk menggunakan panduan ini.
Jika belum pernah menggunakan IWA dengan AD FS, pastikan Anda memenuhi prasyarat berikut:
- Anda telah mengonfigurasi AD FS untuk mengizinkan Autentikasi Windows dan menggunakan nama layanan utama yang tepat.
- Anda telah mengonfigurasi perlindungan tambahan untuk autentikasi agar kompatibel dengan deployment AD FS Anda.
Mendaftarkan workload
Untuk mendaftarkan workload Anda di AD FS, lakukan hal berikut:
OIDC
Untuk mengizinkan workload menggunakan OIDC, Anda memerlukan dua pendaftaran aplikasi di AD FS:
Pendaftaran aplikasi jenis aplikasi native atau aplikasi server.
Pendaftaran aplikasi jenis Web API yang sesuai dengan penyedia workload identity pool di Google Cloud.
Mendaftarkan aplikasi klien
Buat aplikasi klien yang mewakili workload. Jika memiliki workload yang memerlukan akses ke Google Cloud, Anda mungkin perlu membuat beberapa aplikasi klien.
Untuk mendaftarkan aplikasi klien di AD FS, lakukan hal berikut:
- Buka snap-in AD FS MMC dan buka Grup Aplikasi.
- Klik Tambahkan grup aplikasi.
Pada halamanSambutan lakukan hal berikut:
- Di kolom teks, masukkan nama klien.
- Pilih Aplikasi server.
- Klik Next.
Di halaman Aplikasi server, lakukan hal berikut:
Di kolom teks
, masukkan ID klien (Client ID) dan URI pengalihan. Jika Anda hanya berencana menggunakan jenis pemberian
client_credentials
, URI pengalihan tidak akan digunakan dan Anda dapat menggunakan URI sepertihttp://localhost/
.Klik Next.
Di halaman Konfigurasi aplikasi kredensial, lakukan langkah berikut:
- Pilih cara klien mengautentikasi. Untuk menggunakan IWA, setel Autentikasi Windows Terintegrasi ke aktif.
- Pilih pengguna domain yang dikonfigurasi untuk menjalankan aplikasi Anda.
- Klik Next.
Di halaman Ringkasan, tinjau setelan, lalu klik Berikutnya.
Klik Tutup untuk menutup dialog.
Membuat aplikasi Web API untuk workload identity pool
Buat pendaftaran aplikasi lain jenis Web API. Aplikasi ini sesuai dengan penyedia workload identity pool, dan Anda menggunakannya untuk menyiapkan hubungan kepercayaan dengan Google Cloud.
Untuk membuat aplikasi di AD FS, lakukan hal berikut:
- Buka snap-in AD FS MMC dan buka Grup Aplikasi.
- Klik Tambahkan grup aplikasi.
- Di Halaman sambutan, masukkan nama seperti
Workload Identity Federation (test environment)
, lalu pilih Web API. Kemudian klik Berikutnya. Di halaman Konfigurasi Web API, masukkan ID pihak tepercaya untuk Web API.
Daripada menentukan ID pihak tepercaya, Anda dapat menggunakan URI berikut sebagai ID pihak tepercaya:
https://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/WORKLOAD_POOL_ID/providers/PROVIDER_ID
Ganti kode berikut:
PROJECT_NUMBER
: nomor project dari project Google Cloud yang Anda gunakan untuk membuat workload identity. pool.WORKLOAD_POOL_ID
: ID pilihan Anda yang mengidentifikasi workload identity pool. Anda harus menggunakan ID yang sama saat nanti membuat workload identity pool.PROVIDER_ID
: ID pilihan Anda yang mengidentifikasi penyedia workload identity pool. Anda harus menggunakan ID yang sama saat membuat penyedia workload identity pool nantinya.
Memformat URI dengan cara ini akan memastikan bahwa ID pihak tepercaya secara unik mengidentifikasi penyedia workload identity pool.
Anda akan memerlukan ID pihak tepercaya saat mengonfigurasi penyedia workload identity pool.
Klik Next.
Di halaman Terapkan kebijakan kontrol akses, pilih kebijakan akses yang sesuai, lalu klik Berikutnya.
Di halaman Izin konfigurasi aplikasi, tambahkan aplikasi klien yang Anda buat sebelumnya. Kemudian klik Berikutnya.
Di halaman Ringkasan, tinjau setelan, lalu klik Berikutnya.
Klik Tutup untuk menutup dialog.
SAML atau WS-Trust
Buat kepercayaan pihak terkait di AD FS:
- Buka snap-in AD FS MMC.
- Buka Kepercayaan pihak terkait.
- Klik Tambahkan kepercayaan pihak tepercaya.
- Di halaman Selamat Datang pada wizard Tambahkan kepercayaan pihak terkait,
lakukan hal berikut:
- Pilih Klaim kepekaan
- Klik Mulai.
- Di halaman Pilih sumber data, lakukan tindakan berikut:
- Pilih Masukkan data tentang pihak tepercaya secara manual.
- Klik Next.
Di halaman Tentukan nama tampilan, lakukan hal berikut:
- Masukkan nama untuk dipercaya.
- Klik Next.
Di halaman Konfigurasi sertifikat, klik Berikutnya. Meskipun workload identity federation mendukung SAML terenkripsi, hal tersebut tidak dijelaskan dalam prosedur ini. Untuk mempelajari lebih lanjut, lihat petunjuk gcloud CLI di Membuat workload identity pool dan penyedia workload, dalam panduan ini nantinya.
Di halaman Konfigurasi URL, lakukan tindakan berikut:
SAML
Gunakan setelan berikut:
- Tetapkan bagian Mengaktifkan dukungan untuk protokol SAML 2.0 WebSSO menjadi setelan aktif
Di kolom Layanan URL Pihak terpercaya SAML 2.0 SSO, masukkan URL berikut:
https://sts.googleapis.com/v1/token
WS-Trust
Simpan setelan default
Klik Next.
Di halaman Konfigurasi ID, masukkan ID pihak tepercaya.
Daripada menentukan ID pihak tepercaya, Anda dapat menggunakan URI berikut sebagai ID pihak tepercaya:
https://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/WORKLOAD_POOL_ID/providers/PROVIDER_ID
Ganti kode berikut:
PROJECT_NUMBER
: nomor project dari project Google Cloud yang Anda gunakan untuk membuat workload identity. pool.WORKLOAD_POOL_ID
: ID pilihan Anda yang mengidentifikasi workload identity pool. Anda harus menggunakan ID yang sama saat nanti membuat workload identity pool.PROVIDER_ID
: ID pilihan Anda yang mengidentifikasi penyedia workload identity pool. Anda harus menggunakan ID yang sama saat membuat penyedia workload identity pool nantinya.
Memformat URI dengan cara ini akan memastikan bahwa ID pihak tepercaya secara unik mengidentifikasi penyedia workload identity pool.
Anda akan memerlukan ID pihak tepercaya saat mengonfigurasi penyedia workload identity pool.
Klik Next.
Di halaman Pilih kebijakan kontrol akses, pilih kebijakan kontrol akses yang sesuai, lalu klik Berikutnya.
Di halaman Siap menambah pihak kepercayaan, tinjau setelan, lalu klik Berikutnya.
Di halaman Akhir, klik Tutup untuk menutup dialog.
Agar kompatibel dengan workload identity federation, pernyataan SAML harus berisi
setidaknya satu klaim yang secara unik
mengidentifikasi pengguna Active Directory. Biasanya, Anda menggunakan
klaim ID Nama untuk tujuan ini, yang sesuai dengan nilai
elemen NameID
dalam pernyataan SAML.
Untuk menyesuaikan kumpulan klaim pernyataan SAML, Anda harus mengedit kebijakan penerbitan klaim kepercayaan pihak tepercaya. Untuk mengedit kebijakan penerbitan klaim, lakukan hal berikut:
- Dalam daftar kepercayaan pihak tepercaya, pilih kepercayaan yang baru saja Anda buat, lalu klik Edit kebijakan penerbitan klaim.
- Klik Tambahkan Aturan
- Pada halaman Pilih jenis aturan di wizard Tambahkan aturan transformasi klaim , lakukan langkah berikut:
- Pilih Ubah klaim yang masuk.
- Klik Next.
Di halaman Konfigurasi aturan klaim, konfigurasikan setelan berikut:
- Nama aturan klaim:
Name Identifier
. - Jenis klaim masuk: Pilih SID Utama, UPN, atau klaim lain untuk mengidentifikasi subjek secara unik.
- Jenis klaim keluar: ID Nama.
- Format ID nama keluar: Tidak ditentukan.
- Nama aturan klaim:
Pilih Lewati semua nilai klaim, lalu klik Selesai.
Anda juga dapat mengonfigurasi aturan tambahan untuk menyertakan lebih banyak atribut dalam pernyataan SAML.
Klik Oke untuk menutup dialog kebijakan penerbitan klaim.
Mengonfigurasi workload identity federation
Anda hanya perlu melakukan langkah-langkah ini satu kali per tenant Azure AD atau akun AWS yang ingin digabungkan. Anda kemudian dapat menggunakan workload identity pool dan penyedia workload yang sama untuk beberapa workload dan di beberapa project Google Cloud.
Untuk mulai mengonfigurasi workload identity federation, lakukan langkah berikut:
-
Di konsol Google Cloud, pada halaman pemilih project, pilih atau buat project Google Cloud.
Sebaiknya,
gunakan project khusus untuk mengelola workload identity pool dan penyedia workload identity.
-
Make sure that billing is enabled for your Google Cloud project.
Aktifkan API IAM, Resource Manager, Service Account Credentials, and Security Token Service.
Menentukan pemetaan dan kondisi atribut
Kredensial khusus lingkungan dari workload AWS atau Azure Anda mencakup beberapa atribut.
Anda harus menentukan atribut yang ingin digunakan sebagai ID subjek
(google.subject
) di Google Cloud.
Secara opsional, Anda dapat memetakan atribut tambahan. Anda akan dapat merujuk ke atribut tambahan ini saat memberikan akses ke resource.
OIDC
Pemetaan atribut Anda dapat menggunakan klaim yang disematkan dalam token akses AD FS sebagai atribut sumber.
Untuk mengautentikasi aplikasi, Anda dapat menggunakan pemetaan atribut berikut:
google.subject=assertion.appid
Pemetaan ini menetapkan google.subject
ke nilai klaim appid
, yang
berisi Client ID aplikasi AD FS.
SAML atau WS-Trust
Pemetaan atribut Anda dapat menggunakan klaim yang disematkan dalam pernyataan yang dikeluarkan oleh AD FS, seperti yang dijelaskan sebelumnya dalam panduan ini.
Gunakan pemetaan berikut agar workload identity federation dapat menggunakan klaim Nama ID dari pernyataan SAML untuk mengidentifikasi pengguna secara unik:
google.subject=assertion.subject
Jika Anda telah mengonfigurasi kebijakan penerbitan klaim untuk menyertakan klaim tambahan dalam pernyataan SAML, Anda dapat menambahkan pemetaan tambahan. Contoh:
google.groups=assertion.attributes['http://schemas.microsoft.com/ws/2008/06/identity/claims/groupsid'] attribute.userip=['http://schemas.microsoft.com/2014/09/requestcontext/claims/userip'][0]
Tentukan kondisi atribut (opsional). Kondisi atribut
adalah ekspresi CEL yang dapat memeriksa atribut pernyataan dan atribut target.
Jika kondisi atribut bernilai true
untuk kredensial tertentu,
kredensial tersebut akan diterima. Jika tidak, kredensial akan ditolak.
OIDC
Anda dapat menggunakan kondisi atribut untuk membatasi klien yang dapat menggunakan workload identity federation untuk mendapatkan token Google Cloud dengan masa berlaku singkat
Misalnya, kondisi berikut menentukan bahwa aplikasi harus menggunakan IWA untuk mengautentikasi ke AD FS:
assertion.authmethod=='http://schemas.microsoft.com/ws/2008/06/identity/authenticationmethod/windows'
Untuk mengontrol daftar aplikasi yang dapat memperoleh kredensial dengan masa berlaku yang singkat untuk Google Cloud, jangan tentukan kondisi atribut. Sebagai gantinya, gunakan izin klien di AD FS untuk menentukan aplikasi yang diizinkan.
SAML atau WS-Trust
Anda dapat menggunakan kondisi atribut untuk membatasi Active Directory milik pengguna yang dapat menggunakan workload identity federation untuk mendapatkan token Google Cloud yang berlaku singkat.
Misalnya, kondisi berikut hanya mengizinkan pernyataan SAML yang menyertakan klaim keanggotaan grup tertentu:
"S-1-5-6" in google.groups
Membuat workload identity pool dan penyedia workload
Peran yang diperlukan
Untuk mendapatkan izin yang diperlukan untuk mengonfigurasi workload identity federation, minta administrator Anda untuk memberikan peran IAM berikut pada project:
-
Admin Workload Identity Pool (
roles/iam.workloadIdentityPoolAdmin
) -
Admin Akun Layanan (
roles/iam.serviceAccountAdmin
)
Untuk mengetahui informasi selengkapnya tentang pemberian peran, lihat Mengelola akses.
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.
Konsol
Di Konsol Google Cloud, buka halaman Penyedia workload dan workload pool baru.
Di bagian Buat identity pool, masukkan informasi berikut:
- Nama: Nama untuk pool. Nama ini juga digunakan sebagai ID pool. Anda tidak dapat mengubah ID pool nanti.
- Deskripsi: Teks yang menjelaskan tujuan pool.
Klik Lanjutkan.
Konfigurasikan setelan penyedia:
OIDC
- Pilih penyedia: OpenID Connect (OIDC).
- Nama penyedia: nama untuk penyedia. Nama ini juga digunakan sebagai ID penyedia. Anda tidak dapat mengubah ID penyedia lagi.
- URL penerbit:
https://ADFS_DOMAIN/adfs
denganADFS_DOMAIN
adalah nama domain publik dari server atau farm AD FS.
SAML
Untuk mengonfigurasi workload identity federation dari IdP yang kompatibel dengan SAML 2.0, Anda dapat menggunakan petunjuk gcloud. CLI.
Klik Lanjutkan.
Di bagian Konfiguraasikan atribut penyedia, tambahkan pemetaan atribut yang telah Anda identifikasi sebelumnya.
Di bagian bawah Kondisi atribut, masukkan kondisi atribut yang telah Anda identifikasi sebelumnya. Jika Anda tidak memiliki kondisi atribut, biarkan kolom ini kosong.
Klik Simpan untuk membuat workload identity pool dan penyedia workload.
gcloud
Buat workload identity pool yang baru:
gcloud iam workload-identity-pools create WORKLOAD_POOL_ID \ --location="global" \ --description="DESCRIPTION" \ --display-name="DISPLAY_NAME"
Ganti kode berikut:
WORKLOAD_POOL_ID
: ID unik untuk pool.DISPLAY_NAME
: Nama pool.DESCRIPTION
: Deskripsi pool. Deskripsi ini muncul saat memberikan akses ke identitas kumpulan.
Tambahkan penyedia workload identity pool:
OIDC
gcloud iam workload-identity-pools providers create-oidc PROVIDER_ID \ --location="global" \ --workload-identity-pool="WORKLOAD_POOL_ID" \ --issuer-uri="
https://ADFS_DOMAIN/adfs
" \ --allowed-audiences="RELYING_PARTY_ID" \ --attribute-mapping="MAPPINGS" \ --attribute-condition="CONDITIONS"Ganti kode berikut:
PROVIDER_ID
: ID unik untuk penyedia.WORKLOAD_POOL_ID
: ID pool.ADFS_DOMAIN
: nama domain publik dari server atau farm AD FS.RELYING_PARTY_ID
: ID pihak tepercaya dari aplikasi Web API untuk workload identity pool di AD FS. Anda hanya memerlukan parameter ini jika menggunakan ID pihak tepercaya khusus.MAPPINGS
: Daftar yang dipisahkan koma untuk pemetaan atribut yang telah Anda identifikasi sebelumnya.CONDITIONS
: Kondisi atribut yang sudah Anda identifikasi sebelumnya. Hapus parameter jika Anda tidak memiliki kondisi atribut.
Awalan
gcp-
dicadangkan dan tidak dapat digunakan dalam ID pool atau penyedia.SAML atau WS-Trust
curl -O https://ADFS_DOMAIN/federationmetadata/2007-06/federationmetadata.xml gcloud iam workload-identity-pools providers create-saml PROVIDER_ID \ --location="global" \ --workload-identity-pool="POOL_ID" \ --idp-metadata-path="federationmetadata.xml" \ --attribute-mapping="MAPPINGS" \ --attribute-condition="CONDITIONS"
Ganti kode berikut:
PROVIDER_ID
: ID unik untuk penyedia.ADFS_DOMAIN
: nama domain server ADFS atau server farm.WORKLOAD_POOL_ID
: ID pool.MAPPINGS
: daftar yang dipisahkan koma untuk pemetaan atribut yang telah Anda identifikasi sebelumnya.CONDITIONS
: Opsional: kondisi atribut yang Anda buat sebelumnya dalam panduan ini
Awalan
gcp-
dicadangkan dan tidak dapat digunakan dalam ID pool atau penyedia.Contoh:
gcloud iam workload-identity-pools providers create-saml example-provider \ --location="global" \ --workload-identity-pool="pool-1" \ --idp-metadata-path="federationmetadata.xml" \ --attribute-mapping=google.subject=assertion.subject"
Opsional: Menerima pernyataan SAML terenkripsi dari IdP
Untuk mengaktifkan IdP SAML 2.0 guna menghasilkan pernyataan SAML terenkripsi yang dapat diterima oleh workload identity federation, lakukan hal berikut:
- Dalam workload identity federation, lakukan hal berikut:
- Buat pasangan kunci asimetris untuk penyedia workload identity pool Anda.
- Download file sertifikat yang berisi kunci publik.
- Konfigurasikan IdP SAML untuk menggunakan kunci publik guna mengenkripsi pernyataan SAML yang dikeluarkan.
- Di IdP Anda, lakukan hal berikut:
- Mengaktifkan enkripsi pernyataan, yang juga dikenal sebagai enkripsi token.
- Upload kunci publik yang Anda buat di workload identity federation.
- Pastikan IdP Anda menghasilkan pernyataan SAML terenkripsi.
Membuat kunci enkripsi pernyataan SAML workload identity federation
Bagian ini memandu Anda untuk membuat pasangan kunci asimetris yang memungkinkan workload identity federation untuk menerima pernyataan SAML yang terenkripsi.
Google Cloud menggunakan kunci pribadi untuk mendeskripsi pernyataan SAML yang menjadi masalah IdP Anda. Untuk membuat pasangan kunci asimetris yang akan digunakan dengan enkripsi SAML, jalankan perintah berikut. Untuk mempelajari lebih lanjut, lihat Algoritma enkripsi SAML yang didukung.
gcloud iam workload-identity-pools providers keys create KEY_ID \ --workload-identity-pool WORKLOAD_POOL_ID \ --provider PROVIDER_ID \ --location global \ --use encryption \ --spec KEY_SPECIFICATION
Ganti kode berikut:
KEY_ID
: nama kunci yang Anda pilihWORKLOAD_POOL_ID
: ID poolPROVIDER_ID
: ID penyedia-
KEY_SPECIFICATION
: spesifikasi kunci, yang dapat berupa salah satu darirsa-2048
,rsa-3072
, danrsa-4096
.
Setelah membuat pasangan kunci, untuk mendownload kunci publik ke dalam file sertifikat, jalankan perintah berikut. Hanya workload identity federation yang memiliki akses ke kunci pribadi.
gcloud iam workload-identity-pools providers keys describe KEY_ID \ --workload-identity-pool WORKLOAD_POOL_ID \ --provider PROVIDER_ID \ --location global \ --format "value(keyData.key)" \ > CERTIFICATE_PATH
Ganti kode berikut:
KEY_ID
: adalah nama kunciWORKLOAD_POOL_ID
: ID poolPROVIDER_ID
: ID penyediaCERTIFICATE_PATH
: jalur untuk menulis sertifikat misalnya,saml-certificate.cer
atausaml-certificate.pem
Mengonfigurasi IdP yang sesuai dengan SAML 2.0 untuk mengeluarkan pernyataan SAML terenkripsi
- Pindahkan file sertifikat ke server AD FS.
- Di server AD FS, klik kanan tombol Mulai (atau tekan Win+X), lalu klik Windows PowerShell (Admin).
-
Di PowerShell, jalankan perintah berikut untuk mengaktifkan enkripsi:
Set-AdfsRelyingPartyTrust ` -TargetName NAME ` -SamlResponseSignature MessageAndAssertion ` -EncryptionCertificate PATH ` -EncryptClaims $True
Ganti kode berikut:
NAME
: nama kepercayaan pihak terkait AndaPATH
: jalur file dari file sertifikat
Pengguna WS-Trust: Fitur ini hanya tersedia saat Anda menggunakan SAML.
Setelah mengonfigurasi IdP untuk mengenkripsi pernyataan SAML, sebaiknya periksa untuk memastikan bahwa pernyataan yang dihasilkan benar-benar dienkripsi. Bahkan dengan enkripsi pernyataan SAML yang dikonfigurasi, workload identity federation masih dapat memproses pernyataan teks biasa.
Menghapus kunci enkripsi workload identity federation
Untuk menghapus kunci enkripsi SAML, jalankan perintah berikut:gcloud iam workload-identity-pools providers keys delete KEY_ID \ --workload-identity-pool WORKLOAD_POOL_ID \ --provider PROVIDER_ID \ --location global
Ganti kode berikut:
KEY_ID
: adalah nama kunciWORKLOAD_POOL_ID
: ID poolPROVIDER_ID
: ID penyedia
Algoritma enkripsi SAML yang didukung
Workload identity federation mendukung algoritma transpor utama berikut:
- http://www.w3.org/2001/04/xmlenc#rsa-oaep-mgf1p
- http://www.w3.org/2009/xmlenc11#rsa-oaep"
- http://www.w3.org/2001/04/xmlenc#rsa-1_5"
Workload identity federation mendukung algoritma enkripsi blok berikut:
Mengautentikasi workload
Anda harus melakukan langkah berikut satu kali per workload.
Membuat akun layanan untuk workload eksternal
Aktifkan API IAM, Security Token Service, and Service Account Credentials.
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.
Berikan akses akun layanan untuk resource yang ingin diakses oleh identitas eksternal.
Mengizinkan workload eksternal untuk meniru identitas akun layanan
Agar identitas eksternal dapat meniru identitas akun layanan, berikan
peran Pengguna Workload Identity ke identitas eksternal (roles/iam.workloadIdentityUser
) pada
akun layanan tersebut. Anda dapat memberikan peran ke identitas eksternal tertentu, atau ke
beberapa identitas eksternal:
- Untuk identitas eksternal tertentu, tulis kondisi atribut yang memeriksa
atribut
google.subject
. - Untuk grup identitas eksternal, tulis kondisi atribut yang memeriksa
atribut
google.groups
atau atribut khususattribute.NAME
.
Konsol
Agar identitas eksternal dapat meniru identitas akun layanan menggunakan Konsol Google Cloud, lakukan hal berikut:
Di Konsol Google Cloud, buka halaman Workload Identity Pool.
Temukan workload identity pool yang ingin Anda perbarui lalu pilih pool tersebut.
Untuk memberikan akses ke workload identity pool yang dipilih, klik
Berikan akses.Dalam daftar Akun layanan, pilih akun layanan untuk ditiru oleh identitas eksternal.
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; contohnya, jika Anda menggunakan pemetaan atribut
google.subject=assertion.sub
, tetapkan namaAtribut menjadisubject
dan Nilai atribut menjadi nilai klaimsub
dalam token yang dikeluarkan oleh penyedia identitas eksternal Anda.
Untuk menyimpan konfigurasi, klik Simpan, lalu Tutup.
gcloud
Agar identitas eksternal dapat meniru identitas akun layanan menggunakan gcloud CLI, lakukan hal berikut:
Untuk memperoleh nomor project Anda saat ini, jalankan perintah berikut:
gcloud projects describe $(gcloud config get-value core/project) --format=value\(projectNumber\)
Untuk memberikan peran Pemilik Workload Identity (
roles/iam.workloadIdentityUser
) ke identitas eksternal yang memenuhi kriteria tertentu: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 Anda
Membuat konfigurasi kredensial
Anda dapat mengizinkan alat dan Library Klien Cloud seperti gcloud CLI dan Terraform menggunakan kredensial Active Directory untuk melakukan autentikasi ke Google Cloud menggunakan Workload Authenticator untuk Windows.
Workload Authenticator untuk Windows adalah alat open source yang berfungsi sebagai plugin untuk Library Klien Cloud dan alat seperti gcloud CLI:
- Saat memerlukan kredensial baru, alat atau library akan meluncurkan Workload Authenticator di latar belakang.
- Workload Authenticator menggunakan OIDC, SAML, atau WS-Trust untuk mendapatkan token atau pernyataan SAML baru dari AD FS dan meneruskannya kembali ke alat atau library.
- Alat atau library tersebut kemudian menggunakan pertukaran token atau pernyataan SAML dengan kredensial Google Cloud yang berlaku singkat menggunakan workload identity. federation.
Untuk menggunakan Workload Authenticator untuk Windows, Anda harus membuat file konfigurasi kredensial. File ini menentukan hal berikut:
- Tempat menemukan Workload Authenticator untuk Windows yang dapat dijalankan (
wwauth.exe
), dan parameter yang digunakan untuk menjalankannya - Workload identity pool dan penyedia workload yang akan digunakan
- Akun layanan yang akan ditiru
Untuk membuat file konfigurasi kredensial, lakukan hal berikut di Windows Server yang menjalankan workload Anda:
- Klik kanan tombol Start (atau tekan Win+X), lalu klik Windows PowerShell.
Download Workload Authenticator untuk Windows dan simpan ke lokasi yang dapat diakses oleh workload Anda:
(New-Object Net.WebClient).DownloadFile( "https://github.com/GoogleCloudPlatform/iam-windows-authenticator/releases/latest/download/wwauth.exe", "${env:ProgramData}\wwauth.exe")
Jika Anda membuat file konfigurasi kredensial menggunakan Workload Authenticator untuk Windows, file tersebut berisi jalur ke file yang dapat dieksekusi. Jika nantinya Anda menghapus atau memindahkan file yang dapat dieksekusi, workload tidak akan dapat menemukan dan menggunakan file yang dapat dieksekusi.
Luncurkan
wwauth.exe
:& ${env:ProgramData}\wwauth.exe
Dialog konfigurasi akan terbuka:
Pilih tab AD FS dan masukkan setelan berikut:
URI penerbit server AD FS: URI Publik server atau server farm AD FS Anda.
https://ADFS_DOMAIN/adfs/
Ganti
ADFS_DOMAIN
dengan nama domain publik server AD FS atau server farm.
Setelan berikutnya bergantung pada protokol yang ingin Anda gunakan:
OIDC
- Protokol: AdfsOidc
- ID pihak terpercaya: Simpan setelan default.
- Client ID ID Klien (Client ID) dari aplikasi server di AD FS.
SAML
- Protokol: AdfsSamlPost
- URL layanan pernyataan konsumen:
https://sts.googleapis.com/v1/token
. - Menandatangani permintaan menggunakan sertifikat: dinonaktifkan
WS-Trust
- Protokol: AdfsWsTrust
Pilih tab Workload identity tab dan masukkan setelan berikut:
- Nomor project: Nomor project dari project yang berisi workload identity pool
- ID Pool: ID workload identity pool
- ID Penyedia: ID penyedia workload identity pool
- Meniru identitas akun layanan: diaktifkan
- Alamat email: Alamat email akun layanan
Pilih tab AD FS dan pastikan kolom ID pihak terpercaya sekarang berisi URL penyedia workload identity pool Anda.
Klik Terapkan, lalu pilih lokasi file untuk menyimpan file konfigurasi kredensial.
Tidak seperti kunci akun layanan, file konfigurasi kredensial tidak berisi rahasia apa pun dan tidak perlu dirahasiakan. Detail tentang file konfigurasi kredensial tersedia di https://google.aip.dev/auth/4117.
Sekarang Anda siap menguji konfigurasi:
Pilih pengguna Active Directory yang akan diuji. Pengguna tersebut dapat berupa pengguna Active Directory dari workload atau pengguna yang saat ini Anda gunakan untuk login.
Untuk menguji konfigurasi dengan pengguna Anda saat ini, klik Uji.
Untuk menguji dengan pengguna lain, pilih Uji > Uji konfigurasi sebagai pengguna dan masukkan kredensial untuk pengguna.
Alat ini sekarang mencoba mengautentikasi ke Google Cloud dengan melakukan langkah-langkah berikut:
- Dapatkan token OIDC atau pernyataan SAML dari AD FS.
- Dapatkan token Layanan Token Keamanan Google.
- Meniru identitas akun layanan.
Jika autentikasi berhasil, Anda akan melihat pesan Pengujian berhasil diselesaikan:
Menggunakan konfigurasi kredensial untuk mengakses Google Cloud
Untuk mengizinkan alat dan library klien menggunakan konfigurasi kredensial Anda, lakukan hal berikut di Windows Server yang menjalankan workload Anda:
- Klik kanan tombol Mulai, lalu klik Jalankan.
- Masukkan
sysdm.cpl
, lalu klik Oke. - Di tab Lanjutan, klik Variabel lingkungan.
Di bagian Variabel sistem, tambahkan dua variabel baru:
Nama Nilai GOOGLE_APPLICATION_CREDENTIALS
Jalur ke file konfigurasi kredensial GOOGLE_EXTERNAL_ACCOUNT_ALLOW_EXECUTABLES
1
Klik OK.
Gunakan alat atau library klien yang mendukung workload identity federation dan dapat menemukan kredensial secara otomatis:
C++
Library Klien Google Cloud untuk C++ mendukung penggabungan workload identity sejak versi v2.6.0. Untuk menggunakan workload identity federation, Anda harus membangun library klien dengan gRPC versi 1.36.0 atau yang lebih baru.
Go
Library klien untuk Go mendukung penggabungan identitas jika menggunakan modul
golang.org/x/oauth2
versi v0.0.0-20210218202405-ba52d332ba99 atau versi lebih baru.Untuk memeriksa versi modul yang digunakan library klien Anda, jalankan perintah berikut:
cd $GOPATH/src/cloud.google.com/go go list -m golang.org/x/oauth2
Java
Library klien untuk Java mendukung penggabungan identitas jika menggunakan artefak
com.google.auth:google-auth-library-oauth2-http
versi 0.24.0 atau versi lebih baru.Untuk memeriksa versi artefak yang digunakan library klien Anda, jalankan perintah Maven berikut di direktori aplikasi Anda:
mvn dependency:list -DincludeArtifactIds=google-auth-library-oauth2-http
Node.js
Library klien untuk Node.js mendukung workload identity federation jika menggunakan paket
google-auth-library
versi 7.0.2 atau versi lebih baru.Untuk memeriksa versi paket yang digunakan library klien Anda, jalankan perintah berikut di direktori aplikasi Anda:
npm list google-auth-library
Saat membuat objek
GoogleAuth
, Anda dapat menentukan project ID atau mengizinkanGoogleAuth
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, lihatREADME
untuk paketgoogle-auth-library
.Python
Library klien untuk Python mendukung penggabungan identitas jika menggunakan paket
google-auth
versi 1.27.0 atau versi 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
.gcloud
Untuk melakukan autentikasi menggunakan workload identity federation, gunakan perintah
gcloud auth login
:gcloud auth login --cred-file=FILEPATH.json
Ganti
FILEPATH
dengan jalur file ke file konfigurasi kredensial.Dukungan untuk workload identity federation di gcloud CLI tersedia di gcloud CLI versi 363.0.0 dan versi lebih baru.
Terraform
Penyedia Google Cloud mendukung workload identity federation jika Anda menggunakan versi 3.61.0 atau versi lebih baru:
terraform { required_providers { google = { source = "hashicorp/google" version = "~> 3.61.0" } } }
gsutil
Untuk melakukan autentikasi menggunakan workload identity federation, gunakan salah satu metode berikut:
Saat Anda menggunakan gsutil bersamaan dengan gcloud, login seperti biasa:
gcloud auth login --cred-file=FILEPATH.json
Saat Anda menggunakan gsutil sebagai aplikasi command line mandiri, edit file .boto untuk menyertakan bagian berikut:
[Credentials] gs_external_account_file = FILEPATH
Dalam kedua kasus tersebut, ganti
FILEPATH
dengan jalur file ke file konfigurasi kredensial.Dukungan untuk workload identity federation di gsutil tersedia di gcloud CLI versi 379.0.0 dan versi lebih baru.
bq
Untuk melakukan autentikasi menggunakan workload identity federation, gunakan perintah
gcloud auth login
, sebagai berikut:gcloud auth login --cred-file=FILEPATH.json
Ganti
FILEPATH
dengan jalur file ke file konfigurasi kredensial.Dukungan untuk workload identity federation di bq tersedia di gcloud CLI versi 390.0.0 dan versi yang lebih baru.
Langkah selanjutnya
- Baca selengkapnya mengenai workload identity federation.
- Pelajari praktik terbaik untuk menggunakan workload identity federation.
- Lihat cara mengelola workload identity pool dan penyedia workload identity.