Mengonfigurasi identitas layanan untuk tugas

Job Cloud Run memiliki identitas layanan yang digunakan sebagai akun terautentikasi untuk mengakses API Google Cloud dari penampung 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 tugas, mengharuskan akun deployer memiliki izin pada resource identitas layanan.
  • Identitas layanan sebagai akun utama: Untuk mengakses Google Cloud API dari tugas Cloud Run, Anda harus memberikan peran atau izin yang diperlukan kepada identitas layanan untuk operasi yang ingin dilakukan tugas Anda.

Bagian berikutnya membahas peran yang diperlukan untuk memberikan akses akun deployer pada resource identitas layanan dan memberikan peran atau izin yang diperlukan oleh akun utama 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 tugas, Anda atau administrator Anda harus memberikan peran Pengguna Akun Layanan (roles/iam.serviceAccountUser) ke akun deployer Anda pada akun layanan yang digunakan sebagai identitas layanan.

Peran yang telah ditentukan ini berisi izin iam.serviceAccounts.actAs yang diperlukan untuk melampirkan akun layanan pada tugas. Anda mungkin juga bisa mendapatkan izin ini dengan mengonfigurasi peran khusus atau menggunakan peran bawaan 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 job Cloud Run, Anda atau administrator Anda juga harus mengonfigurasi peran IAM untuk agen layanan Cloud Run dan menyiapkan kebijakan org. 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 Google Cloud 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 dokumentasi Google Cloud untuk layanan Google Cloud .

Jika tugas Cloud Run tidak mengakses layanan Google Cloud lain, Anda tidak perlu memberikan peran atau izin apa pun ke 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 konsol Google Cloud , 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 mengetahui informasi selengkapnya, lihat 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

Untuk mengonfigurasi atau menentukan identitas layanan di Cloud Run, gunakan konsol Google Cloud , gcloud CLI, atau API (YAML) saat Anda membuat dan menjalankan tugas baru:

Konsol

  1. Di konsol Google Cloud , buka halaman tugas Cloud Run:

    Buka Cloud Run

  2. Pilih Tugas dari menu, lalu klik Deploy container untuk mengisi halaman setelan tugas awal. Jika Anda mengonfigurasi tugas yang ada, pilih tugas, lalu klik Edit.

  3. Klik Container, Volume, Koneksi, Keamanan untuk memperluas halaman properti tugas.

  4. Klik tab Keamanan.

    gambar

    • Klik menu dropdown Akun layanan dan pilih akun layanan yang ada, atau klik Buat akun layanan baru jika berlaku.
  5. Klik Buat atau Perbarui.

gcloud

Anda dapat membuat tugas baru dan menentukan akun layanan menggunakan perintah berikut:

gcloud run jobs create JOB_NAME --service-account SERVICE_ACCOUNT

Ganti:

  • JOB_NAME dengan nama layanan Anda.
  • SERVICE_ACCOUNT dengan akun layanan yang terkait dengan identitas baru: nilai ini adalah alamat email untuk akun layanan, misalnya, example@myproject.iam.gserviceaccount.com.

Anda dapat memperbarui tugas yang sudah ada untuk memiliki akun layanan baru menggunakan perintah berikut:

gcloud run jobs update JOB_NAME --image IMAGE_URL --service-account SERVICE_ACCOUNT

Ganti:

  • IMAGE_URL dengan referensi ke image container, misalnya, us-docker.pkg.dev/cloudrun/container/hello:latest. Jika Anda menggunakan Artifact Registry, repositori REPO_NAME harus sudah dibuat. URL berbentuk LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG.
  • SERVICE_ACCOUNT dengan akun layanan yang terkait dengan identitas baru: nilai ini adalah alamat email untuk akun layanan, misalnya, SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com.

YAML

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

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

    gcloud run jobs describe JOB_NAME --format export > job.yaml
  2. Perbarui atribut serviceAccountName::

    apiVersion: run.googleapis.com/v1
    kind: Job
    metadata:
      name: JOB_NAME
    spec:
      template:
        spec:
          template:
            spec:
              serviceAccountName: SERVICE_ACCOUNT

    Ganti

    • JOB_NAME dengan nama tugas Cloud Run Anda.
    • SERVICE_ACCOUNT dengan akun layanan yang terkait dengan identitas baru: nilai ini adalah alamat email untuk akun layanan, misalnya, SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com.
  3. Perbarui konfigurasi tugas yang ada:

    gcloud run jobs replace job.yaml

Terraform

Untuk mempelajari cara menerapkan atau menghapus konfigurasi Terraform, lihat Perintah dasar Terraform.

Tambahkan kode berikut ke resource google_cloud_run_v2_job di konfigurasi Terraform Anda:

resource "google_cloud_run_v2_job" "default" {
  name     = "JOB_NAME"
  location = "REGION"

  template {
    template {
      containers {
        image = "us-docker.pkg.dev/cloudrun/container/job"
        }
      service_account = "SERVICE_ACCOUNT"
      }
    }
  }

Ganti:

  • JOB_NAME dengan nama tugas Cloud Run Anda.
  • REGION dengan region Google Cloud . Contohnya, europe-west1.
  • SERVICE_ACCOUNT dengan akun layanan yang terkait dengan identitas baru: nilai ini adalah alamat email untuk akun layanan, misalnya, SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com.

Menggunakan akun layanan dalam project lain

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

  1. Anda atau administrator Anda harus memberikan peran Pengguna Akun Layanan (roles/iam.serviceAccountUser) pada akun layanan yang Anda gunakan sebagai identitas layanan.

    Konsol

    1. Buka halaman Service accounts di konsol Google Cloud :

      Buka halaman Service accounts

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

    3. Klik tab Izin.

    4. Klik tombol Grant access.

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

    6. Di menu drop-down Pilih peran, pilih peran Akun Layanan > Pengguna Akun Layanan.

    7. Klik Simpan.

    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.iam.gserviceaccount.com \
        --member="PRINCIPAL" \
        --role="roles/iam.serviceAccountUser"

    Ganti:

    • SERVICE_ACCOUNT_NAME: Nama akun layanan yang Anda lampirkan ke resource Cloud Run.
    • SERVICE_ACCOUNT_PROJECT_ID: Project ID tempat akun layanan berada.
    • PRINCIPAL dengan akun deployer yang Anda tambahkan pengikatannya, menggunakan format user|group|serviceAccount:email atau domain:domain. Contoh:

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

    Konsol

    1. Buka halaman Service accounts di konsol Google Cloud :

      Buka halaman Service accounts

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

    3. Klik tab Izin.

    4. Klik tombol Grant access.

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

    6. Di menu drop-down Pilih peran, pilih peran Akun Layanan > Pembuat Token Akun Layanan.

    7. Klik Simpan.

    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.iam.gserviceaccount.com \
        --member="serviceAccount:service-CLOUD_RUN_RESOURCE_PROJECT_NUMBER@serverless-robot-prod.iam.gserviceaccount.com" \
        --role="roles/iam.serviceAccountTokenCreator"

    Ganti nilai 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 ditetapkan ke status false atau unenforced di tingkat folder atau diwariskan dari setelan level project. Secara default, nilai ini ditetapkan ke true.

    Konsol

    1. Buka halaman Kebijakan organisasi di konsol Google Cloud :

      Buka Organization policies

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

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

    4. Klik Manage Policy.

    5. Di bagian Sumber kebijakan, pilih Ganti kebijakan induk.

    6. Klik Add a rule.

    7. Di bagian Enforcement, pilih Off.

    8. Untuk menerapkan kebijakan, klik Setel kebijakan.

    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 project ID 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