Memberikan izin alur kerja untuk mengakses resource Google Cloud

Workflows menggunakan akun layanan untuk memberi akses alur kerja ke resource Google Cloud. Akun layanan adalah akun khusus yang berfungsi sebagai identitas non-orang, seperti fungsi, aplikasi, atau VM. Mereka memberi Anda cara untuk mengautentikasi orang-orang yang bukan orang tersebut. Akun layanan dapat dianggap sebagai identitas dan resource.

  • Saat menganggap akun layanan sebagai identitas, Anda dapat memberikan peran ke akun layanan, yang memungkinkannya mengakses resource (seperti alur kerja).

  • Jika akun layanan dianggap 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 menyiapkan autentikasi dengan aplikasi produksi, lihat Mengautentikasi 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 tersebut akan menggunakan akun layanan Compute Engine default untuk identitasnya. Anda dapat memverifikasi akun layanan terkait alur kerja. Dalam dokumen ini, lihat Memverifikasi akun layanan terkait alur kerja.

Sebaiknya gunakan akun layanan default hanya untuk pengujian dan pengembangan.

Izin akun layanan

Karena akun layanan adalah identitas, Anda dapat mengizinkan akun layanan mengakses resource dalam project dengan memberikan 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 menyertakan izin logging.logEntries.create (misalnya, peran Logs Writer).

Perlu diperhatikan 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 informasi selengkapnya, lihat Memanggil Workflows.

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 menambahkan akun layanan, Anda memerlukan izin untuk membuat resource tersebut dan menambahkan akun layanan ke resource tersebut. Izin untuk melampirkan akun layanan ke resource disediakan oleh peran apa pun yang menyertakan izin iam.serviceAccounts.actAs.

Untuk mengetahui informasi selengkapnya, lihat Peran untuk autentikasi akun layanan.

Memanggil Cloud Functions (generasi ke-2)

Di Cloud Functions (generasi ke-2), izin pemanggilan tersedia dengan mengelola layanan Cloud Run yang mendasarinya. Jika alur kerja Anda memanggil layanan Cloud Function (generasi ke-2), Anda tidak perlu memberikan peran Cloud Functions Invoker (roles/cloudfunctions.invoker) ke akun layanan pemanggil. Sebagai gantinya, Anda harus memberikan peran Cloud Run Invoker (roles/run.invoker).

Untuk mengetahui informasi selengkapnya, lihat Perbandingan versi Cloud Functions.

Men-deploy alur kerja dengan akun layanan kustom

Anda dapat membuat akun layanan yang dikelola pengguna Anda sendiri agar mendapatkan fleksibilitas yang lebih baik dalam mengontrol akses ke alur kerja Anda.

  1. Buat akun layanan Anda dan catat namanya.

  2. Beri akun layanan peran yang sesuai, berdasarkan resource yang harus diakses oleh alur kerja untuk melakukan pekerjaannya.

  3. Pastikan semua akun utama yang men-deploy alur kerja memiliki kemampuan untuk menambahkan akun layanan ke resource. Jika 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 Service Account User (roles/iam.serviceAccountUser) pada project atau akun layanan Anda. Untuk mengetahui informasi selengkapnya tentang cara memberikan peran, lihat Mengelola akses.

    Peran yang telah ditetapkan ini berisi izin iam.serviceAccounts.actAs, yang diperlukan untuk menambahkan 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 di 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 Google Cloud Anda yang berisi resource alur kerja
    • PRINCIPAL: ID untuk deployment alur kerja dalam 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
    • 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.com

      Dengan keterangan:

      • SERVICE_ACCOUNT_PROJECT_ID adalah project ID Google Cloud yang berisi akun layanan.
      • SERVICE_ACCOUNT_NAME adalah nama akun layanan.
  4. 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 menambahkan akun layanan dalam satu project ke alur kerja di project lain. Selanjutnya, Anda dapat menggunakan akun layanan di berbagai project untuk men-deploy alur kerja.

