Mengonfigurasi Workload Identity Federation dengan penyedia identitas lain

Panduan ini menjelaskan cara menggunakan Workload Identity Federation dengan penyedia identitas (IdP) lain.

Workload yang berjalan di luar Google Cloud mungkin memiliki akses di kredensial khusus lingkungan yang ada—misalnya:

  • Workload mungkin dapat memperoleh pernyataan SAML atau token OpenID Connect (OIDC) dari penyedia identitas (IdP) yang berjalan di lingkungan yang sama.

    Untuk mengautentikasi ke Google Cloud, Anda dapat mengizinkan workload menukar kredensial khusus lingkungannya dengan kredensial Google Cloud yang memiliki jangka waktu pendek menggunakan Workload Identity Federation.

  • Workload mungkin memiliki sertifikat X.509. Lihat Mengonfigurasi Workload Identity Federation dengan Sertifikat X.509 (Pratinjau) untuk mengetahui detail selengkapnya. Persyaratan kunci penandatanganan SAML X.509 mencakup hal berikut:

    • Kunci publik RSA yang digabungkan dalam sertifikat X.509 v3.

    • Persyaratan validitas sertifikat:

      • notBefore: stempel waktu yang tidak lebih dari 7 hari ke depan
      • notAfter: stempel waktu yang tidak lebih dari 20 tahun ke depan
    • Algoritma yang direkomendasikan:

    Penyedia workload identity pool dapat dikonfigurasi dengan maksimal tiga kunci penandatanganan secara bersamaan. Jika ada beberapa kunci, Google Cloud akan melakukan iterasi dan mencoba menggunakan setiap kunci yang belum habis masa berlakunya untuk memenuhi permintaan pertukaran token.

    Praktik terbaiknya, sebaiknya Anda tidak menggunakan kembali pasangan kunci yang sama dengan layanan lain.

  • Workload mungkin memiliki jenis kredensial lain.

    Dengan menggabungkan Workload Identity Federation dengan broker token kustom, Anda dapat mengizinkan workload menggunakan jenis kredensial lain untuk mendapatkan kredensial Google Cloud yang memiliki jangka waktu pendek.

Menggunakan Workload Identity Federation dapat membantu Anda mengurangi jumlah kredensial yang memerlukan rotasi.

Bagian berikut menjelaskan cara menggunakan Workload Identity Federation dengan IdP yang mendukung protokol autentikasi OpenID Connect (OIDC) atau SAML.

Menyiapkan IdP eksternal Anda

Langkah ini hanya perlu dilakukan satu kali untuk setiap IdP.

Sebelum memulai, verifikasi IdP eksternal Anda memenuhi persyaratan berikut:

OIDC

  • IdP mendukung OpenID Connect 1.0.

  • IdP memiliki URI penerbit.

  • Metadata OIDC IdP disediakan dengan salah satu cara berikut:

    • Endpoint JWKS yang diamankan dengan SSL dan TLS. URL endpoint harus diawali dengan https://, dan endpoint dapat diakses secara publik melalui internet.

      Google Cloud menggunakan endpoint ini untuk mendownload serangkaian kunci IdP Anda dan menggunakan serangkaian kunci ini untuk memvalidasi token.

      Endpoints yang diamankan dengan sertifikat yang ditandatangani sendiri tidak didukung oleh Google Cloud. Secara khusus, kolom x5c dan x5t tidak didukung dan harus dihapus dari JWK OIDC.

    • File JWKS OIDC yang diupload ke Google Cloud. Dengan menggunakan metode ini, endpoint tidak perlu bersifat publik.

SAML

  • IdP mendukung SAML 2.0.

  • IdP menyediakan dokumen metadata SP SAML yang menjelaskan konfigurasi penyedia layanan SAML dan berisi sertifikat penandatanganan IdP.

    Google Cloud menggunakan sertifikat ini untuk memvalidasi pernyataan dan respons SAML.

Jika IdP Anda memenuhi kriteria ini, lakukan hal berikut:

OIDC

Konfigurasikan IdP Anda sehingga beban kerja Anda dapat memperoleh token ID yang memenuhi kriteria berikut:

  • Token ditandatangani menggunakan algoritme RS256 atau ES256.
  • Token berisi klaim aud dengan nilai berikut:

    https://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID/providers/WORKLOAD_PROVIDER_ID
    

    Ganti kode berikut:

    • PROJECT_NUMBER: nomor project pada project Google Cloud yang Anda gunakan untuk membuat workload identity pool.
    • POOL_ID: ID pilihan Anda yang mengidentifikasi workload identity pool. Anda harus menggunakan ID yang sama saat nanti membuat workload identity pool.
    • WORKLOAD_PROVIDER_ID: ID pilihan Anda yang mengidentifikasi penyedia workload identity pool. Anda harus menggunakan ID yang sama saat membuat penyedia workload identity pool nantinya.

    Atau, Anda dapat mengonfigurasi penyedia workload identity pool yang diharapkan audiens kustom.

  • Token berisi klaim exp untuk masa mendatang dan klaim iat yang sudah lalu.

    Nilai exp harus lebih besar dari nilai iat maksimal 24 jam.

Biasanya, sebaiknya gunakan token ID saat melakukan pertukaran token, karena token ID mencerminkan identitas pengguna. Jika Anda memutuskan untuk menggunakan token akses, pastikan token akses memenuhi persyaratan tambahan berikut:

  • Token akses berformat Token Web JSON
  • Token akses bersi klaim ISSUER sehingga URL poin ISSUER/.well-known/openid-configuration yang mengarah ke endpoint metadata OIDC IdP.

  • Untuk mengupload kunci JWK lokal, lihat Mengelola JWK OIDC.

