Mengonfigurasi identitas layanan untuk instance

Halaman ini menunjukkan cara mengonfigurasi dan melihat identitas layanan yang mengontrol akses dari instance Cloud Run ke Cloud de Confiance by S3NS API.

Instance Cloud Run memiliki identitas layanan yang digunakan sebagai akun terautentikasi untuk mengakses Cloud de Confiance by S3NS API dari container instance Cloud Run Anda. Untuk mempelajari identitas layanan lebih lanjut, lihat panduan Pengantar identitas layanan.

Cara penggunaan identitas layanan

Di Cloud Run, identitas layanan adalah akun layanan yang merupakan resource dan akun utama.

  • Identitas layanan sebagai resource: Untuk melampirkan akun layanan sebagai identitas layanan, akun deployer harus memiliki akses ke resource identitas layanan. Operasi tertentu, seperti membuat atau memperbarui instance, mengharuskan akun deployer memiliki izin pada resource identitas layanan.
  • Identitas layanan sebagai akun utama: Untuk mengakses Cloud de Confiance API dari instance Cloud Run, Anda harus memberikan peran atau izin yang diperlukan kepada identitas layanan untuk operasi yang ingin dilakukan instance Anda.

Bagian berikutnya membahas peran yang diperlukan untuk memberikan akses akun deployer ke resource identitas layanan dan memberikan peran atau izin yang diperlukan oleh akun utama akun layanan.

Peran yang diperlukan

Anda atau administrator Anda harus memberikan peran dan izin IAM untuk akun deployer dan identitas layanan.

Klik untuk melihat peran yang diperlukan untuk akun deployer

Untuk mendapatkan izin yang diperlukan untuk melampirkan akun layanan sebagai identitas layanan pada instance, Anda atau administrator Anda harus memberikan peran Service Account User (roles/iam.serviceAccountUser) ke akun deployer Anda pada akun layanan yang digunakan sebagai identitas layanan.

Peran yang telah ditetapkan ini berisi izin iam.serviceAccounts.actAs yang diperlukan untuk melampirkan akun layanan pada instance. Anda mungkin juga bisa mendapatkan izin ini dengan mengonfigurasi peran khusus atau menggunakan peran yang telah ditentukan lainnya.

Untuk mengetahui petunjuk tentang cara memberikan peran ini kepada akun deployer pada identitas layanan, lihat izin deployment. Jika akun layanan berada di project yang berbeda dengan instance Cloud Run, Anda atau administrator Anda juga harus mengonfigurasi peran IAM untuk agen layanan Cloud Run dan menyiapkan kebijakan organisasi. Lihat menggunakan akun layanan dalam project lain untuk mengetahui detail selengkapnya.

Klik untuk melihat peran yang diperlukan untuk identitas layanan

Untuk mengizinkan identitas layanan mengakses Cloud de Confiance API dari Cloud Run, Anda atau administrator harus memberikan izin atau peran yang diperlukan oleh operasi yang ingin Anda lakukan kepada identitas layanan. Untuk mengakses Library Klien Cloud tertentu, lihat Cloud de Confiance dokumentasi untuk Cloud de Confiance layanan.

Jika instance Cloud Run tidak mengakses layanan Cloud de Confiance lain, Anda tidak perlu memberikan peran atau izin apa pun kepada identitas layanan, dan Anda dapat menggunakan akun layanan default yang ditetapkan ke project.

Mendapatkan rekomendasi untuk membuat akun layanan khusus

Saat Anda membuat akun layanan baru dari Cloud de Confiance konsol, langkah opsional "Berikan akses project ke akun layanan ini" ditujukan untuk akses tambahan yang diperlukan. Misalnya, satu layanan Cloud Run dapat memanggil layanan Cloud Run pribadi lainnya, atau dapat mengakses database Cloud SQL. Keduanya memerlukan peran IAM tertentu. Untuk informasi selengkapnya, baca dokumentasi tentang mengelola akses.

Layanan Pemberi rekomendasi juga secara otomatis memberikan rekomendasi untuk membuat akun layanan khusus dengan serangkaian izin minimal yang diperlukan.

