Mempersiapkan perubahan otorisasi mendatang

Application Integration memperbarui cara integrasi diotorisasi. Perubahan ini akan segera berlaku. Sebagian besar integrasi akan terus berjalan tanpa perubahan apa pun, sedangkan beberapa integrasi memerlukan perubahan konfigurasi agar dapat terus berjalan. Semua yang dijelaskan di halaman ini menggunakan konfigurasi yang sudah Anda kontrol, sehingga Anda dapat melakukan perubahan ini sekarang.

Perubahan otorisasi mendatang

Application Integration memperbarui cara menangani identitas untuk menjalankan integrasi. Setiap proses kini harus memiliki identitas eksplisit, yang bertindak sebagai salah satu hal berikut:

  • Pengguna yang memicu proses. Sistem yang dipanggil menerapkan izin akses pengguna tersebut.
  • Akun layanan yang digunakan untuk menjalankan proses. Anda mengontrol, menetapkan cakupan, dan mengaudit akun ini seperti akun layanan lainnya di project Google Cloud Anda.

Karena pembaruan ini:

  • Untuk menjalankan integrasi, Anda memerlukan izin untuk bertindak sebagai akun layanan yang digunakan untuk menjalankan proses.
  • Jika tidak ada identitas yang tersedia, proses integrasi akan gagal.

Sebelum memulai

Selesaikan tugas berikut secara berurutan. Lakukan tugas pertama terlebih dahulu, karena dua tugas lainnya berakhir dengan publikasi, dan publikasi itu sendiri diperiksa izinnya.

  1. Berikan peran Pengguna Akun Layanan di setiap akun layanan yang digunakan untuk menjalankan proses yang sudah Anda gunakan, kepada semua orang yang menjalankan, menyetujui, mengedit, atau memublikasikan integrasi — termasuk akun layanan yang digunakan oleh otomatisasi Anda.
  2. Tetapkan akun layanan yang digunakan untuk menjalankan proses pada integrasi yang berjalan tanpa orang dan tidak memilikinya.
  3. Berikan peran Pengguna Akun Layanan pada akun layanan yang diberi nama di setiap profil autentikasi berjenis Akun layanan atau Token OIDC. Akun ini biasanya berbeda dengan akun layanan yang digunakan untuk menjalankan proses.

Integrasi yang memerlukan akun layanan yang digunakan untuk menjalankan proses

Menentukan apakah integrasi memerlukannya

Anda hanya memerlukan akun layanan yang digunakan untuk menjalankan proses jika tidak ada kredensial siapa pun yang tersedia untuk seluruh proses. Hal ini terjadi dalam dua situasi, dan hanya dua:

Cara integrasi berjalan Apakah kredensial seseorang tersedia? Memerlukan akun layanan yang digunakan untuk menjalankan proses?
Secara sinkron — seseorang memulainya dan menunggu hasilnya Ya, untuk seluruh proses Tidak
Secara asinkron — proses diantrekan dan selesai nanti Hanya saat dipicu Ya
Tanpa pengawasan — jadwal atau peristiwa memulainya Tidak, tidak pernah ada orang Ya

Mengidentifikasi integrasi yang terpengaruh

Pertama, apakah integrasi pernah berjalan tanpa orang? Ya, jika salah satu hal berikut benar:

Kedua, apakah akun layanan yang digunakan untuk menjalankan proses kosong? Untuk mencantumkan setiap versi yang dipublikasikan di suatu region beserta akun layanan yang digunakan untuk menjalankan proses, jalankan perintah berikut:

curl -s -G -H "Authorization: Bearer $(gcloud auth print-access-token)" \
  --data-urlencode "filter=state=ACTIVE" \
  --data-urlencode "pageSize=1000" \
  "https://REGION-integrations.googleapis.com/v1/projects/PROJECT_ID/locations/REGION/integrations/-/versions" \