SAML

Konfigurasikan IdP Anda agar pernyataan SAML berisi elemen yang memenuhi kriteria berikut:

  • elemen Issuer yang ditetapkan ke ID Entitas yang dikonfigurasi di penyedia workload identity pool. Format penerbit harus dihapus atau ditetapkan ke urn:oasis:names:tc:SAML:2.0:nameid-format:entity.
  • elemen Subject dengan:
    • elemen NameID.
    • tepat satu elemen SubjectConfirmation dengan Method yang ditetapkan ke urn:oasis:names:tc:SAML:2.0:cm:bearer.
    • elemen SubjectConfirmationData dengan NotOnOrAfter yang ditetapkan ke stempel waktu yang terjadi di masa mendatang dan tanpa nilai NotBefore.
  • elemen Conditions dengan:

    • NotBefore dihapus atau sudah berlalu.
    • NotOnOrAfter dihapus atau di masa mendatang.
    • Audience yang diformat sebagai berikut:

      https://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID/providers/WORKLOAD_PROVIDER_ID
      

      Ganti kode berikut:

      • PROJECT_NUMBER: nomor project pada project Google Cloud yang Anda gunakan untuk membuat workload identity pool.
      • POOL_ID: ID pilihan Anda yang mengidentifikasi workload identity pool. Anda harus menggunakan ID yang sama saat nanti membuat workload identity pool.
      • WORKLOAD_PROVIDER_ID: ID pilihan Anda yang mengidentifikasi penyedia workload identity pool. Anda harus menggunakan ID yang sama saat membuat penyedia workload identity pool nantinya.
  • setidaknya satu elemen AuthnStatement.

  • elemen SessionNotOnOrAfter dengan stempel waktu yang terjadi di masa mendatang. Atau, hapus elemen tersebut.

Untuk pernyataan SAML yang disertakan dalam respons SAML, respons SAML harus berisi:

  • hanya satu pernyataan yang memenuhi kriteria pernyataan SAML yang dijelaskan sebelumnya di bagian ini.
  • atribut IssueInstant dengan nilai kurang dari 1 jam yang lalu.
  • StatusCode urn:oasis:names:tc:SAML:2.0:status:Success.

Salah satu pernyataan SAML, respons, atau keduanya harus ditandatangani.

Mengonfigurasi Workload Identity Federation

Langkah ini hanya perlu dilakukan satu kali untuk setiap IdP. Anda kemudian dapat menggunakan workload identity pool dan penyedia workload yang sama untuk beberapa workload serta di beberapa project Google Cloud.

Untuk mulai mengonfigurasi Workload Identity Federation, lakukan langkah berikut:

  1. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  2. Sebaiknya, gunakan project khusus untuk mengelola workload identity pool dan penyedia workload identity.
  3. Make sure that billing is enabled for your Google Cloud project.

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

    Enable the APIs

Mengelola JWK OIDC (Opsional)

Bagian ini menunjukkan cara mengelola JWK OIDC yang diupload sendiri di penyedia oidc workload identity pool.

Membuat penyedia dan mengupload JWK OIDC

Untuk membuat JWK OIDC, lihat Implementasi JWT, JWS, JWE, JWK, dan JWA.

Untung mengupload file JWK OIDC saat Anda membuat penyedia workload identity pool, jalankan dengan perintah gcloud iam workload-identity-pools providers create-oidc dengan --jwk-json-path="JWK_JSON_PATH". Ganti JWK_JSON_PATH dengan jalur ke file JSON JWK.

Operasi ini membuat kunci yang diupload dengan kunci yang ada dalam file.

Perbarui JWK OIDC

Untuk mengupdate JWK OIDC, jalankan perintah gcloud iam workload-identity-pools providers update-oidc dengan --jwk-json-path="JWK_JSON_PATH". Ganti JWK_JSON_PATH dengan jalur ke file JSON JWK.

Operasi ini mengganti kunci apa pun yang sudah diupload dengan kunci yang ada dalam file. Anda tidak dapat memulihkan kunci yang diganti.

Hapus semua JWK OIDC yang diupload

Untuk menghapus semua JWK OIDC yang diupload dan kembali menggunakan URI penerbit untuk mengambil kunci, jalankan perintah gcloud iam workload-identity-pools providers update-oidc dengan --jwk-json-path="JWK_JSON_PATH". Ganti JWK_JSON_PATH dengan jalur ke file kosong. Gunakan tanda --issuer-uri untuk menetapkan URI penerbit.

Operasi ini menghapus semua kunci yang sudah diupload dengan kunci yang ada di file. Anda tidak dapat memulihkan kunci yang dihapus.

Menentukan pemetaan dan kondisi atribut

Token OIDC atau pernyataan SAML yang dikeluarkan oleh IdP Anda mungkin berisi beberapa atribut, dan Anda harus menentukan atribut yang ingin digunakan sebagai ID subjek (google.subject) di Google Cloud.

Secara opsional, Anda dapat memetakan atribut tambahan. Selanjutnya, Anda dapat merujuk ke atribut ini saat memberikan akses ke resource.

OIDC

Pemetaan atribut Anda dapat menggunakan klaim yang tersemat pada token ID atau token akses yang dikeluarkan oleh IdP eksternal.

Anda harus memetakan salah satu klaim ini ke google.subject untuk mengidentifikasi pengguna secara unik. Untuk melindungi dari ancaman proofing, pilih klaim dengan nilai unik yang tidak dapat diganti.