Jika akun layanan dan resource alur kerja berada dalam project yang berbeda, dari project tempat akun layanan berada, selesaikan hal berikut:

  1. Di konsol Google Cloud, buka halaman Kebijakan organisasi:

    Buka Organization policies

    Periksa kebijakan organisasi untuk project dan pastikan batasan boolean iam.disableCrossProjectServiceAccountUsage tidak diterapkan untuk project tersebut. Untuk informasi lebih lanjut, lihat Mengaktifkan akun layanan untuk disertakan di seluruh project.

  2. Buat akun layanan Anda dan catat namanya.

  3. Beri akun layanan peran yang sesuai, berdasarkan resource yang harus diakses oleh alur kerja untuk melakukan pekerjaannya.

  4. Berikan peran Service Account Token Creator (roles/iam.serviceAccountTokenCreator) kepada agen layanan Workflows. Hal ini mengizinkan agen layanan untuk mengelola akses lintas project untuk akun layanan. Agen layanan adalah identitas layanan Google Cloud tertentu untuk project tertentu. Untuk mengetahui informasi selengkapnya, lihat Agen layanan.

    Konsol

    1. Di konsol Google Cloud, buka halaman Workflows:

      Buka Workflows

    2. Klik Create untuk membuat alur kerja atau pilih nama alur kerja yang ingin Anda perbarui.

    3. Dalam daftar Service account, klik Switch project.

    4. Pilih akun layanan dari project lain.

    5. Jika diminta, berikan peran roles/iam.serviceAccountTokenCreator ke agen layanan Workflows.

    gcloud

    1. Berikan peran roles/iam.serviceAccountTokenCreator ke 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.com

        Dengan keterangan:

        • SERVICE_ACCOUNT_PROJECT_ID adalah project ID Google Cloud yang berisi akun layanan.
        • SERVICE_ACCOUNT_NAME adalah nama akun layanan.
      • WORKFLOWS_PROJECT_NUMBER: nomor project Google Cloud yang berisi resource alur kerja.

  5. Pastikan semua akun utama yang men-deploy alur kerja memiliki kemampuan untuk menambahkan akun layanan ke resource. Jika 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 Service Account User (roles/iam.serviceAccountUser) pada project atau akun layanan Anda. Untuk mengetahui informasi selengkapnya tentang cara memberikan peran, lihat Mengelola akses.

    Peran yang telah ditetapkan ini berisi izin iam.serviceAccounts.actAs, yang diperlukan untuk menambahkan akun layanan ke resource.

    Anda mungkin juga bisa mendapatkan izin ini dengan peran khusus atau peran bawaan lainnya.

    Konsol

    1. Di konsol Google Cloud, buka halaman Workflows:

      Buka Workflows

    2. Klik Create untuk membuat alur kerja atau pilih nama alur kerja yang ingin Anda perbarui.

    3. Dalam daftar Service account, klik Switch project.

    4. Pilih akun layanan dari project lain.

    5. Jika diminta, berikan peran roles/iam.serviceAccountUser pada project.

    gcloud

    Berikan peran pada project:

    gcloud projects add-iam-policy-binding WORKFLOWS_PROJECT_ID \
        --member=PRINCIPAL \
        --role='roles/iam.serviceAccountUser'

    Atau, berikan peran di 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 Google Cloud yang berisi resource alur kerja
    • PRINCIPAL: ID untuk deployer alur kerja dalam format user|group|serviceAccount:email atau domain:domain. Sebagai contoh:
      • user:test-user@gmail.com
      • group:admins@example.com
      • serviceAccount:test123@example.domain.com
      • domain: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.com

      Dengan keterangan:

      • SERVICE_ACCOUNT_PROJECT_ID adalah project ID Google Cloud yang berisi akun layanan.
      • SERVICE_ACCOUNT_NAME adalah nama akun layanan.
  6. 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

  1. Di konsol Google Cloud, buka halaman Workflows:

    Buka Workflows

  2. Di halaman Workflows, klik nama alur kerja.

  3. Di halaman Workflow Details, klik tab Details.

    Akun layanan terkait alur kerja akan ditampilkan.

gcloud

  1. Buka terminal.

  2. Masukkan perintah berikut:

    gcloud workflows describe MY_WORKFLOW
    

    Ganti MY_WORKFLOW dengan nama alur kerja Anda.

    Deskripsi alur kerja lengkap yang mencakup 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: [...]

Langkah selanjutnya