Mengonfigurasi Workload Identity Federation dengan AWS atau Azure

Panduan ini menjelaskan cara menggunakan Workload Identity Federation agar workload AWS dan Azure dapat mengautentikasi ke Google Cloud tanpa kunci akun layanan.

Dengan Workload Identity Federation, workload yang berjalan di AWS EC2 dan Azure dapat menukar kredensial khusus lingkungan untuk token Layanan Token Keamanan Google Cloud jangka pendek.

Kredensial khusus lingkungan meliputi:

Dengan menyiapkan Workload Identity Federation, Anda dapat mengizinkan workload ini menukar kredensial khusus lingkungan dengan kredensial Google Cloud jangka pendek. Workload dapat menggunakan kredensial jangka pendek ini untuk mengakses Google Cloud API.

Sebelum memulai

  • Menyiapkan autentikasi.

    Select the tab for how you plan to use the samples on this page:

    Console

    When you use the Google Cloud console to access Google Cloud services and APIs, you don't need to set up authentication.

    gcloud

    Di konsol Google Cloud, aktifkan Cloud Shell.

    Aktifkan Cloud Shell

    Di bagian bawah Google Cloud Console, Cloud Shell sesi akan terbuka dan menampilkan perintah command line. Cloud Shell adalah lingkungan shell dengan Google Cloud CLI yang sudah terinstal, dan dengan nilai yang sudah ditetapkan untuk project Anda saat ini. Diperlukan waktu beberapa detik untuk melakukan inisialisasi sesi.

    Python

    Untuk menggunakan contoh Python di halaman ini dalam lingkungan pengembangan lokal, instal dan lakukan inisialisasi gcloud CLI, lalu siapkan Kredensial Default Aplikasi dengan kredensial pengguna Anda.

    1. Install the Google Cloud CLI.
    2. To initialize the gcloud CLI, run the following command:

      gcloud init
    3. Buat kredensial autentikasi lokal untuk Akun Google Anda:

      gcloud auth application-default login

    Untuk informasi selengkapnya, lihat Menyiapkan autentikasi untuk lingkungan pengembangan lokal dalam dokumentasi autentikasi Google Cloud.

Menyiapkan penyedia identitas eksternal

Anda hanya perlu melakukan langkah ini satu kali untuk setiap tenant Microsoft Entra ID atau akun AWS.

AWS

Anda tidak perlu membuat perubahan konfigurasi di akun AWS.

Setelah mengonfigurasi workload identity pool agar dapat mempercayai akun AWS, Anda dapat mengizinkan pengguna AWS dan peran AWS untuk menggunakan kredensial keamanan AWS sementara atau permanen guna memperoleh kredensial Google Cloud jangka pendek.

Azure

Anda harus membuat aplikasi Microsoft Entra ID yang baru di tenant Microsoft Entra ID dan mengonfigurasinya agar dapat digunakan untuk Workload Identity Federation.

Setelah mengonfigurasi workload identity pool agar dapat mempercayai aplikasi, pengguna dan akun utama layanan Azure dapat meminta token akses untuk aplikasi ini, serta menukarnya dengan kredensial Google Cloud jangka pendek.

Untuk membuat aplikasi, lakukan langkah berikut:

  1. Buat aplikasi dan akun utama layanan Microsoft Entra ID.

  2. Tetapkan URI ID Aplikasi untuk aplikasi tersebut. Anda dapat menggunakan URI ID Aplikasi default (APPID) atau menentukan URI kustom.

    Anda akan memerlukan URI ID Aplikasi saat mengonfigurasi penyedia workload identity pool.

Agar aplikasi dapat memperoleh token akses untuk aplikasi Microsoft Entra ID, Anda dapat menggunakan identitas yang dikelola:

  1. Membuat identitas yang dikelola. Catat ID Objek identitas yang dikelola. Anda akan memerlukannya saat mengonfigurasi peniruan identitas.

  2. Tetapkan identitas terkelola ke virtual machine atau resource lain yang menjalankan aplikasi Anda.

Mengonfigurasi Workload Identity Federation

Anda hanya perlu melakukan langkah ini satu kali per akun AWS atau tenant Microsoft Entra ID. Lalu, Anda dapat menggunakan workload identity pool dan penyedia workload identity 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. Make sure that billing is enabled for your Google Cloud project.

  4. Aktifkan API IAM, Resource Manager, Service Account Credentials, and Security Token Service.

    Mengaktifkan API

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.

