Mengonfigurasi workload identity federation dengan Active Directory

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:

  1. 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.
  2. 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:

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:

  1. Buka snap-in AD FS MMC dan buka Grup Aplikasi.
  2. Klik Tambahkan grup aplikasi.
  3. Pada halamanSambutan lakukan hal berikut:

    1. Di kolom teks, masukkan nama klien.
    2. Pilih Aplikasi server.
    3. Klik Next.
  4. Di halaman Aplikasi server, lakukan hal berikut:

    1. 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 seperti http://localhost/.

    2. Klik Next.

  5. Di halaman Konfigurasi aplikasi kredensial, lakukan langkah berikut:

    1. Pilih cara klien mengautentikasi. Untuk menggunakan IWA, setel Autentikasi Windows Terintegrasi ke aktif.
    2. Pilih pengguna domain yang dikonfigurasi untuk menjalankan aplikasi Anda.
    3. Klik Next.
  6. Di halaman Ringkasan, tinjau setelan, lalu klik Berikutnya.

  7. 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:

  1. Buka snap-in AD FS MMC dan buka Grup Aplikasi.
  2. Klik Tambahkan grup aplikasi.
  3. Di Halaman sambutan, masukkan nama seperti Workload Identity Federation (test environment), lalu pilih Web API. Kemudian klik Berikutnya.
  4. 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.

  5. Klik Next.

  6. Di halaman Terapkan kebijakan kontrol akses, pilih kebijakan akses yang sesuai, lalu klik Berikutnya.

  7. Di halaman Izin konfigurasi aplikasi, tambahkan aplikasi klien yang Anda buat sebelumnya. Kemudian klik Berikutnya.

  8. Di halaman Ringkasan, tinjau setelan, lalu klik Berikutnya.

  9. Klik Tutup untuk menutup dialog.

SAML atau WS-Trust

Buat kepercayaan pihak terkait di AD FS:

  1. Buka snap-in AD FS MMC.
  2. Buka Kepercayaan pihak terkait.
  3. Klik Tambahkan kepercayaan pihak tepercaya.
  4. Di halaman Selamat Datang pada wizard Tambahkan kepercayaan pihak terkait, lakukan hal berikut:
    1. Pilih Klaim kepekaan
    2. Klik Mulai.
  5. Di halaman Pilih sumber data, lakukan tindakan berikut:
    1. Pilih Masukkan data tentang pihak tepercaya secara manual.
    2. Klik Next.
  6. Di halaman Tentukan nama tampilan, lakukan hal berikut:

    1. Masukkan nama untuk dipercaya.
    2. Klik Next.
  7. 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.

  8. 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

  9. Klik Next.

  10. 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.

  11. Klik Next.

  12. Di halaman Pilih kebijakan kontrol akses, pilih kebijakan kontrol akses yang sesuai, lalu klik Berikutnya.

  13. Di halaman Siap menambah pihak kepercayaan, tinjau setelan, lalu klik Berikutnya.

  14. 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:

  1. Dalam daftar kepercayaan pihak tepercaya, pilih kepercayaan yang baru saja Anda buat, lalu klik Edit kebijakan penerbitan klaim.
  2. Klik Tambahkan Aturan
  3. Pada halaman Pilih jenis aturan di wizard Tambahkan aturan transformasi klaim , lakukan langkah berikut:
    1. Pilih Ubah klaim yang masuk.
    2. Klik Next.
  4. 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.
  5. Pilih Lewati semua nilai klaim, lalu klik Selesai.

  6. Anda juga dapat mengonfigurasi aturan tambahan untuk menyertakan lebih banyak atribut dalam pernyataan SAML.

  7. 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:

  1. Di konsol Google Cloud, pada halaman pemilih project, pilih atau buat project Google Cloud.

    Buka pemilih project

  2. Sebaiknya, gunakan project khusus untuk mengelola workload identity pool dan penyedia workload identity.
  3. Pastikan penagihan telah diaktifkan untuk project Google Cloud Anda.

  4. Enable the IAM, Resource Manager, Service Account Credentials, and Security Token Service APIs.

    Enable the APIs

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:

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

  1. Di Konsol Google Cloud, buka halaman Penyedia workload dan workload pool baru.

    Buka Penyedia workload dan workload pool baru

  2. 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.
  3. Klik Lanjutkan.

  4. 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 dengan ADFS_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.

  5. Klik Lanjutkan.

  6. Di bagian Konfiguraasikan atribut penyedia, tambahkan pemetaan atribut yang telah Anda identifikasi sebelumnya.

  7. Di bagian bawah Kondisi atribut, masukkan kondisi atribut yang telah Anda identifikasi sebelumnya. Jika Anda tidak memiliki kondisi atribut, biarkan kolom ini kosong.

  8. Klik Simpan untuk membuat workload identity pool dan penyedia workload.

