Memecahkan masalah kontrol akses

Dokumen ini menunjukkan cara memecahkan masalah keamanan dengan izin Identity and Access Management (IAM), kontrol akses tingkat kolom, dan kunci enkripsi yang dikelola pelanggan (CMEK) 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

Mengumpulkan informasi tentang masalah

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 .

Error akses ditolak di tab Informasi Tugas di bagian Hasil Kueri.

Periksa error untuk menentukan akun utama, resource, dan izin.

Dalam beberapa kasus, Anda mungkin dapat meminta izin yang tidak ada langsung dari pesan error. Untuk mengetahui informasi selengkapnya, lihat Pesan error izin dalam dokumentasi IAM.

Mendapatkan informasi dari Cloud Audit Logs

Jika pesan error bersifat umum, informasi tidak ada, atau jika tindakan gagal dalam proses latar belakang, gunakan Logs Explorer Cloud Audit Logs untuk mendapatkan informasi tentang error tersebut.

  1. Di konsol Google Cloud , buka halaman Logs Explorer.

    Buka Logs Explorer

    Atau, dari menu navigasi, pilih Monitoring > Logs Explorer.

  2. Di Logs Explorer, untuk cakupan log, pilih Project logs.

  3. 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.

  4. Di hasil kueri, luaskan entri log yang sesuai dengan operasi yang gagal.

  5. Di bagian protoPayload, luaskan array authorizationInfo, lalu luaskan setiap node dalam array authorizationInfo.

    Array authorizationInfo menampilkan setiap pemeriksaan izin yang dilakukan selama panggilan API.

  6. Untuk melihat penyebab error, cari entri granted: false. Entri granted: false menampilkan informasi berikut:

    • permission: String izin IAM yang diperiksa. Contoh, bigquery.tables.getData.
    • resource: Nama yang sepenuhnya memenuhi syarat dari resource yang coba diakses oleh prinsipal. Contoh, projects/myproject/datasets/mydataset/tables/mytable.
    • principalEmail (jika tersedia): Dirujuk di protoPayload.authenticationInfo, ini adalah akun utama yang mencoba tindakan.

    Bagian authorizationInfo dari protoPayload yang menampilkan izin, resource, dan principalEmail.

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.

  1. Di konsol Google Cloud , buka halaman Penganalisis Kebijakan.

    Buka Penganalisis Kebijakan

    Atau, dari menu navigasi, pilih IAM & Admin > Penganalisis Kebijakan.

  2. Klik Create Custom Query.

  3. Di halaman Configure your query, masukkan informasi yang Anda kumpulkan sebelumnya:

    1. Di bagian Select the scope, di kolom Select query scope, pastikan project Anda saat ini muncul atau klik Browse untuk memilih resource lain.

    2. Di bagian Set the query parameters, untuk Parameter 1, pilih Principal, lalu di kolom Principal, masukkan email pengguna, grup, atau akun layanan.

    3. Klik Tambahkan parameter.

    4. Untuk Parameter 2, pilih Permission, lalu di kolom Permission, klik Select, pilih izin BigQuery, lalu klik Add. Misalnya, pilih bigquery.tables.getData.

    5. Klik Tambahkan parameter.

    6. 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
  4. Di panel Custom query, klik Analyze > Run query.

  5. 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 izinkan, 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 benar 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 benar, ikuti langkah-langkah berikut.

  1. Buka bagian izin BigQuery di halaman peran dan izin IAM BigQuery.

  2. 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.

  3. 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 membuat kueri data tabel, BigQuery Data Viewer adalah peran dengan izin paling sedikit yang memberikan izin tersebut.

  4. 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.

Memecahkan masalah kontrol akses tingkat kolom

Bagian berikut menjelaskan cara memecahkan masalah terkait kontrol akses tingkat kolom dan tag kebijakan Data Catalog.

Saya tidak dapat melihat peran Data Catalog

Jika Anda tidak dapat melihat peran seperti Data Catalog Fine-Grained Reader, mungkin Anda belum mengaktifkan Data Catalog API di project Anda. Untuk mempelajari cara mengaktifkan Data Catalog API, lihat Sebelum memulai. Peran Data Catalog akan muncul beberapa menit setelah Anda mengaktifkan Data Catalog API.

Saya tidak dapat melihat halaman Taxonomies

Anda memerlukan izin tambahan untuk melihat halaman Taksonomi tag kebijakan di konsolGoogle Cloud . Misalnya, peran Policy Tag Admin Data Catalog memiliki akses ke halaman Taxonomies.

Saya menerapkan tag kebijakan, tetapi sepertinya tidak berfungsi

Jika Anda masih menerima hasil kueri untuk akun yang seharusnya tidak memiliki akses, akun tersebut mungkin menerima hasil yang di-cache. Khususnya, jika sebelumnya berhasil menjalankan kueri, lalu menerapkan tag kebijakan, Anda mungkin mendapatkan hasil dari cache hasil kueri. Secara default, hasil kueri disimpan ke cache selama 24 jam. Kueri akan langsung gagal jika Anda menonaktifkan cache hasil. Untuk mengetahui detail selengkapnya tentang caching, lihat Dampak kontrol akses tingkat kolom.