Google Cloud menggunakan ID subjek di Cloud Audit Logs dan di ID akun utama untuk mengidentifikasi pengguna atau peran AWS atau Azure dengan unik.

Anda juga dapat memetakan atribut tambahan. Lalu, Anda dapat merujuk ke atribut tambahan ini saat memberikan akses ke resource.

AWS

Pemetaan atribut dapat menggunakan kolom respons untuk GetCallerIdentity sebagai atribut sumber. Kolom ini meliputi:

  • account: nomor akun AWS.
  • arn: AWS ARN entity eksternal.
  • userid: ID unik entity panggilan.

Jika aplikasi berjalan pada instance Amazon Elastic Compute Cloud (EC2) dengan peran yang dilampirkan, Anda dapat menggunakan pemetaan atribut berikut:

google.subject=assertion.arn
attribute.account=assertion.account
attribute.aws_role=assertion.arn.extract('assumed-role/{role}/')
attribute.aws_ec2_instance=assertion.arn.extract('assumed-role/{role_and_session}').extract('/{session}')

Pemetaan tersebut akan melakukan hal berikut:

  • Menggunakan ARN sebagai ID subjek—misalnya: "arn:aws:sts::000000000000:assumed-role/ec2-my-role/i-00000000000000000
  • Memasukkan atribut khusus account dan menetapkannya ke ID akun AWS
  • Memasukkan atribut khusus aws_role dan menetapkannya ke nama peran AWS—misalnya: ec2-my-role
  • Memasukkan atribut khusus aws_ec2_instance dan menetapkannya ke ID instance EC2—misalnya: i-00000000000000000

Dengan pemetaan ini, Anda dapat memberikan akses ke:

  • Instance EC2 tertentu:

    principalSet://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID/attribute.aws_ec2_instance/EC2_INSTANCE_ID
    

  • Semua pengguna dan instance dalam suatu peran:

    principalSet://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID/attribute.aws_role/ROLE_NAME
    

Azure

Pemetaan atribut dapat menggunakan klaim yang tersemat di token akses Azure, termasuk klaim kustom, sebagai atribut sumber. Dalam sebagian besar kasus, sebaiknya gunakan klaim sub sebagai ID subjek:

google.subject=assertion.sub

Untuk token akses yang dikeluarkan bagi identitas yang dikelola, klaim sub mencakup ID Objek dari identitas yang dikelola. Jika Anda menggunakan klaim yang berbeda, pastikan klaim tersebut unik dan tidak dapat ditetapkan ulang.

Jika tidak yakin dengan daftar klaim yang dapat Anda rujuk, lakukan langkah berikut:

  1. Hubungkan ke Azure VM yang memiliki identitas terkelola yang ditetapkan.

  2. Dapatkan token akses dari Layanan Metadata Instance Azure (IMDS):

    Bash

    curl \
      "http://169.254.169.254/metadata/identity/oauth2/token?resource=APP_ID_URI&api-version=2018-02-01" \
      -H "Metadata: true" | jq -r .access_token
    

    Perintah ini menggunakan alat jq. jq tersedia secara default di Cloud Shell.

    PowerShell

    $SubjectTokenType = "urn:ietf:params:oauth:token-type:jwt"
    $SubjectToken = (Invoke-RestMethod `
      -Uri "http://169.254.169.254/metadata/identity/oauth2/token?resource=APP_ID_URI&api-version=2018-02-01" `
      -Headers @{Metadata="true"}).access_token
    Write-Host $SubjectToken
    

    Ganti APP_ID_URI dengan URI ID Aplikasi dari aplikasi yang telah Anda konfigurasi untuk Workload Identity Federation.

  3. Di browser web, buka https://jwt.ms/, lalu tempel token akses ke dalam kolom.

  4. Klik Klaim untuk melihat daftar klaim yang tersemat di token akses.

Untuk identitas layanan, biasanya Anda tidak perlu membuat pemetaan untuk google.groups atau atribut khusus.

Anda juga dapat menentukan kondisi atribut. 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.

AWS

Anda dapat menggunakan kondisi atribut untuk membatasi pengguna dan peran IAM yang dapat menggunakan Workload Identity Federation untuk memperoleh token Google Cloud jangka pendek.

Misalnya, kondisi berikut membatasi akses ke peran AWS dan tidak mengizinkan ID IAM lainnya:

assertion.arn.startsWith('arn:aws:sts::AWS_ACCOUNT_ID:assumed-role/')

Azure

Anda dapat menggunakan kondisi atribut untuk membatasi pengguna dan akun utama layanan yang dapat menggunakan Workload Identity Federation untuk memperoleh token Google Cloud jangka pendek. Atau, Anda dapat mengonfigurasi aplikasi Microsoft Entra ID untuk menggunakan penetapan peran aplikasi.

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.

Kini, Anda sudah mengumpulkan semua informasi yang diperlukan untuk membuat workload identity pool dan penyedia workload identity:

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:

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

    AWS

    Konfigurasikan setelan penyedia berikut:

    • Pilih penyedia: AWS.
    • Nama penyedia: nama untuk penyedia. Nama ini juga digunakan sebagai ID penyedia. Anda tidak dapat mengubah ID penyedia nantinya.

    Azure

    Konfigurasikan setelan penyedia berikut:

    • Pilih penyedia: OpenID Connect (OIDC).
    • Nama penyedia: Nama untuk penyedia. Nama ini juga digunakan sebagai ID penyedia. Anda tidak dapat mengubah ID penyedia nantinya.
    • URL Penerbit: https://sts.windows.net/TENANT_ID. Ganti TENANT_ID dengan ID tenant (GUID) dari tenant Microsoft Entra ID Anda.
    • Audiens yang diizinkan: URI ID Aplikasi yang Anda gunakan saat mendaftarkan aplikasi di Microsoft Entra ID.
  5. Klik Lanjutkan.

  6. Di bagian Mengonfigurasi atribut penyedia, tambahkan pemetaan atribut yang sudah Anda identifikasi sebelumnya.

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

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

gcloud

  1. Buat workload identity pool yang baru:

    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. Deskripsi ini muncul saat memberikan akses ke identitas pool.
  2. Tambahkan penyedia workload identity pool:

    AWS

    Untuk membuat penyedia workload identity pool untuk AWS, jalankan perintah berikut:

    gcloud iam workload-identity-pools providers create-aws PROVIDER_ID \
      --location="global" \
      --workload-identity-pool="POOL_ID" \
      --account-id="ACCOUNT_ID" \
      --attribute-mapping="MAPPINGS" \
      --attribute-condition="CONDITIONS"
    

    Ganti kode berikut:

    Contoh:

    gcloud iam workload-identity-pools providers create-aws example-provider \
      --location="global" \
      --workload-identity-pool="pool-1" \
      --account-id="123456789000" \
      --attribute-mapping="google.subject=assertion.arn"

    Azure

    Untuk membuat penyedia workload identity pool untuk Azure, jalankan perintah berikut:

    gcloud iam workload-identity-pools providers create-oidc PROVIDER_ID \
        --location="global" \
        --workload-identity-pool="POOL_ID" \
        --issuer-uri="ISSUER_URI" \
        --allowed-audiences="APPLICATION_ID_URI" \
        --attribute-mapping="MAPPINGS" \
        --attribute-condition="CONDITIONS"
    

    Ganti kode berikut:

    • PROVIDER_ID: ID unik untuk penyedia.
    • POOL_ID: ID pool.
    • ISSUER_URI: ID tenant (GUID) dari tenant Microsoft Entra ID Anda, terkadang diformat sebagai https://sts.windows.net/TENANT_ID. URI penerbit dapat bervariasi. Untuk menemukan URI penerbit, Anda dapat men-debug JWT menggunakan JWT.io.
    • APPLICATION_ID_URI: URI ID Aplikasi yang digunakan saat Anda mendaftarkan aplikasi di Microsoft Entra ID.
    • MAPPINGS: Daftar yang dipisahkan koma dari pemetaan atribut yang Anda identifikasi sebelumnya.
    • CONDITIONS: (Opsional) kondisi atribut yang Anda identifikasi sebelumnya.

    Contoh:

    gcloud iam workload-identity-pools providers create-oidc example-provider \
        --location="global" \
        --workload-identity-pool="pool-1" \
        --issuer-uri="https://sts.windows.net/00000000-1111-2222-3333-444444444444" \
        --allowed-audiences="api://my-app" \
        --attribute-mapping="google.subject=assertion.sub,google.groups=assertion.groups"

Mengautentikasi workload