gcloud

  1. 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.
  2. 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:

    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:

    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.
    Perlu diperhatikan bahwa, meskipun kunci penyedia enkripsi SAML dikonfigurasi, workload identity federation masih dapat memproses pernyataan teks biasa.

    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 pilih
    • WORKLOAD_POOL_ID: ID pool
    • PROVIDER_ID: ID penyedia
    • KEY_SPECIFICATION: spesifikasi kunci, yang dapat berupa salah satu dari rsa-2048, rsa-3072, dan rsa-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 kunci
    • WORKLOAD_POOL_ID: ID pool
    • PROVIDER_ID: ID penyedia
    • CERTIFICATE_PATH: jalur untuk menulis sertifikat misalnya, saml-certificate.cer atau saml-certificate.pem

    Mengonfigurasi IdP yang sesuai dengan SAML 2.0 untuk mengeluarkan pernyataan SAML terenkripsi

    1. Pindahkan file sertifikat ke server AD FS.
    2. Di server AD FS, klik kanan tombol Mulai (atau tekan Win+X), lalu klik Windows PowerShell (Admin).
    3. 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 Anda
      • PATH: 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 kunci
    • WORKLOAD_POOL_ID: ID pool
    • PROVIDER_ID: ID penyedia

    Algoritma enkripsi SAML yang didukung

    Workload identity federation mendukung algoritma transpor utama berikut:

    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

  1. Enable the IAM, Security Token Service, and Service Account Credentials APIs.

    Enable the APIs

  2. 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.

  3. 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 khusus attribute.NAME.

Konsol

Agar identitas eksternal dapat meniru identitas akun layanan menggunakan Konsol Google Cloud, lakukan hal berikut:

  1. Di Konsol Google Cloud, buka halaman Workload Identity Pool.

    Buka Workload Identity Pool

  2. Temukan workload identity pool yang ingin Anda perbarui lalu pilih pool tersebut.

  3. Untuk memberikan akses ke workload identity pool yang dipilih, klik Berikan akses.

  4. Dalam daftar Akun layanan, pilih akun layanan untuk ditiru oleh identitas eksternal.

  5. 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 menjadi subject dan Nilai atribut menjadi nilai klaim sub dalam token yang dikeluarkan oleh penyedia identitas eksternal Anda.

  6. Untuk menyimpan konfigurasi, klik Simpan, lalu Tutup.

gcloud

Agar identitas eksternal dapat meniru identitas akun layanan menggunakan gcloud CLI, lakukan hal berikut:

  1. Untuk memperoleh nomor project Anda saat ini, jalankan perintah berikut:

    gcloud projects describe $(gcloud config get-value core/project) --format=value\(projectNumber\)
    
  2. 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 layanan
    • PROJECT_NUMBER: nomor project dari project yang berisi workload identity pool
    • POOL_ID: ID pool dari workload identity pool
    • SUBJECT: nilai yang diharapkan untuk atribut yang Anda petakan ke google.subject
    • GROUP: nilai yang diharapkan untuk atribut yang Anda petakan ke google.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:

  1. Saat memerlukan kredensial baru, alat atau library akan meluncurkan Workload Authenticator di latar belakang.
  2. 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.
  3. 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:

  1. Klik kanan tombol Start (atau tekan Win+X), lalu klik Windows PowerShell.
  2. 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.

  3. Luncurkan wwauth.exe:

    & ${env:ProgramData}\wwauth.exe
    

    Dialog konfigurasi akan terbuka:

    Authenticator workload

  4. 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
  5. 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
  6. Pilih tab AD FS dan pastikan kolom ID pihak terpercaya sekarang berisi URL penyedia workload identity pool Anda.

  7. 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:

  1. 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.

  2. 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:

    1. Dapatkan token OIDC atau pernyataan SAML dari AD FS.
    2. Dapatkan token Layanan Token Keamanan Google.
    3. Meniru identitas akun layanan.

    Jika autentikasi berhasil, Anda akan melihat pesan Pengujian berhasil diselesaikan:

    Hasil uji

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:

  1. Klik kanan tombol Mulai, lalu klik Jalankan.
  2. Masukkan sysdm.cpl, lalu klik Oke.
  3. Di tab Lanjutan, klik Variabel lingkungan.
  4. Di bagian Variabel sistem, tambahkan dua variabel baru:

    Nama Nilai
    GOOGLE_APPLICATION_CREDENTIALS Jalur ke file konfigurasi kredensial
    GOOGLE_EXTERNAL_ACCOUNT_ALLOW_EXECUTABLES 1
  5. Klik OK.

  6. 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 mengizinkan GoogleAuth 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 README untuk paket google-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 paket google-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