Mengonfigurasi identitas layanan

Jika belum membuat akun layanan, Anda dapat membuat akun layanan yang dikelola pengguna di IAM, atau di Cloud Run.

Untuk mengonfigurasi identitas layanan, gunakan gcloud CLI atau YAML:

gcloud

Jika belum membuat akun layanan, buat akun layanan yang dikelola pengguna di IAM.

Anda dapat memperbarui instance yang sudah ada untuk mengonfigurasi akun layanan menggunakan perintah berikut:

gcloud beta run instances update INSTANCE --service-account SERVICE_ACCOUNT

Ganti kode berikut:

  • INSTANCE: nama instance Anda.
  • SERVICE_ACCOUNT: akun layanan yang terkait dengan identitas baru. Nilai ini adalah alamat email untuk akun layanan, dalam format SERVICE_ACCOUNT_NAME@PROJECT_ID.s3ns.iam.gserviceaccount.com, dengan SERVICE_ACCOUNT_NAME adalah nama akun layanan, dan PROJECT_ID adalah project ID Anda. Anda juga dapat menetapkan akun layanan selama deployment menggunakan perintah:
gcloud beta run instances deploy INSTANCE --image IMAGE_URL --service-account SERVICE_ACCOUNT

Ganti kode berikut:

  • INSTANCE: nama instance.
  • IMAGE_URL: referensi ke image container, seperti us-docker.pkg.dev/cloudrun/container/hello:latest.
  • SERVICE_ACCOUNT: akun layanan yang terkait dengan identitas baru: nilai ini adalah alamat email untuk akun layanan, dalam format SERVICE_ACCOUNT_NAME@PROJECT_ID.s3ns.iam.gserviceaccount.com.

YAML

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

    gcloud beta run instances describe INSTANCE --format export > instance.yaml
  2. Contoh berikut berisi konfigurasi YAML:

    apiVersion: run.googleapis.com/v1
    kind: Instance
    metadata:
      name: INSTANCE
      annotations:
        run.googleapis.com/launch-stage: BETA
    spec:
      serviceAccountName: SERVICE_ACCOUNT

    Ganti kode berikut:

    • INSTANCE: nama instance Cloud Run Anda.
    • SERVICE_ACCOUNT: akun layanan yang terkait dengan identitas baru. Nilai ini adalah alamat email untuk akun layanan—misalnya, SERVICE_ACCOUNT_NAME@PROJECT_ID.s3ns.iam.gserviceaccount.com.
  3. Buat atau perbarui instance menggunakan perintah berikut:

    gcloud beta run instances replace instance.yaml

Menggunakan akun layanan dalam project lain