Banyak IdP mengisi klaim sub dengan ID unik dan tidak dapat diubah. Untuk IdP ini, pertimbangkan untuk memetakan klaim sub ke google.subject:

google.subject=assertion.sub

Hindari penggunaan klaim seperti email untuk tujuan ini. Alamat email biasanya dapat ditetapkan ulang atau diubah, sehingga tidak secara unik dan permanen mengidentifikasi pengguna.

SAML

Pemetaan atribut Anda dapat menggunakan elemen <Subject> dan <Attribute> yang disematkan dalam pernyataan yang dikeluarkan oleh IdP eksternal. Atribut SAML dapat dirujuk menggunakan kata kunci berikut:

  • assertion.subject berisi NameID dari pengguna yang diautentikasi yang ditemukan pada elemen <Subject>.
  • assertion.attributes['ATTRIBUTE_NAME'] berisi daftar nilai untuk <Attribute> yang serupa.

Anda harus memetakan salah satu klaim ini ke google.subject untuk mengidentifikasi pengguna secara unik. Untuk melindungi dari ancaman spoofing, pilih klaim dengan nilai unik yang tidak dapat diubah.

Banyak IdP mengisi NameId dengan ID yang unik dan tidak dapat diubah. Untuk IdP ini, pertimbangkan untuk memetakan atribut NameId ke google.subject:

google.subject=assertion.subject

Hindari penggunaan atribut seperti http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress untuk tujuan ini. Alamat email biasanya dapat ditetapkan ulang atau diubah, sehingga sehingga tidak mengidentifikasi pengguna secara unik dan permanen.

Tentukan kondisi atribut (opsional). 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.

OIDC

Anda dapat menggunakan kondisi atribut untuk membatasi pengguna yang dapat menggunakan Workload Identity Federation untuk mendapatkan token Google Cloud dengan masa berlaku pendek.

Misalnya, kondisi berikut membatasi akses ke token yang berisi klain service_account kustom dengan nilai true:

assertion.service_account==true

SAML

Anda dapat menggunakan kondisi atribut untuk membatasi pengguna yang dapat menggunakan Workload Identity Federation untuk mendapatkan token Google Cloud dengan masa berlaku pendek.

Misalnya, kondisi berikut membatasi akses ke pernyataan yang berisi atribut https://example.com/SAML/Attributes/AllowGcpFederation kustom dengan nilai true:

assertion.attributes['https://example.com/SAML/Attributes/AllowGcpFederation'][0]=='true'

Membuat workload identity pool dan penyedia workload

Peran yang diperlukan

Untuk mendapatkan izin yang diperlukan guna mengonfigurasi Workload Identity Federation, minta administrator untuk memberi Anda peran IAM berikut pada project:

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.

Atau, 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.

Sekarang Anda telah mengumpulkan semua informasi yang diperlukan untuk membuat workload identity pool dan penyedia workload.

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 sebagai berikut:

    OIDC

    • Pada Pilih penyedia, pilih OpenID Connect (OIDC).
    • Pada Nama penyedia, masukkan nama penyedia. Nama ini juga digunakan sebagai ID penyedia. Anda tidak dapat mengubah ID penyedia setelah penyedia dibuat.
    • Pada URL Penerbit, masukkan URL penerbit IdP Anda. URL harus dimulai dengan https://
    • Opsional: Di file JWK (JSON), pilih file JWK yang akan diupload. Jika kolom ini tidak tersedia, Google Cloud akan mencoba mengambil JWK dari penerbit.
    • Audiens yang diizinkan: Audiens token ID yang diharapkan.

    SAML

    • Pada Pilih penyedia, pilih SAML.
    • Pada Nama penyedia, masukkan nama penyedia. Nama ini juga digunakan sebagai ID penyedia. Anda tidak dapat mengubah ID penyedia setelah penyedia dibuat.
    • Pada file Metadata IDP (XML), upload dokumen XML metadata SAML yang disediakan oleh penyedia identitas Anda.
  5. Klik Lanjutkan.

  6. Pada bagian Konfirgurasi atribut penyedia, tambahkan pemetaan atribut yang Anda identifikasi sebelumnya dalam panduan ini.

  7. Pada bagian Kondisi atribut, masukkan kondisi atribut yang Anda identifikasi sebelumnya dalam panduan ini. Biarkan kolom ini kosong jika Anda tidak memiliki kondisi atribut.

  8. Untuk membuat workload identity pool dan penyedia workload klik Simpan.

