Mode act-as ketat mengaktifkan pemeriksaan keamanan tambahan untuk tindakan pengguna berikut di Dataform:
- Membuat atau memperbarui repositori.
- Membuat atau memperbarui konfigurasi alur kerja.
- Membuat pemanggilan alur kerja.
- Memperbarui konfigurasi rilis.
Pemeriksaan keamanan tambahan ini mengharuskan pengguna yang melakukan tindakan ini memiliki izin iam.serviceAccounts.actAs pada akun layanan efektif, yaitu akun layanan yang kredensialnya digunakan untuk menjalankan alur kerja.
Untuk mengetahui informasi selengkapnya, lihat
Melampirkan akun layanan ke resource.
Mode act-as ketat diterapkan untuk semua repositori.
Peran yang diperlukan
Untuk mendapatkan izin yang Anda perlukan untuk menyelesaikan tugas dalam dokumen ini, minta administrator Anda untuk memberikan peran IAM berikut:
- Pengguna Akun Layanan (
roles/iam.serviceAccountUser) di akun layanan kustom -
Melihat log di Cloud Logging:
Logs Viewer (
roles/logging.viewer) di project -
Memberikan peran IAM kepada pengguna atau akun layanan:
Admin Akun Layanan (
roles/iam.serviceAccountAdmin) di project
Untuk mengetahui informasi selengkapnya tentang pemberian peran, lihat Mengelola akses ke project, folder, dan organisasi.
Anda mungkin juga bisa mendapatkan izin yang diperlukan melalui peran khusus atau peran bawaan lainnya.
Memverifikasi izin act-as untuk akun layanan efektif
Untuk memastikan alur kerja Dataform Anda berjalan dengan aman dan tanpa gangguan, penting untuk memverifikasi izin act-as pada akun layanan yang digunakan. Bagian ini menjelaskan cara mengidentifikasi akun layanan efektif untuk resource Anda, menggunakan Logging untuk memeriksa masalah izin, lalu mengatasi masalah yang Anda temukan.
Menentukan akun layanan efektif
Anda dapat menentukan akun layanan efektif yang menjalankan alur kerja menurut jenis resource dan kondisi berikut:
| Jenis resource | Akun layanan efektif |
|---|---|
| Repositori | Akun layanan kustom yang dikonfigurasi untuk repositori. Akun layanan kustom diperlukan untuk semua repositori. Akun layanan ini tercantum di kolom |
| Konfigurasi alur kerja | Untuk konfigurasi alur kerja baru, akun layanan kustom yang Anda pilih saat Anda membuat konfigurasi alur kerja akan digunakan. Jika tidak ada akun layanan yang dipilih, akun layanan repositori akan digunakan. |
| Pemanggilan alur kerja | Jika hasil kompilasi adalah resource Jika Anda membuat pemanggilan alur kerja dari hasil kompilasi, akun layanan yang tercantum di kolom Jika tidak, akun layanan yang dikonfigurasi di tingkat repositori akan digunakan secara default. |
Memeriksa masalah izin di Cloud Logging
Untuk meningkatkan keamanan, Dataform memeriksa apakah izin iam.serviceAccounts.actAs tidak ada di akun layanan yang digunakan oleh resource Dataform.
Hasil pemeriksaan ini, termasuk potensi masalah izin, dicatat di Cloud Logging. Anda harus meninjau log ini secara rutin untuk mengidentifikasi dan memberikan izin iam.serviceAccounts.actAs yang tidak ada. Memeriksa log ini memastikan alur kerja dan konfigurasi Dataform Anda terus berfungsi tanpa gangguan.
Melihat log di Cloud Logging
Di Google Cloud konsol, buka halaman Logs Explorer.
Pilih Google Cloud project tempat Anda ingin memeriksa log.
Gunakan editor kueri untuk memfilter log
actAsDataform dengan opsi berikut:Untuk hanya mencantumkan pemeriksaan
actAsyang gagal dan memerlukan tindakan, gunakan kueri berikut:logName: "projects/PROJECT_ID/logs/dataform.googleapis.com%2Factas_dry_run_result" jsonPayload.dryRunResult = falseUntuk mencantumkan semua pemeriksaan
actAs, gunakan kueri berikut:logName: "projects/PROJECT_ID/logs/dataform.googleapis.com%2Factas_dry_run_result"
Ganti
PROJECT_IDdengan Google Cloud project ID Anda.Klik Run query.
Menginterpretasikan entri log
Luaskan entri log dalam hasil kueri untuk melihat kolom jsonPayload berikut:
| Kolom | Jenis | Deskripsi |
|---|---|---|
dryRunResult |
Boolean | true: pemeriksaan izin berhasil.false: pemeriksaan gagal. Akun utama pemanggil tidak memiliki izin iam.serviceAccounts.actAs di akun layanan. |
caller |
String | Alamat email akun utama (pengguna atau akun layanan) yang memulai panggilan API. |
serviceAccount |
String | Akun layanan yang dicoba ditiru oleh akun utama pemanggil. Kolom ini biasanya ada saat kolom dryRunResult adalah false. |
apiMethod |
String | Metode Dataform API yang memicu pemeriksaan, misalnya, CreateWorkflowInvocation atau UpdateRepository. |
*_context |
Objek | Objek yang berisi nama resource yang relevan dengan metode API yang dipanggil. Untuk mengetahui informasi selengkapnya, lihat Objek konteks. |
Objek konteks
Entri log menyertakan objek konteks dalam kolom jsonPayload. Kolom dalam objek ini berisi nama resource yang sepenuhnya memenuhi syarat dari entity Dataform yang terlibat. Google Cloud Nama-nama ini mengikuti struktur standar yang ditampilkan dalam daftar berikut, sehingga Anda dapat mengidentifikasi resource secara akurat.
create_workflow_invocation_context: ada saat metode API adalahCreateWorkflowInvocation.workflowInvocation: nama resource pemanggilan alur kerja.- Format nama resource adalah sebagai berikut:
projects/PROJECT_ID/locations/LOCATION_ID/repositories/REPOSITORY_ID/workflowInvocations/WORKFLOW_INVOCATION_ID.
- Format nama resource adalah sebagai berikut:
compilationResultatauworkflowConfig: nama resource sumber yang digunakan untuk pemanggilan.- Format nama resource untuk
compilationResultadalah sebagai berikut:projects/PROJECT_ID/locations/LOCATION_ID/repositories/REPOSITORY_ID/compilationResults/COMPILATION_RESULT_ID. - Format nama resource untuk
workflowConfigadalah sebagai berikut:projects/PROJECT_ID/locations/LOCATION_ID/repositories/REPOSITORY_ID/workflowConfigs/WORKFLOW_CONFIG_ID.
- Format nama resource untuk
create_repository_contextatauupdate_repository_context: ada saat metode API adalahCreateRepositoryatauUpdateRepository.repository: nama resource repositori Dataform.- Format nama resource adalah sebagai berikut:
projects/PROJECT_ID/locations/LOCATION_ID/repositories/REPOSITORY_ID
- Format nama resource adalah sebagai berikut:
update_release_config_context: ada saat metode API adalahUpdateReleaseConfig.releaseConfig: nama resource konfigurasi rilis.- Format nama resource adalah sebagai berikut:
projects/PROJECT_ID/locations/LOCATION_ID/repositories/REPOSITORY_ID/releaseConfigs/RELEASE_CONFIG_ID.
- Format nama resource adalah sebagai berikut:
create_workflow_config_contextatauupdate_workflow_config_context: ada saat metode API adalahCreateWorkflowConfigatauUpdateWorkflowConfig.workflowConfig: nama resource konfigurasi alur kerja.- Format nama resource adalah sebagai berikut:
projects/PROJECT_ID/locations/LOCATION_ID/repositories/REPOSITORY_ID/workflowConfigs/WORKFLOW_CONFIG_ID.
- Format nama resource adalah sebagai berikut:
Untuk membandingkan format yang didokumentasikan dengan entri logging, ganti hal berikut:
PROJECT_ID: ID unik project Anda Google Cloud .LOCATION_ID: region tempat repositori Dataform Anda berada.REPOSITORY_ID: ID yang ditentukan pengguna untuk repositori Dataform. Ini adalah nama yang diberikan ke repositori saat dibuat.COMPILATION_RESULT_ID: ID unik yang dibuat sistem untuk hasil kompilasi Dataform.RELEASE_CONFIG_ID: ID yang ditentukan pengguna untuk konfigurasi rilis Dataform.WORKFLOW_CONFIG_ID: ID yang ditentukan pengguna untuk konfigurasi alur kerja Dataform.
Mengatasi masalah izin
Untuk mengatasi masalah izin yang diidentifikasi di Logging, tentukan penyebab utama kegagalan, lalu ikuti langkah-langkah penyelesaian yang sesuai.
Memberikan izin act-as yang tidak ada
Jika Anda menemukan entri log dengan kolom dryRunResult adalah false, lakukan hal berikut:
Di detail
jsonPayload, perhatikan alamat email di kolomcalleruntuk mengidentifikasi akun utama.Perhatikan alamat email di kolom
serviceAccountuntuk mengidentifikasi akun layanan.Konfirmasi bahwa akun utama pemanggil seharusnya memiliki izin untuk bertindak sebagai akun layanan. Dengan memberikan izin ini, pemanggil dapat menggunakan izin yang dimiliki oleh akun layanan.
Jika akses dimaksudkan, berikan peran Pengguna Akun Layanan (
roles/iam.serviceAccountUser) kepada akun utama pemanggil di akun layanan target. Untuk mengetahui informasi selengkapnya, lihat Memberikan peran IAM yang diperlukan.
Setelah memberikan peran, log mendatang untuk kombinasi pemanggil dan akun layanan ini akan menampilkan dryRunResult: true.
Menangani lampiran akun layanan lintas-project
Jika repositori dan akun layanan efektif berada di project yang berbeda, permintaan untuk bertindak sebagai akun layanan mungkin diblokir oleh batasan kebijakan organisasi iam.disableCrossProjectServiceAccountUsage.
Untuk mengatasi masalah ini, lihat Mengaktifkan akun layanan untuk dilampirkan di seluruh project.
Memberikan peran IAM yang diperlukan
Peran Pengguna Akun Layanan
(roles/iam.serviceAccountUser) berisi iam.serviceAccounts.actAs
izin, yang diperlukan untuk mode act-as ketat. Saat menggunakan
Dataform API, Anda harus memiliki peran Pengguna Akun Layanan yang diberikan
untuk akun layanan efektif berdasarkan metode
projects.locations.repositories
yang Anda panggil:
createataupatch- Jika properti
Repository.ServiceAccountditetapkan, Anda harus memiliki peran Pengguna Akun Layanan yang diberikan untuk properti tersebut. - Jika Anda memanggil metode
patch, Anda harus memiliki peran Pengguna Akun Layanan yang diberikan untuk semua akun layanan efektif di semua konfigurasi alur kerja di repositori.
- Jika properti
workflowConfigs.createatauworkflowConfigs.patch- Anda harus memiliki peran Pengguna Akun Layanan yang diberikan untuk akun layanan efektif yang digunakan dalam konfigurasi alur kerja.
releaseConfigs.patch- Anda harus memiliki peran Pengguna Akun Layanan yang diberikan untuk semua akun layanan efektif yang digunakan dalam konfigurasi alur kerja menggunakan konfigurasi rilis ini.
workflowInvocations.create- Anda harus memiliki peran Pengguna Akun Layanan yang diberikan untuk akun layanan efektif yang digunakan dalam pemanggilan alur kerja.
Untuk memberikan peran Pengguna Akun Layanan ke akun layanan kustom, ikuti langkah-langkah berikut:
Di Google Cloud konsol, buka IAM > Service accounts.
Pilih project.
Di halaman Service accounts for project "PROJECT_NAME", pilih akun layanan kustom Anda.
Buka Principals with access, lalu klik Grant Access.
Di kolom New principals, masukkan ID agen layanan Dataform default Anda.
ID agen layanan Dataform default Anda memiliki format berikut:
service-PROJECT_NUMBER@gcp-sa-dataform.iam.gserviceaccount.comGanti
PROJECT_NUMBERdengan nomor project Anda Google Cloud .Di daftar Select a role, pilih peran Service Account User.
Klik Add another role , lalu pilih peran Service Account Token Creator.
Klik Save.
Untuk mengetahui informasi selengkapnya, lihat peran yang diperlukan untuk membuat konfigurasi alur kerja dan peran yang diperlukan untuk membuat konfigurasi rilis
Efek mode act-as ketat pada rilis dan eksekusi otomatis
Mode act-as ketat memiliki dampak berikut pada rilis repositori otomatis dan eksekusi alur kerja otomatis.
Untuk repositori yang tidak terhubung ke repositori pihak ketiga:
- Anda tidak dapat menetapkan jadwal
Cron
untuk rilis otomatis dalam konfigurasi rilis. Hal ini diterapkan untuk mencegah perubahan kode yang dibuat oleh pengguna yang mungkin tidak memiliki izin
iam.serviceAccounts.actAsyang diperlukan pada akun layanan hilir agar tidak di-deploy secara otomatis. - Eksekusi alur kerja terjadwal menggunakan jadwal Cron dalam konfigurasi alur kerja tetap diaktifkan. Agar eksekusi otomatis ini berhasil, Anda harus memberikan izin
iam.serviceAccounts.actAskepada agen layanan Dataform default di akun layanan efektif yang ditentukan dalam konfigurasi alur kerja.
Untuk repositori yang terhubung ke repositori pihak ketiga:
- Rilis terjadwal dan eksekusi alur kerja terjadwal diizinkan.
- Untuk mengaktifkan rilis otomatis dari konfigurasi rilis atau eksekusi otomatis dari konfigurasi alur kerja, Anda harus memberikan izin
iam.serviceAccounts.actAskepada agen layanan Dataform default di akun layanan efektif yang relevan:- Untuk konfigurasi rilis otomatis, berikan izin pada akun layanan efektif dari semua konfigurasi alur kerja yang dipicu oleh konfigurasi rilis ini.
- Untuk konfigurasi alur kerja otomatis, berikan izin pada akun layanan efektif yang digunakan oleh konfigurasi alur kerja tersebut.
Langkah berikutnya
- Untuk mempelajari cara membuat repositori, lihat Membuat repositori.
- Untuk mempelajari lebih lanjut cara Dataform bekerja dengan BigQuery, lihat Ringkasan alur kerja.
- Untuk mempelajari cara membuat konfigurasi alur kerja, lihat Menjadwalkan eksekusi.
- Untuk mempelajari cara membuat konfigurasi rilis, lihat Mengonfigurasi kompilasi.