Mengonfigurasi Workload Identity Federation dengan AWS atau Azure

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

Dengan Workload Identity Federation, workload yang berjalan di AWS EC2 dan Azure dapat menukar kredensial khusus lingkungannya dengan 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 ini 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

      In the Google Cloud console, activate Cloud Shell.

      Activate Cloud Shell

      At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.

      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. If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.

      3. To initialize the gcloud CLI, run the following command:

        gcloud init
      4. If you're using a local shell, then create local authentication credentials for your user account:

        gcloud auth application-default login

        You don't need to do this if you're using Cloud Shell.

        If an authentication error is returned, and you are using an external identity provider (IdP), confirm that you have signed in to the gcloud CLI with your federated identity.

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

Menyiapkan penyedia identitas eksternal

Anda hanya perlu melakukan langkah-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, 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 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 terkelola:

  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 hal 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

Menentukan pemetaan dan kondisi atribut

Kredensial khusus lingkungan dari workload AWS atau Azure Anda berisi beberapa atribut, dan 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.

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

AWS

Pemetaan atribut Anda 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
  • Memperkenalkan atribut khusus account dan menetapkannya ke ID akun AWS
  • Memperkenalkan atribut khusus aws_role dan menetapkannya ke nama peran AWS—misalnya: ec2-my-role
  • Memperkenalkan atribut kustom 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
Jika klaim `sub` melampaui batas 127 karakter untuk google.subject, sebaiknya gunakan [`fungsi ekstrak`](/iam/docs/conditions-attribute-reference#extract) untuk mendapatkan klaim yang bermakna untuk digunakan sebagai ID subjek:
google.subject=assertion.sub.extract('/eid1/c/pub/t/{sub_claim}')

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 sudah 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 mendapatkan token Google Cloud dengan masa berlaku singkat.

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 mendapatkan token Google Cloud jangka pendek. Anda juga 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 Anda 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) 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) 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 Anda gunakan 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 memberikan akses workload Anda ke resource Google Cloud , sebaiknya Anda memberikan akses resource langsung ke principal. Dalam hal ini, pokoknya 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 layananGoogle Cloud , yang bertindak sebagai identitas. Anda memberikan akses ke akun layanan pada resource.

Akses resource langsung

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

Konsol

Untuk menggunakan konsol Google Cloud guna memberikan peran IAM langsung pada 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) kepada identitas gabungan langsung di bucket Cloud Storage.

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

    Buka Buckets

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

  1. Dapatkan nomor project tempat resource ditentukan.

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

    Untuk menggunakan gcloud CLI guna memberikan peran Storage Object Viewer (roles/storage.objectViewer) kepada 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 yang akan diberi akses
    • 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 khusus dalam pemetaan atribut Anda

    Anda dapat memberikan peran pada resource Google Cloud apa pun yang mendukung kebijakan izin IAM.

Peniruan akun layanan

  1. Untuk membuat akun layanan bagi workload 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 gunakan 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.

  2. Agar identitas gabungan dapat meniru identitas akun layanan, lakukan hal berikut:

Konsol

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

Akun Layanan dalam project yang sama

  1. Untuk memberikan akses menggunakan peniruan identitas akun layanan bagi 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 yang akan ditiru identitasnya oleh identitas eksternal, lalu lakukan hal berikut:

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

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

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

      • Di kolom Nilai atribut, masukkan nilai atribut yang diharapkan; 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 dalam project yang berbeda

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

    1. Buka halaman Akun Layanan.

      Buka Akun Layanan

    2. Pilih akun layanan yang ingin Anda tiru.

    3. Klik Kelola akses.

    4. Klik Tambahkan akun utama.

    5. Di kolom New principal, masukkan salah satu ID akun utama untuk identitas di pool 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 kumpulan

      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 memberikan peran Pengguna Workload Identity (roles/iam.workloadIdentityUser) kepada akun utama gabungan atau set akun utama, jalankan perintah berikut. Untuk mempelajari lebih lanjut ID utama Workload Identity Federation, lihat Jenis utama.

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 khusus dalam pemetaan atribut Anda

Mendownload atau membuat konfigurasi kredensial

Library Klien Cloud, gcloud CLI, dan Terraform dapat otomatis memperoleh kredensial eksternal, serta menggunakannya 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 langkah-langkah berikut:

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

    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 Mengonfigurasi aplikasi Anda di dialog, nanti dalam prosedur ini.

  4. Jika Anda memilih untuk menggunakan peniruan identitas 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 Mengonfigurasi aplikasi Anda di dialog, 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. Abaikan 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. Abaikan tanda ini jika Anda tidak menggunakan peniruan identitas 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. Abaikan tanda ini jika Anda tidak menggunakan peniruan identitas 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. Abaikan tanda ini jika Anda tidak menggunakan peniruan identitas 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++

    Google Cloud Client Libraries for C++ mendukung Workload Identity Federation sejak versi v2.6.0. Untuk menggunakan Workload Identity Federation, Anda harus membangun library klien dengan gRPC versi 1.36.0 atau yang lebih baru.

    Go

    Library klien untuk Go mendukung 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 versi lebih baru.

    Untuk memeriksa versi paket yang digunakan library klien Anda, jalankan perintah berikut di direktori aplikasi Anda:

    npm list google-auth-library
    

    Saat membuat objek GoogleAuth, Anda dapat menentukan project ID atau mengizinkan GoogleAuth untuk otomatis menemukan project ID. Untuk otomatis menemukan project ID, akun layanan dalam file konfigurasi harus memiliki peran Browser (roles/browser), atau peran dengan izin yang setara, di project Anda. Untuk mengetahui detailnya, lihat README untuk paket google-auth-library.

    Python

    Library klien untuk Python mendukung 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 yang lebih baru.

    Terraform

    PenyediaGoogle 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 lengkap resource 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 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 Security Token Service 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 menyetelnya ke endpoint layanan kustom Anda. Untuk mengetahui 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 berikutnya