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.
- 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.
- Tetapkan akun layanan yang digunakan untuk menjalankan proses pada integrasi yang berjalan tanpa orang dan tidak memilikinya.
- 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:
- Integrasi memiliki pemicu peristiwa Cloud Scheduler, Cloud Pub/Sub, Salesforce, atau Integration Connectors event trigger.
- Sesuatu menjadwalkannya melalui API dengan
scheduleIntegrations. - Integrasi lain memanggilnya sebagai sub-integrasi asinkron, menggunakan tugas Panggil Integrasi.
- Integrasi menggunakan tugas Tangguhkan atau Persetujuan, yang memungkinkan proses menunggu dan kemudian berakhir dengan sendirinya.
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
NONEhanya 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 autentikasiSERVICE_ACCOUNT_PROJECT_ID: ID project yang memiliki akun layananPRINCIPAL: 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:
- Buka IAM & Admin > Akun Layanan.
- Pilih akun layanan.
- Klik Izin > Berikan akses.
Untuk mengetahui informasi selengkapnya, lihat Mengelola akses ke akun layanan.
Menetapkan akun layanan yang digunakan untuk menjalankan proses
- 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. - Berikan peran Pengguna Akun Layanan kepada semua orang yang menjalankan, menyetujui, mengedit, atau memublikasikan integrasi, termasuk otomatisasi apa pun.
- Buka integrasi dan tetapkan akun layanan di panel Ringkasan integrasi di toolbar integrasi.
- 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:
- Peran IAM yang telah ditetapkan, untuk mengetahui daftar lengkap peran dan izin yang dimiliki setiap peran tersebut.
- Kontrol akses, untuk mengetahui cara Application Integration menggunakan IAM.
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.integrationAdminroles/integrations.integrationEditorroles/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
- Baca panduan keamanan Application Integration.
- Tinjau peran IAM yang telah ditetapkan untuk Application Integration.
- Pelajari cara mengonfigurasi profil autentikasi.
- Baca praktik terbaik untuk menggunakan akun layanan.