Tugas Cloud Run memiliki identitas layanan yang digunakan sebagai akun terautentikasi untuk mengakses Google Cloud 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 menambahkan akun layanan sebagai identitas layanan, akun deployer harus memiliki akses ke resource identitas layanan. Operasi tertentu, seperti membuat atau memperbarui tugas, mengharuskan akun deployer untuk memiliki izin pada resource identitas layanan.
- Identitas layanan sebagai prinsip utama: Untuk mengakses Google Cloud API dari tugas Cloud Run, Anda harus memberikan peran atau izin yang diperlukan kepada identitas layanan untuk operasi yang Anda inginkan untuk dijalankan oleh tugas Anda.
Bagian selanjutnya membahas peran yang diperlukan untuk memberi akun deployment akses ke resource identitas layanan dan memberikan akses untuk 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 tugas, Anda atau administrator Anda
harus memberikan peran
Service Account User (roles/iam.serviceAccountUser
) kepada akun deploymenter Anda di akun layanan
yang digunakan sebagai identitas layanan.
Peran yang telah ditetapkan ini berisi izin iam.serviceAccounts.actAs
, yang diperlukan untuk melampirkan akun layanan pada
tugas. Anda mungkin juga bisa mendapatkan izin ini
dengan mengonfigurasi peran kustom
atau menggunakan peran bawaan lainnya.
Untuk petunjuk cara memberi akun deployment peran ini dengan identitas layanan, lihat izin deployment. Jika akun layanan berada di project yang berbeda dengan tugas Cloud Run, Anda atau administrator Anda juga harus mengonfigurasi peran IAM untuk agen layanan Cloud Run dan menyiapkan kebijakan organisasi. Lihat menggunakan akun layanan di project lain untuk detail selengkapnya.
Klik untuk melihat peran yang diperlukan untuk identitas layanan
Agar identitas layanan dapat mengakses Google Cloud API dari Cloud Run, Anda atau administrator Anda 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 lainnya, Anda tidak perlu memberikan peran atau izin apa pun kepada layanan. Anda dapat menggunakan akun layanan default yang ditetapkan ke project tersebut.
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 mungkin memanggil layanan Cloud Run pribadi lainnya, atau layanan tersebut mungkin mengakses database Cloud SQL, yang keduanya memerlukan peran IAM tertentu. Lihat dokumentasi tentang mengelola akses untuk mengetahui informasi selengkapnya.
Layanan Pemberi Rekomendasi juga secara otomatis menyediakan rekomendasi untuk membuat akun layanan khusus dengan rangkaian izin yang diperlukan minimal.
Mengonfigurasi identitas layanan
Untuk mengonfigurasi identitas layanan di Cloud Run atau menentukan, gunakan Konsol Google Cloud, gcloud CLI, atau API (YAML) saat Anda membuat dan menjalankan tugas baru:
Konsol
Pada konsol Google Cloud, buka halaman tugas Cloud Run:
Jika Anda sedang mengonfigurasi tugas baru, klik tabTugas dan isi halaman setelan tugas awal seperti yang diinginkan. Jika Anda sedang mengonfigurasi tugas yang sudah ada, klik tugas tersebut, lalu klikEdit.
Klik Container, variabel dan secret, koneksi, keamanan untuk memperluas halaman properti tugas.
Klik tab Keamanan.
- Klik dropdown Akun layanan dan pilih akun layanan yang ada, atau klik Buat akun layanan baru jika berlaku.
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 ada agar 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 berbentukLOCATION-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.
Jika Anda membuat tugas baru, lewati langkah ini. Jika Anda mengupdate tugas yang sudah ada, download konfigurasi YAML:
gcloud run jobs describe JOB_NAME --format export > job.yaml
Perbarui
serviceAccountName:
atribut: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
.
Perbarui konfigurasi tugas yang ada:
gcloud run jobs replace job.yaml
Menggunakan akun layanan di project lain
Jika Anda mengonfigurasi akun layanan dari project Google Cloud yang berbeda dengan resource Cloud Run, lakukan hal berikut:
Anda atau administrator Anda harus memberikan peran Service Account User (
roles/iam.serviceAccountUser
) pada akun layanan yang Anda gunakan sebagai identitas layanan.Konsol
Buka halaman akun Layanan di konsol Google Cloud:
Pilih alamat email akun layanan yang Anda gunakan sebagai identitas layanan.
Klik tab Izin.
Klik tombol Berikan akses
.Masukkan alamat email akun deploymenter yang cocok dengan akun utama yang diberi peran Admin atau Developer.
Di drop-down Select a role, pilih peran Service Accounts > Service Account User.
Klik Save.
gcloud
Gunakan perintah
gcloud iam service-accounts add-iam-policy-binding
, yang 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 tempat Anda menambahkan resource Cloud Run.SERVICE_ACCOUNT_PROJECT_ID
: Project ID tempat akun layanan berada.PRINCIPAL dengan akun deployer tempat Anda menambahkan binding, menggunakan format
user|group|serviceAccount:email
ataudomain:domain
. Contoh:user:test-user@gmail.com
group:admins@example.com
serviceAccount:test123@example.domain.com
domain:example.domain.com
Anda atau administrator Anda 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 akun Layanan di konsol Google Cloud:
Pilih alamat email akun layanan yang Anda gunakan sebagai identitas layanan.
Klik tab Izin.
Klik tombol Berikan akses
.Masukkan alamat email agen layanan. Contoh:
service-PROJECT_NUMBER@serverless-robot-prod.iam.gserviceaccount.com
Di drop-down Select a role, pilih peran Service Accounts > Service Account Token Creator.
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.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 tempat Anda menambahkan 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.
Project yang berisi akun layanan ini mengharuskan
iam.disableCrossProjectServiceAccountUsage
kebijakan organisasi ditetapkan ke salah atau tidak diterapkan di tingkat folder atau diwarisi 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 penggunaan akun layanannya ingin Anda nonaktifkan.
Pilih kebijakan nonaktifkan penggunaan akun layanan lintas project.
Klik Manage Policy.
Di bagian Sumber kebijakan, pilih Ganti kebijakan induk.
Klik Add a rule.
Di bagian Penerapan, pilih Nonaktif.
Untuk menerapkan kebijakan, klik Setel kebijakan.
gcloud
Pada 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 selanjutnya
- Untuk mengetahui informasi selengkapnya tentang akun layanan, lihat panduan akun layanan IAM dan akun layanan yang dikelola pengguna.
- Jika layanan atau tugas Cloud Run Anda mengakses Google API atau layanan Google Cloud, Anda harus mengonfigurasi akun layanan sebagai identitas layanan. Pelajari lebih lanjut.