Anda harus melakukan langkah berikut satu kali per 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 untuk workload eksternal, lakukan langkah berikut:

    1. Aktifkan API IAM, Security Token Service, and Service Account Credentials.

      Mengaktifkan API

    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 atau membuat konfigurasi kredensial

Library Klien Cloud, gcloud CLI, dan Terraform dapat otomatis memperoleh kredensial eksternal, dan menggunakan kredensial ini untuk meniru identitas akun layanan. Agar library dan alat dapat menyelesaikan proses ini, Anda harus menyediakan file konfigurasi kredensial. File ini 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

Untuk membuat file konfigurasi kredensial, lakukan langkah berikut:

Konsol

Untuk mendownload file konfigurasi kredensial di 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 untuk IdP yang ingin Anda gunakan, lalu klik pool tersebut.

  3. Jika Anda memilih untuk menggunakan akses resource langsung, lakukan hal berikut:

    1. Klik Grant access.

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

    3. Klik Download.

    4. Lanjutkan dengan petunjuk untuk dialog Konfigurasikan aplikasi Anda, nanti dalam prosedur ini.

  4. Jika Anda memilih untuk menggunakan peniruan akun layanan, lakukan hal berikut:

    1. Pilih Akun layanan yang terhubung.

    2. Temukan akun layanan yang ingin Anda gunakan, lalu klik Download.

    3. Lanjutkan dengan petunjuk untuk dialog Konfigurasikan aplikasi Anda, nanti dalam prosedur ini.

  5. Dalam dialog Mengonfigurasi aplikasi Anda, pilih penyedia yang berisi identitas eksternal.

  6. Berikan setelan tambahan berikut:

    AWS

    Tidak perlu setelan tambahan.

    Azure

    URL ID Aplikasi: URI ID Aplikasi dari aplikasi Azure

  7. Pilih Download konfigurasi untuk mendownload file konfigurasi kredensial, lalu klik Tutup.

gcloud

Untuk membuat file konfigurasi kredensial menggunakan gcloud iam workload-identity-pools create-cred-config, lakukan:

AWS

Untuk membuat file konfigurasi kredensial yang memungkinkan library memperoleh token akses dari metadata instance EC2, lakukan langkah berikut:

gcloud iam workload-identity-pools create-cred-config \
    projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID/providers/PROVIDER_ID \
    --service-account=SERVICE_ACCOUNT_EMAIL \
    --service-account-token-lifetime-seconds=SERVICE_ACCOUNT_TOKEN_LIFETIME \
    --aws \
    --output-file=FILEPATH.json

Ganti kode berikut:

  • PROJECT_NUMBER: Nomor project dari project yang berisi workload identity pool
  • POOL_ID: ID workload identity pool.
  • PROVIDER_ID: ID penyedia workload identity pool.
  • SERVICE_ACCOUNT_EMAIL: Jika Anda menggunakan peniruan identitas akun layanan, ganti dengan alamat email akun layanan. 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 aktif agar lebih lama dari satu jam, Anda harus mengonfigurasi batasan kebijakan organisasi constraints/iam.allowServiceAccountCredentialLifetimeExtension.
  • FILEPATH: File untuk menyimpan konfigurasi.

Jika Anda menggunakan AWS IMDSv2, flag tambahan --enable-imdsv2 harus ditambahkan ke perintah gcloud iam workload-identity-pools create-cred-config:

gcloud iam workload-identity-pools create-cred-config \
    projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID/providers/PROVIDER_ID \
    --service-account=SERVICE_ACCOUNT_EMAIL \
    --aws \
    --enable-imdsv2 \
    --output-file=FILEPATH.json

Jika tidak dapat menggunakan server metadata AWS, Anda dapat memberikan kredensial keamanan AWS melalui variabel lingkungan AWS berikut:

  • AWS_ACCESS_KEY_ID
  • AWS_SECRET_ACCESS_KEY
  • AWS_REGION atau AWS_DEFAULT_REGION
  • Opsional: AWS_SESSION_TOKEN

Library dan gcloud CLI menggunakan variabel lingkungan AWS ini saat server metadata AWS tidak tersedia.

Azure

Buat file konfigurasi kredensial yang memungkinkan library memperoleh token akses dari Layanan Metadata Instance Azure (IMDS):

