Mendownload konfigurasi kredensial dan memberikan akses

Halaman ini menjelaskan cara mengonfigurasi beban kerja untuk mengakses resource Google Cloud menggunakan Workload Identity Federation dan akses resource langsung atau peniruan identitas akun layanan.

Anda dapat menemukan petunjuk menyeluruh khusus kasus penggunaan dalam panduan konfigurasi untuk AWS dan Azure, Active Directory, GitHub, GitLab, dan pipeline deployment lainnya, serta Kubernetes.

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

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.