gcloud

  1. 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.
  2. Untuk menambahkan penyedia workload identity pool, lakukan hal berikut:

    OIDC

    Untuk menambahkan penyedia workload identity pool OIDC, jalankan perintah berikut:

    gcloud iam workload-identity-pools providers create-oidc WORKLOAD_PROVIDER_ID \
        --location="global" \
        --workload-identity-pool="POOL_ID" \
        --issuer-uri="ISSUER" \
        --allowed-audiences="AUDIENCE" \
        --attribute-mapping="MAPPINGS" \
        --attribute-condition="CONDITIONS"
        --jwk-json-path="JWK_JSON_PATH"
    

    Ganti kode berikut:

    • WORKLOAD_PROVIDER_ID: ID penyedia workload identity pool unik yang Anda pilih.
    • POOL_ID: ID workload identity pool yang telah Anda buat sebelumnya.
    • ISSUER: URI penerbit seperti yang didefinisikan dalam metadata OIDC.
    • AUDIENCE: Audiens yang diharapkan dari token ID, yang bagi banyak penyedia, cocok dengan client ID.
    • MAPPINGS: Daftar yang dipisahkan koma untuk pemetaan atribut yang telah Anda buat sebelumnya dalam panduan ini.
    • CONDITIONS: Kondisi atribut opsional yang telah Anda buat sebelumnya dalam panduan ini. Hapus parameter jika Anda tidak memiliki kondisi atribut.
    • JWK_JSON_PATH: Jalur opsional ke JWK OIDC yang diupload secara lokal. Jika parameter ini tidak tersedia, Google Cloud akan menggunakan jalur /.well-known/openid-configuration IdP Anda untuk source JWK yang berisi kunci publik.

    SAML

    Untuk menambahkan penyedia workload identity pool SAML, jalankan perintah berikut:

    gcloud iam workload-identity-pools providers create-saml WORKLOAD_PROVIDER_ID \
        --location="global" \
        --workload-identity-pool="POOL_ID" \
        --idp-metadata-path="IDP_METADATA_PATH" \
        --attribute-mapping="MAPPINGS" \
        --attribute-condition="CONDITIONS"
    

    Ganti kode berikut:

    • POOL_ID: ID pool
    • IDP_METADATA_PATH: jalur lokal ke dokumen metadata IdP SAML
    • MAPPINGS: daftar yang dipisahkan koma untuk pemetaan atribut yang Anda buat sebelumnya dalam panduan ini
    • CONDITIONS: Opsional: the kondisi atribut yang Anda buat sebelumnya dalam panduan ini

    Awalan gcp- dicadangkan dan tidak dapat digunakan di workforce identity pool atau ID penyedia workforce identity pool.

    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 WORKLOAD_PROVIDER_ID \
        --location global \
        --use encryption \
        --spec KEY_SPECIFICATION

    Ganti kode berikut:

    • KEY_ID: nama kunci yang Anda pilih
    • WORKLOAD_POOL_ID: ID pool
    • WORKLOAD_PROVIDER_ID: ID penyedia workforce identity pool
    • 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 WORKLOAD_PROVIDER_ID \
        --location global \
        --format "value(keyData.key)" \
        > CERTIFICATE_PATH

    Ganti kode berikut:

    • KEY_ID: adalah nama kunci
    • WORKLOAD_POOL_ID: ID pool
    • WORKLOAD_PROVIDER_ID: ID penyedia workforce identity pool
    • 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

    Konfigurasikan IdP SAML untuk menggunakan sertifikat publik yang didownload dari langkah terakhir untuk mengenkripsi pernyataan SAML yang dikeluarkan. Konsultasikan dengan tim IdP Anda untuk mendapatkan petunjuk khusus.

    Setelah mengonfigurasi IdP untuk mengenkripsi pernyataan SAML, sebaiknya Anda memeriksa 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 WORKLOAD_PROVIDER_ID \
          --location global

    Ganti kode berikut:

    • KEY_ID: adalah nama kunci
    • WORKLOAD_POOL_ID: ID pool
    • WORKLOAD_PROVIDER_ID: ID penyedia workforce identity pool

    Algoritma enkripsi SAML yang didukung

    Workload identity federation mendukung algoritma transpor utama berikut:

    Workload identity federation mendukung algoritma enkripsi blok berikut:

Mengautentikasi workload

Langkah ini harus dilakukan satu kali untuk setiap workload.

Mengizinkan workload eksternal Anda mengakses resource Google Cloud

Untuk memberi beban kerja Anda akses ke resource Google Cloud, sebaiknya Anda memberikan akses resource langsung ke akun utama. Dalam hal ini, prinsipal adalah pengguna gabungan. Beberapa produk Google Cloud memiliki batasan Google Cloud API. Jika beban kerja Anda memanggil endpoint API yang memiliki batasan, Anda dapat menggunakan peniruan identitas akun layanan. Dalam hal ini, akun utama adalah akun layanan Google Cloud, yang bertindak sebagai identitas. Anda memberikan akses ke akun layanan di resource.

Akses resource langsung

Anda dapat memberikan akses ke identitas gabungan langsung di resource menggunakan konsol Google Cloud atau gcloud CLI.

Konsol

Untuk menggunakan konsol Google Cloud guna memberikan peran IAM langsung di resource, Anda harus membuka halaman resource, lalu memberikan peran. Contoh berikut menunjukkan cara membuka halaman Cloud Storage dan memberikan peran Storage Object Viewer (roles/storage.objectViewer) ke identitas gabungan langsung di bucket Cloud Storage.

  1. Di Konsol Google Cloud, buka halaman Bucket Cloud Storage.

    Buka Bucket

  2. Pada daftar bucket, klik nama bucket tempat Anda ingin memberi peran.

  3. Pilih tab Permissions di dekat bagian atas halaman.

  4. Klik tombol Berikan akses.

    Dialog Add principals akan muncul.

  5. 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 project
    • POOL_ID: ID workload pool
    • SUBJECT: 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 project
    • WORKLOAD_POOL_ID: ID workload pool
    • GROUP: 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 project
    • WORKLOAD_POOL_ID: ID workload pool
    • ATTRIBUTE_NAME: salah satu atribut yang dipetakan dari IdP Anda
    • ATTRIBUTE_VALUE: nilai atribut
  6. 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.

  7. Klik Simpan.

gcloud