gcloud iam workload-identity-pools create-cred-config \
    projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID/providers/PROVIDER_ID \
    --service-account=SERVICE_ACCOUNT_EMAIL \
    --service-account-token-lifetime-seconds=SERVICE_ACCOUNT_TOKEN_LIFETIME \
    --azure \
    --app-id-uri APPLICATION_ID_URI \
    --output-file=FILEPATH.json

Ganti kode berikut:

  • PROJECT_NUMBER: Nomor project dari project yang berisi workload identity pool.
  • POOL_ID: ID workload identity pool.
  • PROVIDER_ID: ID penyedia workload identity pool.
  • SERVICE_ACCOUNT_EMAIL: Jika Anda menggunakan peniruan identitas akun layanan, ganti dengan alamat email akun layanan. Hapus tanda ini jika Anda tidak menggunakan peniruan akun layanan.
  • APPLICATION_ID_URI: URI ID Aplikasi dari aplikasi Azure.
  • SERVICE_ACCOUNT_TOKEN_LIFETIME: Jika Anda menggunakan peniruan identitas akun layanan, 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 aktif agar lebih lama dari satu jam, Anda harus mengonfigurasi batasan kebijakan organisasi constraints/iam.allowServiceAccountCredentialLifetimeExtension.
  • FILEPATH: File untuk menyimpan konfigurasi.

Menggunakan konfigurasi kredensial untuk mengakses Google Cloud

Agar alat dan library klien dapat menggunakan konfigurasi kredensial, lakukan langkah berikut di lingkungan AWS atau Azure Anda:

  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.

    Jika tidak dapat menggunakan library klien yang mendukung Workload Identity Federation, Anda dapat melakukan autentikasi secara terprogram menggunakan REST API.

Skenario lanjutan

Melakukan autentikasi workload menggunakan REST API

