Memecahkan masalah izin IAM di BigQuery
Dokumen ini menunjukkan cara memecahkan masalah terkait izin Identity and Access Management (IAM) di BigQuery. Masalah izin IAM biasanya menghasilkan error Access Denied
seperti berikut:
Access Denied: Project PROJECT_ID: User does not have bigquery.jobs.create permission in project PROJECT_ID.
Access Denied: Project PROJECT_ID: User does not have bigquery.datasets.get permission on dataset DATASET.
User does not have permission to query table PROJECT_ID:DATASET.TABLE.
Access Denied: Table PROJECT_ID:DATASET.TABLE: User does not have permission to query table PROJECT_ID:DATASET.TABLE, or perhaps it does not exist.
Access Denied: User PRINCIPAL does not have permission to perform bigquery.tables.getData on resource 'projects/PROJECT_ID/datasets/DATASET/tables/TABLE'.
Sebelum memulai
- Untuk memecahkan masalah akses akun utama ke resource BigQuery, pastikan Anda memiliki izin IAM yang diperlukan.
Kumpulkan informasi tentang masalah tersebut
Langkah pertama dalam memecahkan masalah akses resource adalah menentukan izin yang tidak ada, akun utama IAM yang ditolak aksesnya, dan resource yang coba diakses oleh akun utama.
Mendapatkan informasi dari error atau histori tugas
Untuk mendapatkan informasi tentang prinsipal, resource, dan izin, periksa output dari alat command line bq, respons API, atau BigQuery di konsol Google Cloud .
Misalnya, jika Anda mencoba menjalankan kueri dengan izin yang tidak memadai, Anda akan melihat error seperti berikut di tab Informasi tugas di bagian Hasil kueri pada konsol Google Cloud .
Periksa error untuk menentukan akun utama, resource, dan izin.
Dalam beberapa kasus, Anda dapat meminta izin yang tidak ada langsung dari pesan error. Untuk mengetahui informasi selengkapnya, lihat Memecahkan masalah pesan error izin dalam dokumentasi IAM.
Mendapatkan informasi dari Cloud Audit Logs
Jika pesan error bersifat umum, informasi tidak lengkap, atau jika tindakan gagal dalam proses latar belakang, gunakan Logs Explorer Cloud Audit Logs untuk mendapatkan informasi tentang error tersebut.
Di konsol Google Cloud , buka halaman Logs Explorer.
Atau, dari menu navigasi, pilih Monitoring > Logs Explorer.
Di Logs Explorer, untuk cakupan log, pilih Project logs.
Di jendela kueri, masukkan kueri berikut untuk mendapatkan error terkait izin dari log akses data BigQuery:
resource.type="bigquery_resource" AND logName="projects/PROJECT_ID/logs/cloudaudit.googleapis.com%2Fdata_access" AND protoPayload.status.message:"Access Denied" OR protoPayload.status.message:"Permission denied" OR protoPayload.status.code=7
Ganti PROJECT_ID dengan project ID Anda.
Di hasil kueri, luaskan entri log yang sesuai dengan operasi yang gagal.
Di bagian
protoPayload
, luaskan arrayauthorizationInfo
, lalu luaskan setiap node dalam arrayauthorizationInfo
.Array
authorizationInfo
menampilkan setiap pemeriksaan izin yang dilakukan selama panggilan API.Untuk melihat penyebab error, cari entri
granted: false
. Entrigranted: false
menampilkan informasi berikut:permission
: String izin IAM yang diperiksa. Contoh,bigquery.tables.getData
.resource
: Nama lengkap resource yang coba diakses oleh principal. Contoh,projects/myproject/datasets/mydataset/tables/mytable
.principalEmail
(jika tersedia): Dirujuk diprotoPayload.authenticationInfo
, ini adalah akun utama yang mencoba tindakan.
Menggunakan Penganalisis Kebijakan untuk kebijakan izin
Penganalisis Kebijakan untuk kebijakan izin memungkinkan Anda mengetahui akun utama IAM mana yang memiliki akses apa ke resource BigQuery mana berdasarkan kebijakan izin IAM Anda.
Setelah mengumpulkan informasi tentang error izin, Anda dapat menggunakan Penganalisis Kebijakan untuk memahami alasan akun utama tidak memiliki akses yang diperlukan. Alat ini menganalisis semua kebijakan yang relevan, keanggotaan di Google Grup, dan pewarisan dari resource induk seperti project, folder, dan organisasi Anda.
Untuk menggunakan Penganalisis Kebijakan untuk kebijakan izin, Anda membuat kueri analisis, menentukan cakupan untuk analisis, lalu menjalankan kueri.
Di konsol Google Cloud , buka halaman Policy Analyzer.
Atau, dari menu navigasi, pilih IAM & Admin > Policy Analyzer.
Klik Create Custom Query.
Di halaman Konfigurasi kueri Anda, masukkan informasi yang Anda kumpulkan sebelumnya:
Di bagian Select the scope, di kolom Select query scope, pastikan project Anda saat ini muncul atau klik Browse untuk memilih resource lain.
Di bagian Setel parameter kueri, untuk Parameter 1, pilih Principal, dan di kolom Principal, masukkan email pengguna, grup, atau akun layanan.
Klik
Tambahkan parameter.Untuk Parameter 2, pilih Permission, lalu di kolom Permission, klik Select, pilih izin BigQuery, lalu klik Add. Misalnya, pilih
bigquery.tables.getData
.Klik
Tambahkan parameter.Untuk Parameter 3, pilih Resource, dan di kolom Resource, masukkan nama resource yang sepenuhnya memenuhi syarat. Nama resource harus menyertakan awalan layanan seperti dalam contoh berikut:
- Project BigQuery:
//cloudresourcemanager.googleapis.com/projects/PROJECT_ID
- Dataset BigQuery:
//bigquery.googleapis.com/projects/PROJECT_ID/datasets/DATASET
- Tabel BigQuery:
//bigquery.googleapis.com/projects/PROJECT/datasets/DATASET/tables/TABLE
- Project BigQuery:
Di panel Kueri kustom, klik Analisis > Jalankan kueri.
Periksa hasil kueri. Hasilnya dapat berupa salah satu dari berikut:
- Daftar kosong. Tidak ada hasil yang mengonfirmasi bahwa akun utama tidak memiliki izin yang diperlukan. Anda harus memberi akun utama peran yang memberikan izin yang benar.
- Satu atau beberapa hasil. Jika penganalisis menemukan kebijakan izin, berarti ada beberapa bentuk akses. Klik View Binding di setiap hasil untuk melihat peran yang memberikan akses ke resource yang merupakan anggota principal. Binding kebijakan menunjukkan apakah akses diberikan melalui keanggotaan grup atau pewarisan, atau apakah akses ditolak oleh kondisi IAM atau kebijakan penolakan IAM.
Temukan peran IAM yang benar yang memberikan izin yang diperlukan
Setelah Anda mengonfirmasi bahwa akun utama tidak memiliki akses yang memadai, langkah selanjutnya adalah menemukan peran IAM bawaan atau kustom yang sesuai yang memberikan izin yang diperlukan. Peran yang Anda pilih harus mematuhi prinsip hak istimewa terendah.
Jika organisasi Anda menggunakan peran khusus, Anda dapat menemukan peran yang tepat dengan mencantumkan semua peran khusus yang dibuat dalam project atau organisasi Anda. Misalnya, di konsol Google Cloud , pada halaman Peran, Anda dapat memfilter daftar menurut Jenis:Kustom untuk melihat hanya peran kustom.
Untuk menemukan peran IAM bawaan yang tepat, ikuti langkah-langkah berikut.
Buka bagian izin BigQuery di halaman peran dan izin IAM BigQuery.
Di kotak penelusuran Masukkan izin, masukkan izin yang Anda ambil dari pesan error, histori tugas, atau log audit. Contoh,
bigquery.tables.getData
.Hasil penelusuran menampilkan semua peran BigQuery bawaan yang memberikan izin.
Terapkan prinsip hak istimewa terendah: dalam daftar peran, pilih peran yang paling tidak permisif yang memberikan izin yang diperlukan. Misalnya, jika Anda menelusuri
bigquery.tables.getData
untuk memberikan kemampuan kueri data tabel, BigQuery Data Viewer adalah peran dengan izin paling rendah yang memberikan izin tersebut.Berikan peran yang sesuai kepada akun utama. Untuk mengetahui informasi tentang cara memberikan peran IAM ke resource BigQuery, lihat Mengontrol akses ke resource dengan IAM.
Langkah berikutnya
- Untuk mengetahui daftar semua peran dan izin IAM BigQuery, lihat Peran dan izin IAM BigQuery.
- Untuk mengetahui informasi selengkapnya tentang cara memecahkan masalah kebijakan izin dan penolakan di IAM, lihat Memecahkan masalah kebijakan.
- Untuk mengetahui informasi selengkapnya tentang Penganalisis Kebijakan Policy Intelligence, lihat Penganalisis Kebijakan untuk kebijakan izin.
- Untuk mengetahui informasi selengkapnya tentang Pemecah Masalah Kebijakan, lihat Menggunakan Pemecah Masalah Kebijakan.