Untuk menggunakan gcloud CLI guna memberikan peran IAM pada resource dalam project, lakukan tindakan berikut:

  1. Dapatkan nomor project dari project tempat resource ditentukan.

    gcloud projects describe $(gcloud config get-value core/project) --format=value\(projectNumber\)
    
  2. Berikan akses ke resource.

    Untuk menggunakan gcloud CLI guna memberikan peran Storage Object Viewer (roles/storage.objectViewer) ke identitas eksternal yang memenuhi kriteria tertentu, jalankan perintah berikut.

    Menurut subjek

    gcloud storage buckets add-iam-policy-binding BUCKET_ID \
        --role=roles/storage.objectViewer \
        --member="principal://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID/subject/SUBJECT"

    Menurut grup

    gcloud storage buckets add-iam-policy-binding BUCKET_ID \
        --role=roles/storage.objectViewer \
        --member="principalSet://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID/group/GROUP"

    Menurut atribut

    gcloud storage buckets add-iam-policy-binding BUCKET_ID \
        --role=roles/storage.objectViewer \
        --member="principalSet://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID/attribute.ATTRIBUTE_NAME/ATTRIBUTE_VALUE"

    Ganti kode berikut:

    • BUCKET_ID: bucket tempat akses akan diberikan
    • 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
    • ATTRIBUTE_VALUE: nilai atribut kustom dalam pemetaan atribut Anda

    Anda dapat memberikan peran di resource Google Cloud mana pun yang mendukung kebijakan izin IAM.

Peniruan akun layanan

  1. Untuk membuat akun layanan bagi beban kerja eksternal, lakukan langkah-langkah berikut:

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

      Enable the APIs

    2. Buat akun layanan yang merepresentasikan workload. Sebaiknya Anda menggunakan akun layanan khusus untuk setiap workload. Akun layanan tidak perlu berada dalam project yang sama dengan workload identity pool, tetapi Anda harus merujuk ke project yang berisi akun layanan.

    3. Berikan akses akun layanan untuk resource yang ingin diakses oleh identitas eksternal.

    4. Berikan peran Workload Identity User (roles/iam.workloadIdentityUser) ke akun layanan.

  2. Untuk memberikan akses ke identitas gabungan menggunakan peniruan identitas akun layanan menggunakan Konsol Google Cloud atau gcloud CLI:

Konsol

Untuk menggunakan konsol Google Cloud guna memberikan peran IAM ke identitas gabungan dengan akun layanan, lakukan tindakan berikut:

Akun Layanan dalam project yang sama

  1. Untuk memberikan akses menggunakan peniruan identitas akun layanan untuk akun layanan di project yang sama, lakukan hal berikut:

    1. Buka halaman Workload Identity Pool.

      Buka Workload Identity Pool

    2. Pilih Berikan akses.

    3. Pada dialog Grant access to service account, pilih Grant access using Service Account impersonation.

    4. Dalam daftar Akun layanan, pilih akun layanan untuk ditiru oleh identitas eksternal, lalu lakukan hal berikut:

    5. Untuk memilih identitas dalam kumpulan yang dapat meniru identitas akun layanan, lakukan salah satu tindakan berikut:

      • Untuk mengizinkan hanya identitas tertentu dari workload identity pool untuk meniru identitas akun layanan, pilih Hanya identitas yang cocok dengan filter.

      • Di daftar Nama atribut, pilih atribut yang ingin Anda filter.

      • Di kolom Nilai atribut, masukkan nilai atribut yang diharapkan; misalnya, jika Anda menggunakan pemetaan atribut google.subject=assertion.sub, tetapkan nama Atribut 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.

Akun layanan di project lain

  1. Untuk memberikan akses menggunakan peniruan akun layanan untuk akun layanan di project lain, lakukan hal berikut:

    1. Buka halaman Akun Layanan.

      Buka Akun Layanan

    2. Pilih akun layanan yang ingin Anda tirukan identitasnya.

    3. Klik Kelola akses.

    4. Klik Tambahkan akun utama.

    5. Di kolom New principal, masukkan salah satu ID akun utama berikut untuk identitas dalam kumpulan Anda yang akan meniru identitas akun layanan.

      Menurut subjek

      principal://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID/subject/SUBJECT
      

      Ganti kode berikut:

      • PROJECT_NUMBER: nomor project
      • POOL_ID: ID workload pool
      • SUBJECT: 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 project
      • WORKLOAD_POOL_ID: ID workload pool
      • GROUP: 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 project
      • WORKLOAD_POOL_ID: ID workload pool
      • ATTRIBUTE_NAME: salah satu atribut yang dipetakan dari IdP Anda
      • ATTRIBUTE_VALUE: nilai atribut

      Menurut kolam renang

      principalSet://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID/*
      

      Ganti kode berikut:

      • PROJECT_NUMBER: nomor project
      • WORKLOAD_POOL_ID: ID workload pool
    6. Di Select a role, pilih peran Workload Identity User (roles/iam.workloadIdentityUser).

    7. Untuk menyimpan konfigurasi, klik Simpan.

gcloud

Untuk menggunakan gcloud CLI guna memberikan peran Pemilik Workload Identity (roles/iam.workloadIdentityUser) ke identitas eksternal yang memenuhi kriteria tertentu, jalankan perintah berikut.

Menurut subjek

gcloud iam service-accounts add-iam-policy-binding SERVICE_ACCOUNT_EMAIL \
    --role=roles/iam.workloadIdentityUser \
    --member="principal://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID/subject/SUBJECT"

Menurut grup

gcloud iam service-accounts add-iam-policy-binding SERVICE_ACCOUNT_EMAIL \
    --role=roles/iam.workloadIdentityUser \
    --member="principalSet://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID/group/GROUP"

Menurut atribut

gcloud iam service-accounts add-iam-policy-binding SERVICE_ACCOUNT_EMAIL \
    --role=roles/iam.workloadIdentityUser \
    --member="principalSet://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID/attribute.ATTRIBUTE_NAME/ATTRIBUTE_VALUE"