Jika tidak dapat menggunakan library klien, Anda dapat mengikuti langkah ini untuk mengizinkan workload eksternal memperoleh token akses jangka pendek menggunakan REST API:

  1. Dapatkan kredensial dari IdP eksternal:

    AWS

    Buat dokumen JSON yang berisi informasi yang biasanya akan Anda sertakan dalam permintaan ke endpoint GetCallerIdentity() AWS, termasuk tanda tangan permintaan yang valid.

    Workload Identity Federation merujuk ke dokumen JSON ini sebagai token GetCallerIdentity. Token ini memungkinkan Workload Identity Federation memverifikasi identitas tanpa mengungkapkan kunci akses rahasia AWS.

    Token GetCallerIdentity terlihat mirip seperti:

    {
      "url": "https://sts.amazonaws.com?Action=GetCallerIdentity&Version=2011-06-15",
      "method": "POST",
      "headers": [
        {
          "key": "Authorization",
          "value" : "AWS4-HMAC-SHA256 Credential=AKIASOZTBDV4D7ABCDEDF/20200228/us-east-1/sts/aws4_request, SignedHeaders=host;x-amz-date,Signature=abcedefdfedfd"
        },
        {
          "key": "host",
          "value": "sts.amazonaws.com"
        },
        {
          "key": "x-amz-date",
          "value": "20200228T225005Z"
        },
        {
          "key": "x-goog-cloud-target-resource",
          "value": "//iam.googleapis.com/projects/12345678/locations/global/workloadIdentityPools/my-pool/providers/my-aws-provider"
        },
        {
          "key": "x-amz-security-token",
          "value": "GizFWJTqYX...xJ55YoJ8E9HNU="
        }
      ]
    }
    

    Token tersebut berisi kolom berikut:

    • url: URL endpoint AWS STS untuk GetCallerIdentity(), dengan isi permintaan GetCallerIdentity() standar yang ditambahkan sebagai parameter kueri. Contoh, https://sts.amazonaws.com?Action=GetCallerIdentity&Version=2011-06-15. Sebaiknya gunakan endpoint STS regional dan rancang infrastruktur yang andal untuk workload Anda. Untuk mengetahui informasi selengkapnya, lihat Endpoint AWS STS regional.
    • method: Metode permintaan HTTP: POST.
    • headers: Header permintaan HTTP, harus mencakup:
      • Authorization: Tanda tangan permintaan.
      • host: Nama host kolom url, misalnya, sts.amazonaws.com.
      • x-amz-date: Waktu saat Anda akan mengirim permintaan, diformat sebagai string ISO 8601 Basic. Nilai ini biasanya ditetapkan ke waktu saat ini dan digunakan untuk membantu mencegah serangan replay.
      • x-goog-cloud-target-resource: Nama resource lengkap penyedia identitas tanpa awalan https:. Contoh:
        //iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID/providers/PROVIDER_ID
        
      • x-amz-security-token: Token sesi. Hanya diperlukan jika Anda menggunakan kredensial keamanan sementara.

    Contoh berikut membuat token GetCallerIdentity yang dienkode URL. Ekstrak token yang dienkode URL untuk digunakan nantinya. Tindakan ini juga akan membuat token yang dapat dibaca manusia hanya untuk referensi Anda:

    import json
    import urllib
    
    import boto3
    from botocore.auth import SigV4Auth
    from botocore.awsrequest import AWSRequest
    
    
    def create_token_aws(project_number: str, pool_id: str, provider_id: str) -> None:
        # Prepare a GetCallerIdentity request.
        request = AWSRequest(
            method="POST",
            url="https://sts.amazonaws.com/?Action=GetCallerIdentity&Version=2011-06-15",
            headers={
                "Host": "sts.amazonaws.com",
                "x-goog-cloud-target-resource": f"//iam.googleapis.com/projects/{project_number}/locations/global/workloadIdentityPools/{pool_id}/providers/{provider_id}",
            },
        )
    
        # Set the session credentials and Sign the request.
        # get_credentials loads the required credentials as environment variables.
        # Refer:
        # https://boto3.amazonaws.com/v1/documentation/api/latest/guide/credentials.html
        SigV4Auth(boto3.Session().get_credentials(), "sts", "us-east-1").add_auth(request)
    
        # Create token from signed request.
        token = {"url": request.url, "method": request.method, "headers": []}
        for key, value in request.headers.items():
            token["headers"].append({"key": key, "value": value})
    
        # The token lets workload identity federation verify the identity without revealing the AWS secret access key.
        print("Token:\n%s" % json.dumps(token, indent=2, sort_keys=True))
        print("URL encoded token:\n%s" % urllib.parse.quote(json.dumps(token)))
    
    
    def main() -> None:
        # TODO(Developer): Replace the below credentials.
        # project_number: Google Project number (not the project id)
        project_number = "my-project-number"
        pool_id = "my-pool-id"
        provider_id = "my-provider-id"
    
        create_token_aws(project_number, pool_id, provider_id)
    
    
    if __name__ == "__main__":
        main()

    Lakukan inisialisasi variabel berikut:

    Bash

    SUBJECT_TOKEN_TYPE="urn:ietf:params:aws:token-type:aws4_request"
    SUBJECT_TOKEN=TOKEN
    

    PowerShell

    $SubjectTokenType = "urn:ietf:params:aws:token-type:aws4_request"
    $SubjectToken = "TOKEN"
    

    Dengan TOKEN sebagai token GetCallerIdentity yang dienkode URL dan dihasilkan oleh skrip.

    Azure

    Hubungkan ke Azure VM yang memiliki identitas terkelola yang ditetapkan dan dapatkan token akses dari Layanan Metadata Instance Azure (IMDS):

    Bash

    SUBJECT_TOKEN_TYPE="urn:ietf:params:oauth:token-type:jwt"
    SUBJECT_TOKEN=$(curl \
      "http://169.254.169.254/metadata/identity/oauth2/token?resource=APP_ID_URI&api-version=2018-02-01" \
      -H "Metadata: true" | jq -r .access_token)
    echo $SUBJECT_TOKEN
    

    Perintah ini menggunakan alat jq. jq tersedia secara default di Cloud Shell.

    PowerShell

    $SubjectTokenType = "urn:ietf:params:oauth:token-type:jwt"
    $SubjectToken = (Invoke-RestMethod `
      -Uri "http://169.254.169.254/metadata/identity/oauth2/token?resource=APP_ID_URI&api-version=2018-02-01" `
      -Headers @{Metadata="true"}).access_token
    Write-Host $SubjectToken
    

    Dengan APP_ID_URI sebagai URI ID Aplikasi dari aplikasi yang sudah Anda konfigurasi untuk Workload Identity Federation.

  2. Gunakan API Layanan Token Keamanan untuk menukar kredensial dengan token akses jangka pendek:

    Bash

    STS_TOKEN=$(curl https://sts.googleapis.com/v1/token \
        --data-urlencode "audience=//iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID/providers/PROVIDER_ID" \
        --data-urlencode "grant_type=urn:ietf:params:oauth:grant-type:token-exchange" \
        --data-urlencode "requested_token_type=urn:ietf:params:oauth:token-type:access_token" \
        --data-urlencode "scope=https://www.googleapis.com/auth/cloud-platform" \
        --data-urlencode "subject_token_type=$SUBJECT_TOKEN_TYPE" \
        --data-urlencode "subject_token=$SUBJECT_TOKEN" | jq -r .access_token)
    echo $STS_TOKEN
    

    PowerShell

    [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.SecurityProtocolType]::Tls12
    $StsToken = (Invoke-RestMethod `
        -Method POST `
        -Uri "https://sts.googleapis.com/v1/token" `
        -ContentType "application/json" `
        -Body (@{
            "audience"           = "//iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID/providers/PROVIDER_ID"
            "grantType"          = "urn:ietf:params:oauth:grant-type:token-exchange"
            "requestedTokenType" = "urn:ietf:params:oauth:token-type:access_token"
            "scope"              = "https://www.googleapis.com/auth/cloud-platform"
            "subjectTokenType"   = $SubjectTokenType
            "subjectToken"       = $SubjectToken
        } | ConvertTo-Json)).access_token
    Write-Host $StsToken
    

    Ganti nilai berikut:

    • PROJECT_NUMBER: Nomor project dari project yang berisi workload identity pool
    • POOL_ID: ID workload identity pool
    • PROVIDER_ID: ID penyedia workload identity pool
  3. Jika Anda menggunakan peniruan akun layanan, gunakan token dari Layanan Token Keamanan untuk memanggil metode generateAccessToken dari IAM Service Account Credentials API untuk mendapatkan token akses.