Jika Anda mengonfigurasi akun layanan dari project Cloud de Confiance yang berbeda dengan resource Cloud Run, lakukan hal berikut:

  1. Anda atau administrator Anda harus memberikan peran Service Account User (roles/iam.serviceAccountUser) pada akun layanan yang Anda gunakan sebagai identitas layanan.

    Konsol

    1. Buka halaman Akun layanan di Cloud de Confiance konsol:

      Buka halaman Service accounts

    2. Pilih alamat email akun layanan yang Anda gunakan sebagai identitas layanan.

    3. Klik tab Principals with access.

    4. Klik tombol Grant access.

    5. Masukkan alamat email akun deployer yang cocok dengan akun utama yang Anda berikan peran Admin atau Developer.

    6. Di menu drop-down Select a role, pilih peran Service Accounts > Service Account User.

    7. Klik Save.

    gcloud

    Gunakan perintah gcloud iam service-accounts add-iam-policy-binding, dengan mengganti variabel yang ditandai dengan nilai yang sesuai:

    gcloud iam service-accounts add-iam-policy-binding \
        SERVICE_ACCOUNT_NAME@SERVICE_ACCOUNT_PROJECT_ID.s3ns.iam.gserviceaccount.com \
        --member="PRINCIPAL" \
        --role="roles/iam.serviceAccountUser"

    Ganti kode berikut:

    • SERVICE_ACCOUNT_NAME: nama akun layanan yang Anda lampirkan ke resource Cloud Run.
    • SERVICE_ACCOUNT_PROJECT_ID: project ID tempat akun layanan berada.
    • PRINCIPAL: akun deployer yang Anda tambahkan binding-nya, menggunakan format user|group|serviceAccount:email atau domain:domain—misalnya:

      • user:test-user@gmail.com
      • group:admins@example.com
      • serviceAccount:test123@example.domain.com
      • domain:example.domain.com
  2. Anda atau administrator Anda harus memberikan peran Service Account Token Creator (roles/iam.serviceAccountTokenCreator) kepada agen layanan resource Cloud Run pada akun layanan yang Anda gunakan sebagai identitas layanan. Agen layanan mengikuti format service-PROJECT_NUMBER@serverless-robot-prod.s3ns-system.iam.gserviceaccount.com.

    Konsol

    1. Buka halaman Akun layanan di Cloud de Confiance konsol:

      Buka halaman Service accounts

    2. Pilih alamat email akun layanan yang Anda gunakan sebagai identitas layanan.

    3. Klik tab Permissions.

    4. Klik tombol Grant access.

    5. Masukkan alamat email agen layanan. Misalnya: service-PROJECT_NUMBER@serverless-robot-prod.s3ns-system.iam.gserviceaccount.com.

    6. Di menu drop-down Select a role, pilih peran Service Accounts > Service Account Token Creator.

    7. Klik Save.

    gcloud

    Gunakan perintah gcloud iam service-accounts add-iam-policy-binding:

    gcloud iam service-accounts add-iam-policy-binding \
        SERVICE_ACCOUNT_NAME@SERVICE_ACCOUNT_PROJECT_ID.s3ns.iam.gserviceaccount.com \
        --member="serviceAccount:service-CLOUD_RUN_RESOURCE_PROJECT_NUMBER@serverless-robot-prod.s3ns-system.iam.gserviceaccount.com" \
        --role="roles/iam.serviceAccountTokenCreator"

    Ganti kode berikut:

    • SERVICE_ACCOUNT_NAME: nama akun layanan yang Anda lampirkan ke resource Cloud Run.
    • SERVICE_ACCOUNT_PROJECT_ID: project ID tempat akun layanan berada.
    • CLOUD_RUN_RESOURCE_PROJECT_NUMBER: nomor project tempat Cloud Run berada.

    Perintah ini mencetak kebijakan izin yang diperbarui untuk akun layanan yang dikelola pengguna.

  3. Project yang berisi akun layanan ini mengharuskan kebijakan organisasi iam.disableCrossProjectServiceAccountUsage untuk ditetapkan ke status false atau tidak diterapkan pada tingkat folder atau diwariskan dari setelan tingkat project. Secara default, nilai ini ditetapkan ke true.

    Konsol

    1. Buka halaman Organization policies di konsol Cloud de Confiance :

      Buka halaman Organization policies

    2. Dari pemilih project, pilih organisasi dan project yang ingin Anda nonaktifkan penggunaan akun layanan lintas project-nya.

    3. Pilih kebijakan disable cross-project service account usage.

    4. Klik Manage policy.

    5. Di bagian Policy source, pilih Override parent's policy.

    6. Klik Add a rule.

    7. Di bagian Enforcement, pilih Off.

    8. Untuk menerapkan kebijakan, klik Set policy.

    gcloud

    Di project yang memiliki akun layanan, pastikan batasan kebijakan organisasi iam.disableCrossProjectServiceAccountUsage tidak diterapkan. Batasan ini diterapkan secara default.

    Untuk menonaktifkan batasan kebijakan organisasi ini, jalankan:

    gcloud resource-manager org-policies disable-enforce iam.disableCrossProjectServiceAccountUsage
        --project=SERVICE_ACCOUNT_PROJECT_ID

    Ganti SERVICE_ACCOUNT_PROJECT_ID dengan ID project yang berisi akun layanan.

Anda dapat menerapkan keanggotaan peran secara langsung ke resource akun layanan atau mendapatkannya dari level yang lebih tinggi dalam hierarki resource.

Langkah berikutnya