Ganti kode berikut:

  • SERVICE_ACCOUNT_EMAIL: alamat email akun 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
  • ATTRIBUTE_VALUE: nilai atribut kustom dalam pemetaan atribut Anda

Mendownload konfigurasi kredensial

Bagian ini menjelaskan cara mendownload konfigurasi kredensial menggunakan konsol Google Cloud.

Agar workload dapat mengakses library klien, Anda harus mendownload dan mengonfigurasi kredensial default aplikasi (ADC) terlebih dahulu dengan melakukan hal berikut:

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

    Buka Workload Identity Pool
  2. Di tabel, pilih pool Anda untuk membuka halaman detail pool.

  3. Klik Grant access.

  4. Pilih Berikan akses menggunakan identitas gabungan (Direkomendasikan).

  5. Untuk mendownload Kredensial Default Aplikasi (ADC) agar workload Anda dapat mengakses library klien, lakukan hal berikut:

    1. Klik Download config.

    2. Pada dialog Configure your application, lakukan hal berikut:

      1. Di menu drop-down Penyedia, pilih penyedia Anda.

      2. Di Jalur token OIDC atau Jalur pernyataan SAML, masukkan jalur tempat token atau pernyataan berada.

      3. Di menu drop-down Format type, pilih format.

    3. Klik Download configuration, dan catat jalur tempat Anda menyimpan file.

Membuat konfigurasi kredensial

Library Klien Cloud, gcloud CLI, dan Terraform dapat otomatis memperoleh kredensial eksternal, dan menggunakan kredensial ini untuk mengakses Google Cloud. Agar library dan alat dapat menyelesaikan proses ini, Anda harus menyediakan file konfigurasi kredensial. File ini menentukan hal berikut:

  • Tempat Anda bisa memperoleh kredensial eksternal
  • Workload identity pool dan penyedia workload identity yang akan digunakan
  • Akun layanan yang akan ditiru identitasnya, jika Anda menggunakan peniruan akun layanan

Library Klien Cloud mendapatkan kredensial eksternal dari file local, yaitu HTTP URL, dengan menjalankan file lokal yang dapat dieksekusi:

  • Kredensial dari file yang dapat dieksekusi: Library akan meluncurkan file yang dapat dieksekusi setiap kali mereka membutuhkan kredensial baru. Jika file yang dapat dieksekusi berhasilkan mendapatkan kredensial eksternal baru, file tersebut harus menulis dokumen JSON ke STDOUT yang terlihat sebagai berikut:

    OIDC

    {
      "version": 1,
      "success": true,
      "token_type": "urn:ietf:params:oauth:token-type:id_token",
      "id_token": "HEADER.PAYLOAD.SIGNATURE",
      "expiration_time": 1620499962
    }
    

    Jika file yang dapat dieksekusi gagal mendapatkan kredensial baru, file tersebut harus menulis dokumen JSON ke STDOUT yang terlihat seperti berikut:

    {
      "version": 1,
      "success": false,
      "code": "401",
      "message": "Caller not authorized."
    }
    

    Dokumen JSON menggunakan kolom berikut:

    • version: Versi output JSON. Hanya versi 1 yang didukung.
    • success: Status respons.

      Saat true, respons harus berisi kolom id_token dan token_type. File yang dapat dieksekusi harus keluar dengan kode keluar 0.

      Saat false, respons harus berisi kolom code dan message serta keluar dengan nilai bukan nol.

    • token_type: Jenis token kredensial eksternal. Nilai yang didukung adalah:

      • urn:ietf:params:oauth:token-type:id_token
      • urn:ietf:params:oauth:token-type:jwt
    • id_token: Kredensial eksternal.

    • expiration_time: Akhir masa berlaku token OIDC dalam detik (waktu epoch unix). Kolom ini hanya diperlukan jika file output telah ditentukan dalam konfigurasi kredensial.

    • code: String kode error.

    • message: Pesan error.

    SAML

    {
      "version": 1,
      "success": true,
      "token_type": "urn:ietf:params:oauth:token-type:saml2",
      "saml_response": "...",
      "expiration_time": 1620499962
    }
    

    Jika file yang dapat dieksekusi gagal mendapatkan kredensial baru, file tersebut harus menulis dokumen JSON ke STDOUT yang terlihat seperti berikut:

    {
      "version": 1,
      "success": false,
      "code": "401",
      "message": "Caller not authorized."
    }
    

    Dokumen JSON menggunakan kolom berikut:

    • version: Versi output JSON. Hanya versi 1 yang didukung.
    • success: Status respons.

      Saat true, respons harus berisi kolom id_token dan token_type. File yang dapat dieksekusi harus keluar dengan kode keluar 0.

      Saat false, respons harus berisi kolom code dan message serta keluar dengan nilai bukan nol.

    • token_type: Jenis token kredensial eksternal. Harus berupa urn:ietf:params:oauth:token-type:saml2.

    • saml_response: Respons SAML atau pernyataan SAML berenkode base64.

    • expiration_time: Akhir masa berlaku pernyataan dalam detik (waktu epoch unix). Kolom ini hanya diperlukan jika file output telah ditentukan dalam konfigurasi kredensial.

    • code: String kode error.

    • message: Pesan error.

    Saat meluncurkan file yang dapat dieksekusi, library klien menetapkan variabel lingkungan berikut:

    • GOOGLE_EXTERNAL_ACCOUNT_AUDIENCE: Audiens dari konfigurasi kredensial. Selalu ada
    • GOOGLE_EXTERNAL_ACCOUNT_TOKEN_TYPE: Jenis token subjek yang diharapkan. Selalu ada
    • GOOGLE_EXTERNAL_ACCOUNT_IMPERSONATED_EMAIL: Email akun layanan. Hanya ada jika peniruan akun layanan digunakan.
    • GOOGLE_EXTERNAL_ACCOUNT_OUTPUT_FILE: Lokasi file output dari konfigurasi kredensial. Hanya ada jika ditetapkan pada konfigurasi kredensial.

    Untuk menggunakan kredensial dari file yang dapat dieksekusi, Anda harus menetapkan variabel lingkungan GOOGLE_EXTERNAL_ACCOUNT_ALLOW_EXECUTABLES ke 1.

  • Kredensial dari file: Library ini membaca kredensial eksternal dari teks biasa atau file JSON lokal. Contoh:

    JSON

    {
      "mytoken": "ey...
    }
    

    Teks

    ey...
    

    Kredensial eksternal dapat berupa:

    • token OIDC
    • respons SAML
    • pertanyaan SAML berenkode base64

    Anda harus mengupdate file secara berkala agar selalu berisi kredensial yang valid. Misalnya, jika token OIDC atau pernyataan SAML valid selama satu jam, Anda harus me-refresh file setidaknya sekali setiap jam.

  • Kredensial dari URL: Setiap kali memerlukan kredensial baru, library melakukan permintaan GET ke endpoint HTTP. Endpoint harus menampilkan teks biasa atau respons JSON yang setara dengan format yang digunakan oleh kredensial dari file.