Token untuk layanan Cloud Run

Saat mengakses layanan Cloud Run, Anda harus menggunakan token ID.

Bash

TOKEN=$(curl -0 -X POST https://iamcredentials.googleapis.com/v1/projects/-/serviceAccounts/SERVICE_ACCOUNT_EMAIL:generateIdToken \
    -H "Content-Type: text/json; charset=utf-8" \
    -H "Authorization: Bearer $STS_TOKEN" \
    -d @- <<EOF | jq -r .token
    {
        "audience": "SERVICE_URL"
    }
EOF
)
echo $TOKEN

PowerShell

$Token = (Invoke-RestMethod `
    -Method POST `
    -Uri "https://iamcredentials.googleapis.com/v1/projects/-/serviceAccounts/SERVICE_ACCOUNT_EMAIL:generateIdToken" `
    -Headers @{ "Authorization" = "Bearer $StsToken" } `
    -ContentType "application/json" `
    -Body (@{
        "audience" = "SERVICE_URL"
    } | ConvertTo-Json)).token
Write-Host $Token

Ganti kode berikut:

  • SERVICE_ACCOUNT_EMAIL: alamat email akun layanan.
  • SERVICE_URL: URL layanan—misalnya, https://my-service-12345-us-central1.run.app. Anda juga dapat menetapkannya ke endpoint layanan kustom. Untuk informasi selengkapnya, lihat Memahami audiens kustom.

Token untuk platform lain

Saat mengakses layanan lain, Anda harus menggunakan token akses.

Bash

TOKEN=$(curl -0 -X POST https://iamcredentials.googleapis.com/v1/projects/-/serviceAccounts/SERVICE_ACCOUNT_EMAIL:generateAccessToken \
    -H "Content-Type: text/json; charset=utf-8" \
    -H "Authorization: Bearer $STS_TOKEN" \
    -d @- <<EOF | jq -r .accessToken
    {
        "scope": [ "https://www.googleapis.com/auth/cloud-platform" ]
    }
EOF
)
echo $TOKEN

PowerShell

$Token = (Invoke-RestMethod `
    -Method POST `
    -Uri "https://iamcredentials.googleapis.com/v1/projects/-/serviceAccounts/SERVICE_ACCOUNT_EMAIL:generateAccessToken" `
    -Headers @{ "Authorization" = "Bearer $StsToken" } `
    -ContentType "application/json" `
    -Body (@{
        "scope" = , "https://www.googleapis.com/auth/cloud-platform"
    } | ConvertTo-Json)).accessToken
Write-Host $Token

Ganti kode berikut:

  • SERVICE_ACCOUNT_EMAIL: alamat email akun layanan.

Langkah selanjutnya