Secara umum, update IAM memerlukan waktu sekitar 30 detik untuk diterapkan. Perubahan pada hierarki tag kebijakan dapat memerlukan waktu hingga 30 menit untuk diterapkan.

Saya tidak memiliki izin untuk membaca dari tabel dengan keamanan tingkat kolom

Anda memerlukan peran Fine-Grained Reader atau peran Masked Reader di berbagai tingkat, seperti organisasi, folder, project, dan tag kebijakan. Peran Fine-Grained Reader memberikan akses data mentah, sedangkan peran Masked Reader memberikan akses ke data yang disamarkan. Anda dapat menggunakan Pemecah Masalah Kebijakan IAM untuk memeriksa izin ini di tingkat project.

Saya menetapkan kontrol akses mendetail dalam taksonomi tag kebijakan, tetapi pengguna melihat data yang dilindungi

Untuk memecahkan masalah ini, konfirmasi detail berikut:

  • Di halaman Taksonomi tag kebijakan di Pusat keamanan BigQuery, pastikan tombol Terapkan kontrol akses berada di posisi Aktif.
  • Pastikan kueri Anda tidak menggunakan hasil kueri yang di-cache. Jika Anda menggunakan alat command line bq untuk menguji kueri, gunakan tanda --nouse_cache untuk menonaktifkan cache kueri. Contoh:

    bq query --nouse_cache --use_legacy_sql=false "SELECT * EXCEPT (customer_pii) FROM my_table;"

Pertimbangan migrasi project

Tag kebijakan dan taksonomi ditempatkan dalam Google Cloud organisasi tertentu dan tidak otomatis dikaitkan kembali saat project dimigrasikan ke organisasi baru. Jika Anda memigrasikan project yang menggunakan tag kebijakan untuk kontrol akses tingkat kolom ke organisasi lain, masalah berikut akan terjadi:

  • Tag kebijakan tidak dapat lagi dikelola di konsol Google Cloud dalam project yang dimigrasikan.
  • Anda tidak dapat menerapkan tag kebijakan ini ke kolom baru dalam project yang dimigrasikan.
  • Kontrol akses tingkat kolom yang ada mungkin tampak masih berlaku, tetapi link ke taksonomi sumber di organisasi asli rusak untuk tujuan pengelolaan.

Untuk mengatasi masalah ini, diperlukan intervensi manual oleh Google Cloud Dukungan untuk mengaitkan kembali taksonomi dengan organisasi baru. Jika Anda memigrasikan project dengan tag kebijakan dan mengalami masalah ini, hubungi Cloud Customer Care.

Memecahkan masalah kunci enkripsi yang dikelola pelanggan

Daftar berikut menjelaskan error umum dan resolusi yang direkomendasikan saat Anda menggunakan kunci enkripsi yang dikelola pelanggan (CMEK) dengan Cloud Key Management Service:

Error: Please grant Cloud KMS CryptoKey Encrypter/Decrypter role
Penyelesaian: Akun layanan BigQuery yang terkait dengan project Anda tidak memiliki izin IAM yang memadai untuk beroperasi pada kunci Cloud KMS yang ditentukan. Untuk memberikan izin IAM yang diperlukan, ikuti petunjuk dalam pesan error atau di Memberikan izin enkripsi dan dekripsi.
Error: Existing table encryption settings don't match encryption settings specified in the request
Penyelesaian: Error ini dapat terjadi saat tabel tujuan memiliki setelan enkripsi yang tidak cocok dengan setelan enkripsi dalam permintaan Anda. Untuk mengatasi masalah ini, gunakan disposisi tulis TRUNCATE untuk mengganti tabel, atau tentukan tabel tujuan yang berbeda.
Error: This region is not supported
Penyelesaian: Region kunci Cloud KMS tidak cocok dengan region set data BigQuery untuk tabel tujuan. Untuk mengatasi masalah ini, pilih kunci di region yang cocok dengan set data Anda, atau muat data ke set data yang cocok dengan region kunci.
Error: Your administrator requires that you specify an encryption key for queries in project PROJECT_ID.
Penyelesaian: Kebijakan organisasi mencegah pembuatan resource atau menjalankan kueri. Untuk mempelajari kebijakan ini lebih lanjut, lihat Mewajibkan CMEK untuk semua resource.
Error: Your administrator prevents using KMS keys from project KMS_PROJECT_ID to protect resources in project PROJECT_ID.
Penyelesaian: Kebijakan organisasi mencegah pembuatan resource atau menjalankan kueri. Untuk mempelajari kebijakan ini lebih lanjut, lihat Membatasi kunci Cloud KMS untuk project BigQuery.

Langkah berikutnya