Layanan atau revisi Cloud Run memiliki identitas layanan yang digunakan sebagai akun yang diautentikasi untuk mengakses Google Cloud API dari container instance Cloud Run. Untuk mempelajari identitas layanan lebih lanjut, lihat bagian Pengantar identitas layanan kami.
Cara penggunaan identitas layanan
Di Cloud Run, identitas layanan adalah akun layanan yang 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 layanan atau revisi, mengharuskan akun deployer untuk memiliki izin pada resource identitas layanan.
- Identitas layanan sebagai akun utama: Untuk mengakses Google Cloud API dari layanan atau revisi Cloud Run, Anda harus memberikan identitas layanan peran atau izin yang diperlukan untuk operasi yang Anda inginkan layanan atau revisi yang akan dilakukan.
Bagian selanjutnya membahas peran yang diperlukan untuk memberikan akun deployer mengakses resource identitas layanan dan memberikan akses untuk layanan tersebut akun utama.
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, Anda perlu melampirkan akun layanan sebagai
identitas layanan pada layanan atau revisi, Anda atau administrator
Anda harus memberi akun deployer Anda
Service Account User
peran (roles/iam.serviceAccountUser
) di akun layanan
yang digunakan sebagai identitas layanan.
Peran bawaan ini berisi iam.serviceAccounts.actAs
izin akses, yang diperlukan untuk melampirkan akun layanan pada
layanan atau revisi. Anda mungkin juga bisa
mendapatkan izin ini
dengan mengonfigurasi peran khusus
atau menggunakan peran bawaan lainnya.
Untuk petunjuk cara memberikan peran ini kepada akun deployer pada identitas layanan, lihat izin deployment. Jika akun layanan berada dalam project yang berbeda dengan Layanan atau revisi 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 Google Cloud API dari Cloud Run, Anda atau administrator harus memberikan layanan identitas izin atau peran yang diperlukan oleh operasi yang ingin Anda lakukan. Untuk mengakses Library Klien Cloud, lihat dokumentasi Google Cloud untuk layanan Google Cloud tertentu.
Jika layanan atau revisi Cloud Run tidak mengakses layanan Google Cloud lainnya, Anda tidak perlu memberikan menentukan peran atau izin apa pun, dan Anda dapat menggunakan layanan default akun yang ditetapkan untuk 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 lainnya layanan Cloud Run pribadi, atau mungkin mengakses database Cloud SQL, baik yang memerlukan peran IAM tertentu. Baca dokumentasi tentang mengelola akses untuk informasi selengkapnya.
Layanan Pemberi Rekomendasi juga secara otomatis memberikan rekomendasi untuk membuat akun layanan khusus dengan sekumpulan izin akses yang diperlukan.
Mengonfigurasi identitas layanan
Jika belum membuat akun layanan, Anda dapat membuat akun layanan yang dikelola pengguna di IAM, atau di di Cloud Run.
Untuk mengonfigurasi identitas layanan, gunakan konsol Google Cloud, gcloud CLI, API (YAML) saat Anda membuat layanan baru atau deploy revisi baru, atau Terraform:
Konsol
Di konsol Google Cloud, buka Cloud Run:
Klik Buat Layanan jika Anda mengonfigurasi layanan baru yang akan di-deploy. Jika Anda mengonfigurasi layanan yang ada, klik layanan, lalu klik Edit dan deploy revisi baru.
Jika Anda mengonfigurasi layanan baru, isi halaman setelan layanan awal sesuai keinginan, kemudian klik Container, vo;ume, jejaring, sekuritas untuk memperluas halaman konfigurasi layanan.
Klik tab Keamanan.
- Klik dropdown Akun layanan dan pilih akun layanan yang ada, atau klik Buat akun layanan baru jika berlaku.
Klik Buat atau Deploy.
gcloud
Jika belum membuat akun layanan, Anda dapat membuat akun layanan yang dikelola pengguna di IAM Anda.
Anda dapat memperbarui layanan yang ada akun layanan baru dengan menggunakan perintah berikut:
gcloud run services update SERVICE --service-account SERVICE_ACCOUNT
Ganti:
- SERVICE 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 juga dapat menetapkan akun layanan selama deployment menggunakan perintah:
gcloud run deploy --image IMAGE_URL --service-account SERVICE_ACCOUNT
Replace:
- 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,
example@myservice.iam.gserviceaccount.com
.
YAML
Jika belum membuat akun layanan, Anda dapat membuat akun layanan yang dikelola pengguna di IAM Anda.
Jika Anda membuat layanan baru, lewati langkah ini. Jika Anda mengupdate layanan yang sudah ada, download konfigurasi YAML:
gcloud run services describe SERVICE --format export > service.yaml
Perbarui atribut
serviceAccountName:
:apiVersion: serving.knative.dev/v1 kind: Service metadata: name: SERVICE spec: template: spec: serviceAccountName: SERVICE_ACCOUNT
Ganti
- SERVICE dengan nama layanan 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
.
Buat atau update layanan menggunakan perintah berikut:
gcloud run services replace service.yaml
Terraform
Untuk mempelajari cara menerapkan atau menghapus konfigurasi Terraform, lihat Perintah dasar Terraform.
Untuk membuat akun layanan, tambahkan resource berikut ke file main.tf
Anda yang ada:
Buat atau perbarui layanan Cloud Run service dan sertakan akun layanan Anda:
Menggunakan akun layanan di project lain
Jika Anda mengonfigurasi akun layanan dari project Google Cloud yang berbeda daripada resource Cloud Run, lakukan langkah berikut:
Anda atau administrator Anda harus memberikan Peran Service Account User (
roles/iam.serviceAccountUser
) di 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 layanan identitas Anda.
Klik tab Izin.
Klik
Berikan akses tombol.Masukkan alamat email akun deploymenter yang cocok dengan akun utama yang Anda berikan peran Admin atau {i>Developer<i}.
Di drop-down Pilih peran, pilih Akun Layanan > Peran Service Account User.
Klik Simpan.
gcloud
Gunakan perintah
gcloud iam service-accounts add-iam-policy-binding
. mengganti variabel yang disorot 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 melampirkan Cloud Run ke resource.SERVICE_ACCOUNT_PROJECT_ID
: Project ID tempat akun layanan Anda ditemukan.PRINCIPAL dengan akun deployer yang Anda tambahkan 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 harus memberikan izin agen layanan peran Service Account Token Creator (
roles/iam.serviceAccountTokenCreator
) di akun layanan 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 layanan identitas Anda.
Klik tab Izin.
Klik
Berikan akses tombol.Masukkan alamat email agen layanan. Contoh:
service-PROJECT_NUMBER@serverless-robot-prod.iam.gserviceaccount.com
Di drop-down Pilih peran, pilih Akun Layanan > Service Account Token Creator.
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 tempat Anda melampirkan Cloud Run ke resource.SERVICE_ACCOUNT_PROJECT_ID
: Project ID tempat akun layanan Anda ditemukan.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 memerlukan kebijakan organisasi
iam.disableCrossProjectServiceAccountUsage
akan ditetapkan ke false atau tidak diterapkan di level folder atau diwarisi dari level project setelan. Secara default, nilai ini ditetapkan ketrue
.Konsol
Buka halaman Kebijakan organisasi di Konsol Google Cloud:
Dari pemilih project, pilih organisasi dan project untuk yang penggunaan akun layanan lintas projectnya 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
Dalam project yang memiliki akun layanan, pastikan bahwa
iam.disableCrossProjectServiceAccountUsage
batasan kebijakan organisasi tidak diberlakukan. 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 informasi selengkapnya tentang akun layanan, lihat Akun layanan IAM dan panduan 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.