Workflows menggunakan akun layanan untuk memberikan akses alur kerja ke Google Cloud resource. Akun layanan adalah akun khusus yang berfungsi sebagai identitas non-orang, seperti fungsi, aplikasi, atau VM. Akun ini memberi Anda cara untuk mengautentikasi non-orang ini. Akun layanan dapat dianggap sebagai identitas dan resource.
Jika menganggap akun layanan sebagai identitas, Anda dapat memberikan peran ke akun layanan, sehingga akun layanan dapat mengakses resource (seperti alur kerja).
Jika menganggap akun layanan sebagai resource, Anda dapat memberikan peran kepada pengguna lain untuk mengakses atau mengelola akun layanan tersebut.
Akun layanan diidentifikasi oleh alamat emailnya, yang bersifat unik untuk akun tersebut.
Untuk mengetahui informasi selengkapnya tentang cara menyiapkan autentikasi dengan aplikasi produksi, lihat Melakukan autentikasi sebagai akun layanan.
Akun layanan default
Setiap alur kerja dikaitkan dengan akun layanan Identity and Access Management (IAM) pada saat alur kerja dibuat. Jika Anda tidak menentukan akun layanan selama pembuatan alur kerja, alur kerja akan menggunakan akun layanan Compute Engine default untuk identitasnya. Anda dapat memverifikasi akun layanan yang terkait dengan alur kerja. Dalam dokumen ini, lihat Memverifikasi akun layanan yang terkait dengan alur kerja.
Sebaiknya gunakan akun layanan default hanya untuk pengujian dan pengembangan. Untuk lingkungan produksi, sebaiknya buat akun layanan baru dan berikan satu atau beberapa peran IAM berisi izin minimum yang diperlukan untuk mengelola alur kerja.
Satu-satunya peran yang diperlukan oleh akun layanan Anda adalah peran yang diperlukan untuk mengakses resource yang diatur oleh alur kerja Anda. Untuk mengetahui informasi selengkapnya, lihat Izin akun layanandalam dokumen ini.
Izin akun layanan
Dikarenakan akun layanan adalah identitas, Anda dapat mengizinkan akun layanan mengakses resource dalam project Anda dengan memberinya peran, seperti yang Anda lakukan untuk akun utama lainnya. Misalnya, jika Anda ingin mengizinkan alur kerja Anda mengirim log ke Cloud Logging, pastikan akun layanan yang menjalankan alur kerja telah diberi peran yang mencakup izin logging.logEntries.create (misalnya, peran Logs Writer). Secara umum, peran yang diperlukan oleh akun layanan Anda bergantung pada resource yang Anda atur dengan alur kerja Anda. Untuk menentukan peran yang diperlukan, tinjau dokumentasi produk
untuk resource yang Anda atur, atau
pilih peran bawaan.
Perhatikan bahwa akun layanan alur kerja tidak memerlukan peran workflows.invoker, kecuali jika alur kerja memanggil dirinya sendiri atau alur kerja lain (yaitu, membuat eksekusi alur kerja baru). Untuk mengetahui informasi selengkapnya, lihat
Memanggil Alur Kerja.
Untuk mengetahui informasi selengkapnya tentang cara memberikan peran ke akun utama, termasuk akun layanan, lihat Mengelola akses ke project, folder, dan organisasi.
Melampirkan akun layanan ke resource
Untuk membuat resource dan melampirkan akun layanan, Anda memerlukan izin untuk membuat resource tersebut dan izin untuk melampirkan akun layanan ke resource.
Izin untuk melampirkan akun layanan ke resource disediakan oleh peran apa pun yang mencakup izin iam.serviceAccounts.actAs.
Untuk mengetahui informasi selengkapnya, lihat Peran untuk autentikasi akun layanan.
Memanggil Cloud Run Functions
Di Cloud Run Functions, izin pemanggilan tersedia dengan mengelola layanan Cloud Run yang mendasarinya. Jika alur kerja Anda memanggil layanan Cloud Run Functions, Anda tidak perlu memberikan peran Invoker Cloud Functions (roles/cloudfunctions.invoker) ke akun layanan pemanggil. Sebagai gantinya, Anda harus memberikan peran Cloud Run Invoker (roles/run.invoker).
Untuk mengetahui informasi selengkapnya, lihat Membandingkan Cloud Run Functions.
Men-deploy alur kerja dengan akun layanan kustom
Anda dapat membuat akun layanan yang dikelola pengguna sendiri untuk memberi Anda fleksibilitas yang lebih besar dalam mengontrol akses ke alur kerja Anda.
Buat akun layanan Anda dan catat namanya.
Berikan peran yang sesuai ke akun layanan, berdasarkan resource yang harus diakses alur kerja untuk melakukan pekerjaannya.
Pastikan semua akun utama yang men-deploy alur kerja dapat melampirkan akun layanan ke resource. Jika Anda membuat akun layanan, Anda akan otomatis diberi izin ini. Untuk mengetahui informasi selengkapnya, lihat Peran untuk autentikasi akun layanan.
Untuk mendapatkan izin yang diperlukan untuk melampirkan akun layanan ke resource, minta administrator untuk memberi Anda peran IAM Pengguna Akun Layanan (
roles/iam.serviceAccountUser) di project atau akun layanan Anda. Untuk mengetahui informasi selengkapnya tentang cara memberikan peran, lihat Mengelola akses ke project, folder, dan organisasi.Peran yang telah ditetapkan ini berisi izin
iam.serviceAccounts.actAs, yang diperlukan untuk melampirkan akun layanan ke resource.Anda mungkin juga bisa mendapatkan izin ini dengan peran khusus atau peran bawaan lainnya.
Berikan peran pada project:
gcloud projects add-iam-policy-binding WORKFLOWS_PROJECT_ID \ --member=PRINCIPAL \ --role='roles/iam.serviceAccountUser'
Atau, berikan peran pada akun layanan:
gcloud iam service-accounts add-iam-policy-binding SERVICE_ACCOUNT_RESOURCE_NAME \ --member=PRINCIPAL \ --role='roles/iam.serviceAccountUser'
Ganti kode berikut:
WORKFLOWS_PROJECT_ID: project Google Cloud ID Anda yang berisi resource alur kerjaPRINCIPAL: ID untuk deployer alur kerja dalam formatuser|group|serviceAccount:emailataudomain:domain. Contoh:user:test-user@gmail.comgroup:admins@example.comserviceAccount:test123@example.domain.comdomain:example.domain.com
SERVICE_ACCOUNT_RESOURCE_NAME: nama resource lengkap akun layanan. Contoh:projects/SERVICE_ACCOUNT_PROJECT_ID/serviceAccounts/SERVICE_ACCOUNT_NAME@SERVICE_ACCOUNT_PROJECT_ID.iam.gserviceaccount.comDengan:
SERVICE_ACCOUNT_PROJECT_IDadalah Google Cloud project ID yang berisi akun layanan.SERVICE_ACCOUNT_NAMEadalah nama akun layanan.
Deploy alur kerja Anda menggunakan akun layanan kustom.
Men-deploy alur kerja dengan akun layanan lintas project
Secara default, Anda tidak dapat membuat akun layanan pada satu project dan melampirkannya ke resource pada project lain. Petunjuk berikut menunjukkan cara melampirkan akun layanan dalam satu project ke alur kerja di project lain. Kemudian, Anda dapat menggunakan akun layanan di berbagai project untuk men-deploy alur kerja.
Jika akun layanan dan resource alur kerja berada di project yang berbeda, dari project tempat akun layanan berada, selesaikan langkah-langkah berikut:
Di Google Cloud konsol, buka halaman Organization policies:
Periksa kebijakan organisasi untuk project dan pastikan batasan boolean tidak diterapkan untuk project.
iam.disableCrossProjectServiceAccountUsageUntuk mengetahui informasi selengkapnya, lihat Mengizinkan akun layanan dilampirkan di seluruh project.Buat akun layanan Anda dan catat namanya.
Berikan peran yang sesuai ke akun layanan, berdasarkan resource yang harus diakses alur kerja untuk melakukan pekerjaannya.
Berikan peran Service Account Token Creator (
roles/iam.serviceAccountTokenCreator) kepada agen layanan Workflows. Hal ini memungkinkan agen layanan mengelola akses lintas project untuk akun layanan. Agen layanan adalah identitas layanan tertentu Google Cloud untuk project tertentu. Untuk mengetahui informasi selengkapnya, lihat Agen layanan.Konsol
Di Google Cloud konsol, buka halaman Workflows:
Klik Create untuk membuat alur kerja atau pilih nama alur kerja yang ingin Anda perbarui.
Di daftar Service account, klik Switch project.
Pilih akun layanan dari project lain.
Jika diminta, berikan peran
roles/iam.serviceAccountTokenCreatorkepada agen layanan Workflows.
gcloud
Berikan peran
roles/iam.serviceAccountTokenCreatorkepada agen layanan Workflows:gcloud iam service-accounts add-iam-policy-binding SERVICE_ACCOUNT_RESOURCE_NAME \ --member='serviceAccount:service-WORKFLOWS_PROJECT_NUMBER@gcp-sa-workflows.iam.gserviceaccount.com' \ --role='roles/iam.serviceAccountTokenCreator'
Ganti kode berikut:
SERVICE_ACCOUNT_RESOURCE_NAME: nama resource lengkap akun layanan. Contoh:projects/SERVICE_ACCOUNT_PROJECT_ID/serviceAccounts/SERVICE_ACCOUNT_NAME@SERVICE_ACCOUNT_PROJECT_ID.iam.gserviceaccount.comDengan:
SERVICE_ACCOUNT_PROJECT_IDadalah Google Cloud project ID yang berisi akun layanan.SERVICE_ACCOUNT_NAMEadalah nama akun layanan.
WORKFLOWS_PROJECT_NUMBER: nomor project yang berisi resource alur kerja.Google Cloud
Pastikan semua akun utama yang men-deploy alur kerja dapat melampirkan akun layanan ke resource. Jika Anda membuat akun layanan, Anda akan otomatis diberi izin ini. Untuk mengetahui informasi selengkapnya, lihat Peran untuk autentikasi akun layanan.
Untuk mendapatkan izin yang diperlukan untuk melampirkan akun layanan ke resource, minta administrator untuk memberi Anda peran IAM Pengguna Akun Layanan (
roles/iam.serviceAccountUser) di project atau akun layanan Anda. Untuk mengetahui informasi selengkapnya tentang cara memberikan peran, lihat Mengelola akses ke project, folder, dan organisasi.Peran yang telah ditetapkan ini berisi izin
iam.serviceAccounts.actAs, yang diperlukan untuk melampirkan akun layanan ke resource.Anda mungkin juga bisa mendapatkan izin ini dengan peran khusus atau peran bawaan lainnya.
Konsol
Di Google Cloud konsol, buka halaman Workflows:
Klik Create untuk membuat alur kerja atau pilih nama alur kerja yang ingin Anda perbarui.
Di daftar Service account, klik Switch project.
Pilih akun layanan dari project lain.
Jika diminta, berikan peran
roles/iam.serviceAccountUserdi project.
gcloud
Berikan peran pada project:
gcloud projects add-iam-policy-binding WORKFLOWS_PROJECT_ID \ --member=PRINCIPAL \ --role='roles/iam.serviceAccountUser'
Atau, berikan peran pada akun layanan:
gcloud iam service-accounts add-iam-policy-binding SERVICE_ACCOUNT_RESOURCE_NAME \ --member=PRINCIPAL \ --role='roles/iam.serviceAccountUser'
Ganti kode berikut:
WORKFLOWS_PROJECT_ID: ID project Anda yang berisi resource alur kerja Google CloudPRINCIPAL: ID untuk deployer alur kerja dalam formatuser|group|serviceAccount:emailataudomain:domain. Contoh:user:test-user@gmail.comgroup:admins@example.comserviceAccount:test123@example.domain.comdomain:example.domain.com
SERVICE_ACCOUNT_RESOURCE_NAME: nama resource lengkap akun layanan. Contoh:projects/SERVICE_ACCOUNT_PROJECT_ID/serviceAccounts/SERVICE_ACCOUNT_NAME@SERVICE_ACCOUNT_PROJECT_ID.iam.gserviceaccount.comDengan:
SERVICE_ACCOUNT_PROJECT_IDadalah Google Cloud project ID yang berisi akun layanan.SERVICE_ACCOUNT_NAMEadalah nama akun layanan.
Deploy alur kerja Anda menggunakan akun layanan lintas project.
Memverifikasi akun layanan yang terkait dengan alur kerja
Anda dapat memverifikasi akun layanan mana yang terkait dengan alur kerja tertentu.
Konsol
Di Google Cloud konsol, buka halaman Workflows:
Di halaman Workflows, klik nama alur kerja.
Di halaman Workflow Details, klik tab Details.
Akun layanan yang terkait dengan alur kerja akan ditampilkan.
gcloud
Buka terminal.
Masukkan perintah berikut:
gcloud workflows describe MY_WORKFLOW
Ganti
MY_WORKFLOWdengan nama alur kerja Anda.Deskripsi alur kerja lengkap, termasuk akun layanan terkait, akan ditampilkan. Contoh:
createTime: '2020-06-05T23:45:34.154213774Z' name: projects/myProject/locations/us-central1/workflows/myWorkflow serviceAccount: projects/my-project/serviceAccounts/012345678901-compute@developer.gserviceaccount.com sourceContents: [...]