Untuk membuat file konfigurasi kredensial, laukan hal berikut:

Kredensial dari file yang dapat dieksekusi

gcloud iam workload-identity-pools create-cred-config \
    projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID/providers/WORKLOAD_PROVIDER_ID \
    --service-account=SERVICE_ACCOUNT_EMAIL \
    --service-account-token-lifetime-seconds=SERVICE_ACCOUNT_TOKEN_LIFETIME \
    --output-file=FILEPATH.json \
    --executable-command=EXECUTABLE_COMMAND \
    --executable-timeout-millis=EXECUTABLE_TIMEOUT \
    --executable-output-file=EXECUTABLE_OUTPUT_FILE

Ganti kode berikut:

  • PROJECT_NUMBER: Nomor project dari project yang berisi workload identity pool.
  • POOL_ID: ID workload identity pool.
  • WORKLOAD_PROVIDER_ID: ID penyedia workload identity pool.
  • SERVICE_ACCOUNT_EMAIL: Jika Anda menggunakan peniruan identitas akun layanan, ganti dengan alamat email akun layanan. Hapus tanda ini jika Anda tidak menggunakan peniruan identitas akun layanan.
  • SERVICE_ACCOUNT_TOKEN_LIFETIME: Jika Anda menggunakan peniruan akun layanan, ganti dengan masa aktif token akses akun layanan, dalam hitungan detik. Jika masa aktif tidak diberikan, default-nya adalah satu jam. Hapus tanda ini jika Anda tidak menggunakan peniruan akun layanan. Untuk menentukan masa berlaku lebih lama satu jam, Anda harus mengonfigurasi constraints/iam.allowServiceAccountCredentialLifetimeExtension batasan kebijakan organisasi.
  • FILEPATH: File untuk menyimpan konfigurasi.
  • EXECUTABLE_COMMAND: Perintah lengkap, termasuk argumen, yang akan dijalankan untuk mengambil token ID OIDC—misalnya, --executable-command="/path/to/command --foo=bar".
  • EXECUTABLE_TIMEOUT: Durasi opsional dalam milidetik untuk menunggu file yang dapat dieksekusi dijalankan (defaultnya adalah 30 detik).
  • EXECUTABLE_OUTPUT_FILE: Jalur yang mengarah ke kredensial 3PI yang dihasilkan oleh file yang dapat dieksekusi. Hal ini berguna untuk menyimpan kredensial dalam cache. Dengan menentukan jalur ini, library Auth akan memeriksa keberadaannya terlebih dahulu sebelum menjalankan file yang dapat dieksekusi.

Kredensial dari file

gcloud iam workload-identity-pools create-cred-config \
    projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID/providers/WORKLOAD_PROVIDER_ID \
    --service-account=SERVICE_ACCOUNT_EMAIL \
    --service-account-token-lifetime-seconds=SERVICE_ACCOUNT_TOKEN_LIFETIME \
    --output-file=FILEPATH.json \
    --credential-source-file=TOKEN_FILEPATH \
    --credential-source-type=SOURCE_TYPE \
    --credential-source-field-name=FIELD_NAME

Ganti kode berikut:

  • PROJECT_NUMBER: Nomor project dari project yang berisi workload identity pool.
  • POOL_ID: ID workload identity pool.
  • WORKLOAD_PROVIDER_ID: ID penyedia workload identity pool.
  • SERVICE_ACCOUNT_EMAIL: Jika Anda menggunakan peniruan identitas akun layanan, ganti dengan alamat email akun layanan. Hapus tanda ini jika Anda tidak menggunakan peniruan akun layanan.
  • SERVICE_ACCOUNT_TOKEN_LIFETIME: Jika Anda menggunakan peniruan akun layanan, ganti dengan masa aktif token akses akun layanan, dalam hitungan detik. Jika masa aktif tidak diberikan, default-nya adalah satu jam. Hapus tanda ini jika Anda tidak menggunakan peniruan akun layanan. Untuk menentukan masa berlaku lebih lama satu jam, Anda harus mengonfigurasi constraints/iam.allowServiceAccountCredentialLifetimeExtension batasan kebijakan organisasi.
  • FILEPATH: File untuk menyimpan konfigurasi.
  • TOKEN_FILEPATH: Jalur tempat token ID OIDC disimpan.
  • SOURCE_TYPE: Format file token ID OIDC, ditetapkan ke text (default) atau json.
  • FIELD_NAME: Kolom dalam file teks yang berisi token (jika SOURCE_TYPE adalah json).

