Halaman ini menunjukkan cara mengonfigurasi dan melihat identitas layanan yang mengontrol akses dari kumpulan pekerja Cloud Run ke Google Cloud API.
Kumpulan pekerja Cloud Run memiliki identitas layanan yang digunakan sebagai akun yang diautentikasi 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 gabungan pekerja, mengharuskan akun deployer memiliki izin pada resource identitas layanan.
- Identitas layanan sebagai akun utama: Untuk mengakses Google Cloud API dari kumpulan pekerja Cloud Run, Anda harus memberikan peran atau izin yang diperlukan kepada identitas layanan untuk operasi yang ingin dilakukan oleh kumpulan pekerja 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 di gabungan pekerja, Anda atau administrator Anda
harus memberikan peran
Service Account User (roles/iam.serviceAccountUser
) pada akun layanan
yang digunakan sebagai identitas layanan.
Peran bawaan ini berisi izin iam.serviceAccounts.actAs
yang diperlukan untuk melampirkan akun layanan di
kumpulan pekerja. 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 kumpulan pekerja 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 pool worker Cloud Run tidak mengakses layanan Google Cloud 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 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
Jika belum membuat akun layanan, Anda dapat membuat akun layanan yang dikelola pengguna di IAM atau di Cloud Run.
Untuk mengonfigurasi identitas layanan, gunakan konsolGoogle Cloud atau gcloud CLI:
Konsol
Di konsol Google Cloud , buka Cloud Run:
Pilih Worker pools dari menu, lalu klik Deploy container untuk mengonfigurasi worker pool baru. Jika Anda mengonfigurasi pool worker yang sudah ada, klik pool worker, lalu klik Edit dan deploy revisi baru.
Jika Anda mengonfigurasi kumpulan pekerja baru, isi halaman kumpulan pekerja awal, lalu klik Container, Volume, Jaringan, Keamanan untuk meluaskan halaman konfigurasi kumpulan pekerja.
Klik tab Keamanan.
- Klik Buat akun layanan baru atau klik menu dropdown Akun layanan dan pilih akun layanan yang ada. jika berlaku.
Klik Buat atau Deploy.
gcloud
Jika Anda belum membuat akun layanan, buat akun layanan yang dikelola pengguna di IAM.
Anda dapat memperbarui kumpulan pekerja yang ada untuk mengonfigurasi akun layanan menggunakan perintah berikut:
gcloud beta run worker-pools update WORKER_POOL --service-account SERVICE_ACCOUNT
Ganti kode berikut:
- WORKER_POOL: nama layanan Anda.
- SERVICE_ACCOUNT: akun layanan yang terkait dengan
akun layanan yang terkait dengan identitas baru. Nilai ini adalah alamat email untuk akun layanan, dalam format
SERVICE_ACCOUNT_NAME@PROJECT_ID.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 worker-pools deploy WORKER_POOL --image IMAGE_URL --service-account SERVICE_ACCOUNT
Ganti kode berikut:
- WORKER_POOL: nama pool pekerja.
- IMAGE_URL: referensi ke image container yang
berisi worker pool, seperti
us-docker.pkg.dev/cloudrun/container/worker-pool:latest
. - SERVICE_ACCOUNT: akun layanan yang terkait dengan
identitas baru: nilai ini adalah alamat email untuk akun layanan, dalam
bentuk
SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com
.
Terraform
Untuk mempelajari cara menerapkan atau menghapus konfigurasi Terraform, lihat Perintah dasar Terraform.
resource "google_cloud_run_v2_worker_pool" "default" {
name = "WORKER_POOL"
location = "REGION"
launch_stage = "BETA"
template {
containers {
image = "IMAGE_URL"
}
}
service_account = "SERVICE_ACCOUNT"
}
Ganti kode berikut:
- WORKER_POOL: nama pool pekerja.
- REGION: Google Cloud region—misalnya,
europe-west1
. - IMAGE_URL: referensi ke image container yang
berisi worker pool, seperti
us-docker.pkg.dev/cloudrun/container/worker-pool:latest
. - SERVICE_ACCOUNT: akun layanan yang terkait dengan
akun layanan yang terkait dengan identitas baru. Nilai ini adalah alamat email untuk akun layanan, dalam format
SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com
, dengan SERVICE_ACCOUNT_NAME adalah nama akun layanan, dan PROJECT_ID adalah project ID Anda.
Menggunakan akun layanan dalam project lain
Jika Anda mengonfigurasi akun layanan dari Google Cloud project yang berbeda dengan resource Cloud Run, lakukan hal berikut:
Anda atau administrator Anda harus memberikan peran Pengguna Akun Layanan (
roles/iam.serviceAccountUser
) pada akun layanan yang Anda gunakan sebagai identitas layanan.Konsol
Buka halaman Service accounts di konsol Google Cloud :
Pilih alamat email akun layanan yang Anda gunakan sebagai identitas layanan.
Klik tab Izin.
Klik tombol
Grant access.Masukkan alamat email akun deployer yang cocok dengan akun utama yang Anda beri peran Admin atau Developer.
Di menu drop-down Pilih peran, pilih peran Akun Layanan > Pengguna Akun Layanan.
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 kode berikut:
SERVICE_ACCOUNT_NAME
: nama akun layanan yang Anda lampirkan ke resource Cloud RunSERVICE_ACCOUNT_PROJECT_ID
: project ID tempat akun layanan beradaPRINCIPAL: akun deployer yang Anda tambahkan pengikatannya, menggunakan format
user|group|serviceAccount:email
ataudomain:domain
—misalnya:user:test-user@gmail.com
group:admins@example.com
serviceAccount:test123@example.domain.com
domain:example.domain.com
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 formatservice-PROJECT_NUMBER@serverless-robot-prod.iam.gserviceaccount.com
.Konsol
Buka halaman Service accounts di konsol Google Cloud :
Pilih alamat email akun layanan yang Anda gunakan sebagai identitas layanan.
Klik tab Izin.
Klik tombol
Grant access.Masukkan alamat email agen layanan. Contoh:
service-PROJECT_NUMBER@serverless-robot-prod.iam.gserviceaccount.com
Di menu drop-down Pilih peran, pilih peran Akun Layanan > Pembuat Token Akun Layanan.
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 kode berikut:
SERVICE_ACCOUNT_NAME
: nama akun layanan yang Anda lampirkan ke resource Cloud RunSERVICE_ACCOUNT_PROJECT_ID
: project ID tempat akun layanan beradaCLOUD_RUN_RESOURCE_PROJECT_NUMBER
: nomor project tempat Cloud Run berada
Perintah ini mencetak kebijakan izin yang diperbarui untuk akun layanan yang dikelola pengguna.
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 ketrue
.Konsol
Buka halaman Kebijakan organisasi di konsol Google Cloud :
Dari pemilih project, pilih organisasi dan project yang ingin Anda nonaktifkan penggunaan akun layanan lintas projectnya.
Pilih kebijakan disable cross-project service account usage.
Klik Manage Policy.
Di bagian Sumber kebijakan, pilih Ganti kebijakan induk.
Klik Add a rule.
Di bagian Enforcement, pilih Off.
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.
Melihat konfigurasi akun layanan untuk kumpulan pekerja
Di konsol Google Cloud , buka Cloud Run:
Klik Worker pools untuk menampilkan daftar worker pool yang di-deploy.
Klik kumpulan pekerja yang ingin Anda periksa untuk menampilkan panel detailnya.
Klik tab Security untuk menampilkan informasi keamanan kumpulan pekerja, termasuk akun layanan.
Langkah berikutnya
- Untuk mengetahui informasi selengkapnya tentang akun layanan, lihat panduan akun layanan IAM dan akun layanan yang dikelola pengguna.
- Jika layanan, tugas, atau kumpulan pekerja Cloud Run Anda mengakses API atau layanan Google, Anda harus mengonfigurasi akun layanan sebagai identitas layanan.Google Cloud Pelajari lebih lanjut.