Menetapkan audiens kustom (layanan)

Halaman ini menjelaskan cara menggunakan audiens kustom untuk otorisasi.

Klien yang memanggil layanan Cloud Run yang dilindungi Identity and Access Management harus memberikan token ID yang valid yang menyertakan klaim audiens yang cocok dengan URL *.run.app layanan penerima. Untuk klien yang tidak mengetahui URL ini, Anda dapat menggunakan nilai audiens kustom.

Memahami audiens kustom

Cloud Run memberikan peran Invoker (roles/run.invoker) untuk mendukung kontrol akses dengan IAM. Kontrol akses IAM menggunakan token ID yang ditandatangani Google, yang dikemas sebagai Token Web JSON (JWT). Isi token ini sesuai dengan standar OIDC.

Kolom audience dienkode dalam token untuk menentukan target yang dimaksud dan dapat menggunakan token tersebut. Hal ini membatasi risiko serangan replay, yaitu saat token yang disadap yang dimaksudkan untuk digunakan dengan satu layanan akan di-replay ke layanan lain.

Berdasarkan konvensi, audiens adalah URL lengkap layanan target. Secara default di Cloud Run, URL ini adalah URL yang dibuat Google untuk layanan yang diakhiri dengan run.app.

Namun, layanan Cloud Run mungkin berada di belakang URL selain URL yang dihasilkan secara default, seperti dalam skenario berikut:

  • Saat menggunakan domain kustom untuk menjangkau layanan yang klien tidak mengetahui URL yang dibuat oleh Google.
  • Saat men-deploy beberapa layanan di balik load balancer, klien tidak dapat mengantisipasi layanan regional mana yang dijangkau oleh permintaan. URL yang dibuat Google untuk layanan bersifat spesifik per wilayah meskipun nama layanannya sama.

Dalam skenario ini, Anda harus mengonfigurasi layanan untuk menerima nilai audiens kustom yang memungkinkan target tambahan yang diketahui oleh klien. URL default yang dibuat Google akan selalu tetap menjadi nilai audiens yang diterima.

Menetapkan dan memperbarui audiens kustom

Penetapan audiens kustom untuk Cloud Run dilakukan di tingkat layanan dan berlaku untuk semua revisi penayangan, mirip dengan keanggotaan otorisasi IAM.

Anda dapat menetapkan beberapa audiens kustom, selama encoding JSON audiens sebagai daftar string tidak melebihi 32.768 karakter.

Setiap perubahan konfigurasi akan menghasilkan revisi baru. Revisi selanjutnya juga akan otomatis mendapatkan setelan konfigurasi ini, kecuali jika Anda melakukan pembaruan eksplisit untuk mengubahnya.

gcloud

Anda dapat menetapkan audiens kustom di layanan menggunakan perintah berikut:

gcloud run services update SERVICE --add-custom-audiences=AUDIENCE

Ganti

  • SERVICE dengan nama layanan Cloud Run Anda
  • AUDIENCE dengan string untuk audiens kustom yang ingin Anda dukung, misalnya, myservice atau https://myservice.example.com

Anda dapat menghapus semua audiens kustom dari layanan menggunakan perintah berikut:

gcloud run services update SERVICE --clear-custom-audiences

YAML

  1. Jika Anda membuat layanan baru, lewati langkah ini. Jika Anda mengupdate layanan yang sudah ada, download konfigurasi YAML-nya:

    gcloud run services describe SERVICE --format export > service.yaml
  2. Tetapkan anotasi run.googleapis.com/custom-audiences pada metadata Layanan (bukan pada metadata template):

    apiVersion: serving.knative.dev/v1
    kind: Service
    metadata:
      name: SERVICE
      annotations:
        run.googleapis.com/custom-audiences: '["AUDIENCE"]'
    spec:
      template:
        ...

    Ganti

    • SERVICE dengan nama layanan Cloud Run Anda
    • AUDIENCE dengan string untuk audiens kustom yang ingin Anda dukung, misalnya, myservice atau https://myservice.example.com

    Perhatikan bahwa nilai atribut adalah array JSON yang dikutip dari string, yang memerlukan penggunaan tanda kutip ganda dan tunggal.

  3. Ganti layanan dengan konfigurasi barunya menggunakan perintah berikut:

    gcloud run services replace service.yaml

Memverifikasi audiens kustom

  1. Mendapatkan token ID untuk akun layanan yang memiliki izin IAM untuk memanggil layanan. Perhatikan penggunaan audiens kustom AUDIENCE.

    export TOKEN=$(gcloud auth print-identity-token --impersonate-service-account SERVICE_ACCOUNT_EMAIL --audiences='AUDIENCE')

    Replace:

    • SERVICE_ACCOUNT_EMAIL dengan email akun layanan. Kode ini diakhiri dengan .iam.gserviceaccount.com.
    • AUDIENCE dengan nilai audiens kustom yang Anda tetapkan di layanan.
  2. Memanggil endpoint layanan dengan token ID tersebut

    curl -H "Authorization: Bearer ${TOKEN}" ENDPOINT

    Ganti ENDPOINT dengan endpoint untuk menjangkau layanan Anda, misalnya, domain kustomnya atau URL .run.app.

  3. Konfirmasi bahwa permintaan tersebut sah dan Anda melihat respons yang diharapkan dari layanan Anda.