Kredensial dari URL

gcloud iam workload-identity-pools create-cred-config \
    projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID/providers/WORKLOAD_PROVIDER_ID \
    --service-account=SERVICE_ACCOUNT_EMAIL \
    --service-account-token-lifetime-seconds=SERVICE_ACCOUNT_TOKEN_LIFETIME \
    --output-file=FILEPATH.json \
    --credential-source-url="TOKEN_URL" \
    --credential-source-headers="KEY_1=VALUE_1,KEY_2=VALUE_2" \
    --credential-source-type=SOURCE_TYPE \
    --credential-source-field-name=FIELD_NAME

Ganti kode berikut:

  • PROJECT_NUMBER: Nomor project dari project yang berisi workload identity pool.
  • POOL_ID: ID workload identity pool.
  • WORKLOAD_PROVIDER_ID: ID penyedia workload identity pool
  • SERVICE_ACCOUNT_EMAIL: Jika Anda menggunakan peniruan akun layanan, ganti dengan alamat email akun layanan. Hapus tanda ini jika Anda tidak menggunakan peniruan akun layanan.
  • SERVICE_ACCOUNT_TOKEN_LIFETIME: Jika Anda menggunakan peniruan akun layanan, ganti dengan masa aktif token akses akun layanan, dalam hitungan detik. Jika masa aktif tidak diberikan, default-nya adalah satu jam. Hapus tanda ini jika Anda tidak menggunakan peniruan akun layanan. Untuk menentukan masa berlaku lebih lama satu jam, Anda harus mengonfigurasi constraints/iam.allowServiceAccountCredentialLifetimeExtension batasan kebijakan organisasi.
  • FILEPATH: File untuk menyimpan konfigurasi.
  • TOKEN_URL: URL untuk mengambil token ID OIDC dari
  • KEY_n, VALUE_n: Header kustom yang disertakan ke permintaan HTTPS ke TOKEN_URL
  • SOURCE_TYPE: Format file token ID OIDC, ditetapkan ke text (default) atau json
  • FIELD_NAME: Kolom pada file teks berisi token (jika SOURCE_TYPE merupakan json)

Menggunakan konfigurasi kredensial untuk mengakses Google Cloud

Untuk mengizinkan alat dan library klien menggunakan konfigurasi kredensial Anda, lakukan hal berikut:

  1. Lakukan inisialisasi variabel lingkungan GOOGLE_APPLICATION_CREDENTIALS dan arahkan ke file konfigurasi kredensial:

    Bash

      export GOOGLE_APPLICATION_CREDENTIALS=`pwd`/FILEPATH.json
      
    dengan FILEPATH adalah jalur relatif ke file konfigurasi kredensial.

    PowerShell

      $env:GOOGLE_APPLICATION_CREDENTIALS = Resolve-Path 'FILEPATH.json'
      
    dengan FILEPATH adalah jalur relatif ke file konfigurasi kredensial.
  2. Gunakan library klien atau alat yang mendukung Workload Identity Federation dan dapat menemukan kredensial secara otomatis:

    C++

    Library Klien Google Cloud untuk C++ mendukung Workload Identity Federation sejak versi v2.6.0. Untuk menggunakan Workload Identity Federation, Anda harus mem-build library klien dengan gRPC versi 1.36.0 atau yang lebih baru.

    Go

    Library klien untuk Go mendukung Workload Identity Federation jika menggunakan modul golang.org/x/oauth2 versi v0.0.0-20210218202405-ba52d332ba99 atau yang 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 Workload Identity Federation jika menggunakan artefak com.google.auth:google-auth-library-oauth2-http versi 0.24.0 atau yang 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 yang 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 Workload Identity Federation jika menggunakan paket google-auth versi 1.27.0 atau yang lebih baru.

    Untuk memeriksa versi paket yang digunakan library klien Anda, jalankan perintah berikut di lingkungan tempat paket diinstal:

    pip show google-auth
    

    Untuk menentukan project ID bagi klien autentikasi, Anda dapat menetapkan variabel lingkungan GOOGLE_CLOUD_PROJECT atau mengizinkan klien untuk otomatis menemukan project ID. Untuk otomatis menemukan project ID, akun layanan dalam file konfigurasi harus memiliki peran Browser (roles/browser), atau peran dengan izin yang setara, di project Anda. Untuk mengetahui detailnya, lihat panduan pengguna untuk paket google-auth.

    gcloud

    Untuk melakukan autentikasi menggunakan Workload Identity Federation, gunakan perintah gcloud auth login:

    gcloud auth login --cred-file=FILEPATH.json
    

    Ganti FILEPATH dengan jalur ke file konfigurasi kredensial.

    Dukungan untuk 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 yang lebih baru:

    terraform {
      required_providers {
        google = {
          source  = "hashicorp/google"
          version = "~> 3.61.0"
        }
      }
    }
    

    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 ke file konfigurasi kredensial.

    Dukungan untuk Workload Identity Federation di bq tersedia di gcloud CLI versi 390.0.0 dan versi lebih baru.

Langkah selanjutnya