| jq -r '.integrationVersions[]
         | [ .name, (.runAsServiceAccount // "NONE") ]
         | @tsv'

Ganti kode berikut:

  • REGION: region integrasi Anda. Untuk mengetahui daftar region yang didukung, lihat Lokasi.
  • PROJECT_ID: ID project Google Cloud Anda
  • Baris yang menampilkan NONE hanya memerlukan tindakan jika bagian pertama juga berlaku untuknya juga.
  • Untuk memeriksa satu integrasi saja, buka di Google Cloud konsol dan lihat panel Ringkasan integrasi di toolbar integrasi.

Memperbarui integrasi

Memberikan peran Pengguna Akun Layanan

Untuk memberikan peran kepada seseorang, jalankan perintah berikut:

gcloud iam service-accounts add-iam-policy-binding SERVICE_ACCOUNT \
    --project=SERVICE_ACCOUNT_PROJECT_ID \
    --member='user:PRINCIPAL' \
    --role='roles/iam.serviceAccountUser'

Ganti kode berikut:

  • SERVICE_ACCOUNT: alamat email akun layanan yang digunakan untuk menjalankan proses atau akun yang diberi nama dalam profil autentikasi
  • SERVICE_ACCOUNT_PROJECT_ID: ID project yang memiliki akun layanan
  • PRINCIPAL: alamat email pengguna

Untuk jenis akun utama lainnya, gunakan awalan --member yang sesuai:

  • Grup: Gunakan group:. Sebaiknya gunakan grup Google, bukan akun pengguna perorangan, untuk menyederhanakan pengelolaan akses saat anggota tim berubah.
  • Akun layanan: Gunakan serviceAccount: untuk proses otomatis dan aplikasi.

Untuk melakukan hal yang sama di Google Cloud konsol:

  1. Buka IAM & Admin > Akun Layanan.
  2. Pilih akun layanan.
  3. Klik Izin > Berikan akses.

Untuk mengetahui informasi selengkapnya, lihat Mengelola akses ke akun layanan.

Menetapkan akun layanan yang digunakan untuk menjalankan proses

  1. Pilih atau buat akun layanan, lalu berikan peran yang diperlukan tugas integrasi pada resource yang disentuh. Untuk mengetahui apa yang harus diberikan, lihat peran agen layanan Application Integration project Anda, service-PROJECT_NUMBER@gcp-sa-integrations., yang dimiliki saat ini, dan berikan akun baru hanya bagian yang digunakan oleh integrasi ini.
  2. Berikan peran Pengguna Akun Layanan kepada semua orang yang menjalankan, menyetujui, mengedit, atau memublikasikan integrasi, termasuk otomatisasi apa pun.
  3. Buka integrasi dan tetapkan akun layanan di panel Ringkasan integrasi di toolbar integrasi.
  4. Publikasikan integrasi. Untuk mengetahui informasi selengkapnya, lihat Menguji dan memublikasikan integrasi.

Google Cloud merekomendasikan penggunaan akun layanan khusus dengan cakupan minimal untuk setiap integrasi, bukan satu akun dengan hak istimewa luas yang dibagikan di seluruh integrasi, karena akun layanan khusus melakukan hal berikut:

  • Berisi efek dari satu integrasi.
  • Ditampilkan berdasarkan nama di log audit Anda.

Untuk mengetahui informasi selengkapnya, lihat Praktik terbaik untuk menggunakan akun layanan.

Memecahkan masalah izin yang tidak ada

Tindakan yang ditolak memiliki salah satu dari dua penyebab, dan keduanya perlu dibedakan:

  • Akun layanan yang digunakan untuk menjalankan proses — Anda tidak dapat bertindak sebagai akun layanan tersebut, atau akun layanan tersebut tidak dapat menjangkau apa yang diperlukan tugas.
  • Peran IAM Anda sendiri — Anda tidak diizinkan untuk melakukan tindakan tersebut sama sekali.

Kedua pemeriksaan berlaku, sehingga memperbaiki satu pemeriksaan tidak memperbaiki pemeriksaan lainnya.

Error akun layanan yang digunakan untuk menjalankan proses

Situasi Yang akan Anda lihat Yang harus dilakukan
Seseorang memicu integrasi, tetapi tidak dapat bertindak sebagai akun layanan yang digunakan untuk menjalankan proses Pemicu ditolak dengan PERMISSION_DENIED. Pemeriksaan berjalan sebelum proses diantrekan, sehingga tidak ada yang muncul di log eksekusi Anda — sepertinya tidak terjadi apa pun, bukan seperti tugas yang gagal Berikan peran Pengguna Akun Layanan kepada siapa pun yang memicunya
Proses tanpa kredensial pengguna tidak memiliki akun layanan yang digunakan untuk menjalankan proses Tugas Connectors, Call REST Endpoint, dan Cloud Run Functions gagal terhadap apa pun yang coba dijangkau. Saat memublikasikan: The integration is missing run-as service account since governance is enabled for your project. Tetapkan akun layanan yang digunakan untuk menjalankan proses
Tugas menggunakan profil autentikasi yang akun layanannya tidak dapat digunakan oleh pemanggil Tugas tersebut ditolak saat proses lainnya berlanjut: You do not have permission to use Auth Config ID because you cannot act as its service account: SERVICE_ACCOUNT. Berikan peran Pengguna Akun Layanan pada akun yang diberi nama dalam profil
Penyetuju tidak dapat bertindak sebagai akun layanan yang digunakan untuk menjalankan proses Proses persetujuan gagal tanpa menghasilkan error yang terlihat. Proses tetap dijeda hingga berakhir, sehingga yang Anda perhatikan adalah persetujuan tampaknya berhenti berfungsi Berikan peran Pengguna Akun Layanan kepada semua orang yang mungkin menyetujui
Seseorang mengedit atau memublikasikan integrasi tanpa izin Publisher does not have required permission to publish integration with service account: SERVICE_ACCOUNT. Apa pun yang sudah dipublikasikan akan terus berjalan. Jika otomatisasi memublikasikan untuk Anda, hal ini akan muncul di pipeline deployment bukan di konsol Berikan peran Pengguna Akun Layanan kepada editor, penerbit, dan otomatisasi
Tugas berjalan sebagai orang yang memicunya, dan orang tersebut tidak dapat menjangkau resource Proses dimulai secara normal, lalu satu tugas gagal memberi nama resource, meskipun tidak ada yang berubah tentang integrasi Berikan akses ke resource kepada orang tersebut, atau pindahkan integrasi ke akun layanan yang digunakan untuk menjalankan proses yang sudah memilikinya — biasanya jawaban yang lebih baik, karena menghentikan akses integrasi yang bervariasi dengan siapa pun yang menjalankannya

Untuk mengetahui daftar lengkap kode error Application Integration, lihat Kode error.

Error peran IAM

Selain akun layanan yang digunakan untuk menjalankan proses, Application Integration memverifikasi izin IAM pengguna Anda untuk setiap tindakan. Jika Anda mengalami error PERMISSION_DENIED saat berinteraksi dengan integrasi, atau jika log eksekusi gagal dimuat, pastikan Anda memiliki peran yang memberikan izin yang diperlukan:

Untuk melakukan hal ini Anda memerlukan salah satu peran ini
Melihat dan membuka integrasi roles/integrations.integrationViewer
Melihat log dan detail eksekusi roles/integrations.integrationViewer atau roles/integrations.integrationInvoker
Menjalankan integrasi roles/integrations.integrationInvoker atau roles/integrations.integrationEditor
Membuat dan mengedit integrasi roles/integrations.integrationEditor
Memublikasikan integrasi roles/integrations.integrationDeployer atau roles/integrations.integrationEditor
Menyetujui atau melanjutkan proses yang ditangguhkan roles/integrations.suspensionResolver atau roles/integrations.integrationAdmin
Akses penuh ke semua integrasi roles/integrations.integrationAdmin

Untuk memberikan peran, jalankan perintah berikut:

gcloud projects add-iam-policy-binding PROJECT_ID \
    --member='user:PRINCIPAL' \
    --role='ROLE'

Untuk informasi selengkapnya, lihat referensi berikut:

Pertanyaan umum

Saya memberikan peran, tetapi masih gagal. Apa yang saya lewatkan?

  • Pemberian peran ditujukan ke project yang salah. Pemberian peran harus dilakukan di project yang memiliki akun layanan, yang tidak harus merupakan project yang memiliki integrasi.
  • Pemberian peran belum berlaku. Tunggu beberapa menit. Keputusan otorisasi di-cache secara singkat, selain penundaan propagasi IAM normal.
  • Ada akun layanan kedua yang terlibat. Akun layanan yang digunakan untuk menjalankan proses dan akun layanan setiap profil autentikasi terpisah, dan keduanya memerlukan pemberian peran.
  • Blokirannya adalah peran Anda sendiri, bukan akun layanan. Pengguna Akun Layanan adalah tentang apakah Anda dapat bertindak sebagai akun layanan yang digunakan untuk menjalankan proses; peran IAM terpisah mengatur apakah Anda diizinkan untuk melakukan tindakan tersebut. Lihat Error peran IAM.

Mengapa peran Pemanggil Integrasi tidak lagi cukup?

Peran tersebut masih memungkinkan Anda menjalankan integrasi. Peran tersebut tidak pernah memungkinkan Anda bertindak sebagai akun layanan yang digunakan untuk menjalankan integrasi, dan itulah yang menentukan jumlah akses yang diperoleh proses. Tidak ada peran berikut yang memberikan iam.serviceAccounts.actAs, sehingga selalu merupakan pemberian peran terpisah:

  • roles/integrations.integrationAdmin
  • roles/integrations.integrationEditor
  • roles/integrations.integrationInvoker

Integrasi saya hanya berjalan secara sinkron. Apakah saya memerlukan akun layanan yang digunakan untuk menjalankan proses?

Tidak. Proses sinkron sudah memiliki identitas: orang yang memicunya. Lihat Menentukan apakah integrasi memerlukannya.

Tidak ada yang ditandai di konsol. Apakah saya aman?

Belum tentu. Peringatan bergantung sebagian pada proses yang diamati, sehingga integrasi dengan jadwal yang jarang, atau integrasi yang tidak dipicu oleh siapa pun baru-baru ini, mungkin memerlukan tindakan tanpa pernah menampilkan peringatan kepada Anda. Kerjakan Integrasi yang memerlukan akun layanan yang digunakan untuk menjalankan proses daripada membaca konsol yang tidak aktif sebagai tanda aman.

Langkah berikutnya