Mengontrol akses ke resource dengan IAM
Dokumen ini menjelaskan cara melihat kebijakan akses resource saat ini, cara memberikan akses ke resource, dan cara mencabut akses ke resource.
Dokumen ini mengasumsikan Anda telah memahami sistem Identity and Access Management (IAM) di Google Cloud.
Peran yang diperlukan
Untuk mendapatkan izin yang Anda perlukan untuk mengubah kebijakan IAM untuk resource,
minta administrator untuk memberi Anda
peran IAM BigQuery Data Owner (roles/bigquery.dataOwner
) pada project.
Untuk mengetahui informasi selengkapnya tentang cara memberikan peran, lihat Mengelola akses ke project, folder, dan organisasi.
Peran yang telah ditentukan ini berisi izin yang diperlukan untuk mengubah kebijakan IAM untuk resource. Untuk melihat izin yang benar-benar diperlukan, luaskan bagian Izin yang diperlukan:
Izin yang diperlukan
Izin berikut diperlukan guna mengubah kebijakan IAM untuk resource:
-
Untuk mendapatkan kebijakan akses set data:
bigquery.datasets.get
-
Untuk menetapkan kebijakan akses set data:
bigquery.datasets.update
-
Untuk mendapatkan kebijakan akses set data (khusus konsol Google Cloud):
bigquery.datasets.getIamPolicy
-
Untuk menetapkan kebijakan akses set data (khusus konsol):
bigquery.datasets.setIamPolicy
-
Untuk mendapatkan kebijakan tabel atau tabel virtual:
bigquery.tables.getIamPolicy
-
Untuk menyetel kebijakan tabel atau tabel virtual:
bigquery.tables.setIamPolicy
-
Untuk membuat alat bq atau tugas BigQuery SQL (opsional):
bigquery.jobs.create
Anda mungkin juga bisa mendapatkan izin ini dengan peran khusus atau peran bawaan lainnya.
Melihat kebijakan akses resource
Bagian berikut menjelaskan cara melihat kebijakan akses dari berbagai resource.
Melihat kebijakan akses set data
Pilih salah satu opsi berikut:
Konsol
Buka halaman BigQuery.
Di panel Explorer, luaskan project Anda dan pilih set data.
Klik > Permissions.
SharingKebijakan akses set data akan muncul di panel Dataset Permissions.
bq
-
Di konsol Google Cloud, aktifkan Cloud Shell.
Di bagian bawah Google Cloud Console, Cloud Shell sesi akan terbuka dan menampilkan perintah command line. Cloud Shell adalah lingkungan shell dengan Google Cloud CLI yang sudah terinstal, dan dengan nilai yang sudah ditetapkan untuk project Anda saat ini. Diperlukan waktu beberapa detik untuk melakukan inisialisasi sesi.
Untuk mendapatkan kebijakan yang ada dan menghasilkannya ke file lokal di JSON, gunakan perintah
bq show
di Cloud Shell:bq show \ --format=prettyjson \ PROJECT_ID:DATASET > PATH_TO_FILE
Ganti kode berikut:
- PROJECT_ID: project ID Anda
- DATASET: nama set data Anda
- PATH_TO_FILE: jalur ke file JSON di komputer lokal Anda
API
Untuk melihat kebijakan akses set data, panggil metode datasets.get
dengan resource dataset
yang ditentukan.
Kebijakan tersedia di properti access
dari resource dataset
yang ditampilkan.
Melihat kebijakan akses tabel atau tabel virtual
Pilih salah satu opsi berikut:
Konsol
Buka halaman BigQuery.
Di panel Explorer, luaskan project Anda dan pilih tabel atau tabel virtual.
Klik
Share.Kebijakan akses tabel atau tabel virtual akan muncul di panel Share.
bq
-
Di konsol Google Cloud, aktifkan Cloud Shell.
Di bagian bawah Google Cloud Console, Cloud Shell sesi akan terbuka dan menampilkan perintah command line. Cloud Shell adalah lingkungan shell dengan Google Cloud CLI yang sudah terinstal, dan dengan nilai yang sudah ditetapkan untuk project Anda saat ini. Diperlukan waktu beberapa detik untuk melakukan inisialisasi sesi.
Untuk mendapatkan kebijakan akses yang ada dan menghasilkannya ke file lokal di JSON, gunakan perintah
bq get-iam-policy
di Cloud Shell:bq get-iam-policy \ --table=true \ PROJECT_ID:DATASET.RESOURCE > PATH_TO_FILE
Ganti kode berikut:
- PROJECT_ID: project ID Anda
- DATASET: nama set data Anda
- RESOURCE: nama tabel atau tabel virtual yang kebijakannya ingin Anda lihat
- PATH_TO_FILE: jalur ke file JSON di komputer lokal Anda
API
Untuk mengambil kebijakan saat ini, panggil metode tables.getIamPolicy
.
Memberikan akses ke resource
Bagian berikut menjelaskan cara memberikan akses ke berbagai resource.
Memberikan akses ke set data
Pilih salah satu opsi berikut:
Konsol
Buka halaman BigQuery.
Di panel Explorer, luaskan project Anda dan pilih set data untuk dibagikan.
Klik > Permissions.
SharingKlik
Add principal.Di kolom New principals, masukkan akun utama.
Di daftar Select a role, pilih peran yang telah ditetapkan atau peran khusus.
Klik Save.
Untuk kembali ke info set data, klik Close.
SQL
Untuk memberikan akses ke set data kepada akun utama, gunakan pernyataan DCL GRANT
:
Di konsol Google Cloud, buka halaman BigQuery.
Di editor kueri, masukkan pernyataan berikut:
GRANT `ROLE_LIST` ON SCHEMA RESOURCE_NAME TO "USER_LIST"
Ganti kode berikut:
ROLE_LIST
: peran atau daftar peran yang dipisahkan koma yang ingin Anda berikanRESOURCE_NAME
: nama resource yang ingin Anda beri izinUSER_LIST
: daftar pengguna yang dipisahkan koma yang diberi peranUntuk daftar format yang valid, lihat
user_list
.
Klik
Run.
Untuk informasi selengkapnya tentang cara menjalankan kueri, lihat Menjalankan kueri interaktif.
Contoh berikut memberikan peran Data Viewer pada set data myDataset
:
GRANT `roles/bigquery.dataViewer`
ON SCHEMA `myProject`.myDataset
TO "user:raha@example-pet-store.com", "user:sasha@example-pet-store.com"
bq
-
Di konsol Google Cloud, aktifkan Cloud Shell.
Di bagian bawah Google Cloud Console, Cloud Shell sesi akan terbuka dan menampilkan perintah command line. Cloud Shell adalah lingkungan shell dengan Google Cloud CLI yang sudah terinstal, dan dengan nilai yang sudah ditetapkan untuk project Anda saat ini. Diperlukan waktu beberapa detik untuk melakukan inisialisasi sesi.
Untuk menulis informasi set data yang ada (termasuk kontrol akses) ke file JSON, gunakan perintah
bq show
:bq show \ --format=prettyjson \ PROJECT_ID:DATASET > PATH_TO_FILE
Ganti kode berikut:
- PROJECT_ID: project ID Anda
- DATASET: nama set data Anda
- PATH_TO_FILE: jalur ke file JSON di komputer lokal Anda
Buat perubahan pada bagian
access
pada file JSON. Anda dapat menambahkan ke salah satu entrispecialGroup
:projectOwners
,projectWriters
,projectReaders
, danallAuthenticatedUsers
. Anda juga dapat menambahkan salah satu dari:userByEmail
,groupByEmail
, dandomain
.Misalnya, bagian
access
pada file JSON set data akan terlihat seperti berikut:{ "access": [ { "role": "READER", "specialGroup": "projectReaders" }, { "role": "WRITER", "specialGroup": "projectWriters" }, { "role": "OWNER", "specialGroup": "projectOwners" }, { "role": "READER", "specialGroup": "allAuthenticatedUsers" }, { "role": "READER", "domain": "domain_name" }, { "role": "WRITER", "userByEmail": "user_email" }, { "role": "READER", "groupByEmail": "group_email" } ], ... }
Setelah pengeditan selesai, gunakan perintah
bq update
dan sertakan file JSON menggunakan flag--source
. Jika set data berada dalam project selain project default Anda, tambahkan project ID ke nama set data dalam format berikut:PROJECT_ID:DATASET
.bq update \ --source PATH_TO_FILE \ PROJECT_ID:DATASET
Untuk memverifikasi perubahan kontrol akses, gunakan kembali perintah
bq show
tanpa perlu menulis informasi tersebut ke file:bq show --format=prettyjson PROJECT_ID:DATASET
Terraform
Gunakan resource google_bigquery_dataset_iam
untuk memperbarui akses ke set data.
Menetapkan kebijakan akses untuk set data
Contoh berikut menunjukkan cara menggunakan resource google_bigquery_dataset_iam_policy
untuk menetapkan kebijakan IAM untuk set data mydataset
. Tindakan ini akan menggantikan kebijakan apa pun yang sudah ada dan telah dilampirkan ke set data:
# This file sets the IAM policy for the dataset created by # https://github.com/terraform-google-modules/terraform-docs-samples/blob/main/bigquery/bigquery_create_dataset/main.tf. # You must place it in the same local directory as that main.tf file, # and you must have already applied that main.tf file to create # the "default" dataset resource with a dataset_id of "mydataset". data "google_iam_policy" "iam_policy" { binding { role = "roles/bigquery.admin" members = [ "user:hao@altostrat.com", ] } binding { role = "roles/bigquery.dataOwner" members = [ "group:dba@altostrat.com", ] } binding { role = "roles/bigquery.dataEditor" members = [ "serviceAccount:bqcx-1234567891011-12a3@gcp-sa-bigquery-condel.", ] } } resource "google_bigquery_dataset_iam_policy" "dataset_iam_policy" { dataset_id = google_bigquery_dataset.default.dataset_id policy_data = data.google_iam_policy.iam_policy.policy_data }
Menetapkan keanggotaan peran untuk set data
Contoh berikut menunjukkan cara menggunakan resource google_bigquery_dataset_iam_binding
untuk menetapkan keanggotaan dalam peran tertentu untuk set data mydataset
. Tindakan ini akan menggantikan keanggotaan yang ada dalam peran tersebut.
Peran lain dalam kebijakan IAM untuk set data dipertahankan:
# This file sets membership in an IAM role for the dataset created by # https://github.com/terraform-google-modules/terraform-docs-samples/blob/main/bigquery/bigquery_create_dataset/main.tf. # You must place it in the same local directory as that main.tf file, # and you must have already applied that main.tf file to create # the "default" dataset resource with a dataset_id of "mydataset". resource "google_bigquery_dataset_iam_binding" "dataset_iam_binding" { dataset_id = google_bigquery_dataset.default.dataset_id role = "roles/bigquery.jobUser" members = [ "user:raha@altostrat.com", "group:analysts@altostrat.com" ] }
Menetapkan keanggotaan peran untuk satu akun utama
Contoh berikut menunjukkan cara menggunakan resource google_bigquery_dataset_iam_member
untuk memperbarui kebijakan IAM untuk set data mydataset
guna memberikan peran kepada satu akun utama. Memperbarui kebijakan IAM ini tidak akan memengaruhi akses untuk akun utama lain yang telah diberi peran tersebut untuk set data.
# This file adds a member to an IAM role for the dataset created by # https://github.com/terraform-google-modules/terraform-docs-samples/blob/main/bigquery/bigquery_create_dataset/main.tf. # You must place it in the same local directory as that main.tf file, # and you must have already applied that main.tf file to create # the "default" dataset resource with a dataset_id of "mydataset". resource "google_bigquery_dataset_iam_member" "dataset_iam_member" { dataset_id = google_bigquery_dataset.default.dataset_id role = "roles/bigquery.user" member = "user:yuri@altostrat.com" }
Untuk menerapkan konfigurasi Terraform di project Google Cloud, selesaikan langkah-langkah di bagian berikut.
Menyiapkan Cloud Shell
- Luncurkan Cloud Shell.
-
Tetapkan project Google Cloud default tempat Anda ingin menerapkan konfigurasi Terraform.
Anda hanya perlu menjalankan perintah ini sekali per project, dan dapat dijalankan di direktori mana pun.
export GOOGLE_CLOUD_PROJECT=PROJECT_ID
Variabel lingkungan akan diganti jika Anda menetapkan nilai eksplisit dalam file konfigurasi Terraform.
Menyiapkan direktori
Setiap file konfigurasi Terraform harus memiliki direktorinya sendiri (juga disebut modul root).
-
Di Cloud Shell, buat direktori dan file baru di dalam direktori tersebut. Nama file harus memiliki
ekstensi
.tf
—misalnyamain.tf
. Dalam tutorial ini, file ini disebut sebagaimain.tf
.mkdir DIRECTORY && cd DIRECTORY && touch main.tf
-
Jika mengikuti tutorial, Anda dapat menyalin kode contoh di setiap bagian atau langkah.
Salin kode contoh ke dalam
main.tf
yang baru dibuat.Atau, salin kode dari GitHub. Tindakan ini direkomendasikan jika cuplikan Terraform adalah bagian dari solusi menyeluruh.
- Tinjau dan ubah contoh parameter untuk diterapkan pada lingkungan Anda.
- Simpan perubahan Anda.
-
Lakukan inisialisasi Terraform. Anda hanya perlu melakukan ini sekali per direktori.
terraform init
Secara opsional, untuk menggunakan versi penyedia Google terbaru, sertakan opsi
-upgrade
:terraform init -upgrade
Menerapkan perubahan
-
Tinjau konfigurasi dan pastikan resource yang akan dibuat atau
diupdate oleh Terraform sesuai yang Anda inginkan:
terraform plan
Koreksi konfigurasi jika diperlukan.
-
Terapkan konfigurasi Terraform dengan menjalankan perintah berikut dan memasukkan
yes
pada prompt:terraform apply
Tunggu hingga Terraform menampilkan pesan "Apply complete!".
- Buka project Google Cloud Anda untuk melihat hasilnya. Di Konsol Google Cloud, buka resource Anda di UI untuk memastikan bahwa Terraform telah membuat atau mengupdatenya.
API
Untuk menerapkan kontrol akses saat set data dibuat, panggil metode datasets.insert
dengan resource set data yang ditentukan.
Untuk memperbarui kontrol akses, panggil metode datasets.patch
dan gunakan properti access
di resource Dataset
.
Karena metode datasets.update
menggantikan seluruh resource set data, datasets.patch
adalah metode yang lebih disukai untuk memperbarui kontrol akses.
Go
Sebelum mencoba contoh ini, ikuti petunjuk penyiapan Go di Panduan memulai BigQuery menggunakan library klien. Untuk mengetahui informasi selengkapnya, lihat Dokumentasi referensi BigQuery Go API.
Untuk melakukan autentikasi ke BigQuery, siapkan Kredensial Default Aplikasi. Untuk informasi selengkapnya, lihat Menyiapkan autentikasi untuk library klien.
Java
Sebelum mencoba contoh ini, ikuti petunjuk penyiapan Java di Panduan memulai BigQuery menggunakan library klien. Untuk mengetahui informasi selengkapnya, lihat Dokumentasi referensi BigQuery Java API.
Untuk melakukan autentikasi ke BigQuery, siapkan Kredensial Default Aplikasi. Untuk informasi selengkapnya, lihat Menyiapkan autentikasi untuk library klien.
Python
Sebelum mencoba contoh ini, ikuti petunjuk penyiapan Python di Panduan memulai BigQuery menggunakan library klien. Untuk mengetahui informasi selengkapnya, lihat Dokumentasi referensi BigQuery Python API.
Untuk melakukan autentikasi ke BigQuery, siapkan Kredensial Default Aplikasi. Untuk informasi selengkapnya, lihat Menyiapkan autentikasi untuk library klien.
Tetapkan propertidataset.access_entries
dengan kontrol akses untuk set data. Kemudian, panggil fungsi client.update_dataset()
untuk memperbarui properti.
Memberikan akses ke tabel atau tabel virtual
Pilih salah satu opsi berikut:
Konsol
Buka halaman BigQuery.
Di panel Explorer, luaskan project Anda dan pilih tabel atau tabel virtual untuk dibagikan.
Klik
Share.Klik
Add principal.Di kolom New principals, masukkan akun utama.
Di daftar Select a role, pilih peran yang telah ditetapkan atau peran khusus.
Klik Save.
Untuk kembali ke tabel atau melihat detail, klik Close.
SQL
Untuk memberikan akses ke tabel atau tabel virtual kepada akun utama, gunakan pernyataan DCL GRANT
:
Di konsol Google Cloud, buka halaman BigQuery.
Di editor kueri, masukkan pernyataan berikut:
GRANT `ROLE_LIST` ON RESOURCE_TYPE RESOURCE_NAME TO "USER_LIST"
Ganti kode berikut:
ROLE_LIST
: peran atau daftar peran yang dipisahkan koma yang ingin Anda berikanRESOURCE_TYPE
: jenis resource tempat peran diterapkanNilai yang didukung mencakup
TABLE
,VIEW
,MATERIALIZED VIEW
, danEXTERNAL TABLE
.RESOURCE_NAME
: nama resource yang ingin Anda beri izinUSER_LIST
: daftar pengguna yang dipisahkan koma yang diberi peranUntuk daftar format yang valid, lihat
user_list
.
Klik
Run.
Untuk informasi selengkapnya tentang cara menjalankan kueri, lihat Menjalankan kueri interaktif.
Contoh berikut memberikan peran Data Viewer pada tabel myTable
:
GRANT `roles/bigquery.dataViewer`
ON TABLE `myProject`.myDataset.myTable
TO "user:raha@example-pet-store.com", "user:sasha@example-pet-store.com"
bq
-
Di konsol Google Cloud, aktifkan Cloud Shell.
Di bagian bawah Google Cloud Console, Cloud Shell sesi akan terbuka dan menampilkan perintah command line. Cloud Shell adalah lingkungan shell dengan Google Cloud CLI yang sudah terinstal, dan dengan nilai yang sudah ditetapkan untuk project Anda saat ini. Diperlukan waktu beberapa detik untuk melakukan inisialisasi sesi.
Untuk memberikan akses ke tabel atau tampilan, gunakan perintah
bq add-iam-policy-binding
:bq add-iam-policy-binding --member=MEMBER_TYPE:MEMBER --role=ROLE --table=true RESOURCE
Ganti kode berikut:
- MEMBER_TYPE: jenis anggota, seperti
user
,group
,serviceAccount
, ataudomain
. - MEMBER: alamat email atau nama domain anggota.
- ROLE: peran yang ingin Anda berikan kepada anggota.
- RESOURCE: nama tabel atau tampilan yang kebijakannya ingin Anda perbarui.
- MEMBER_TYPE: jenis anggota, seperti
Terraform
Gunakan resource google_bigquery_table_iam
untuk memperbarui akses ke tabel.
Menetapkan kebijakan akses untuk tabel
Contoh berikut menunjukkan cara menggunakan resource google_bigquery_table_iam_policy
untuk menetapkan kebijakan IAM untuk tabel mytable
. Tindakan ini akan menggantikan kebijakan apa pun yang sudah ada dan telah dilampirkan ke tabel:
# This file sets the IAM policy for the table created by # https://github.com/terraform-google-modules/terraform-docs-samples/blob/main/bigquery/bigquery_create_table/main.tf. # You must place it in the same local directory as that main.tf file, # and you must have already applied that main.tf file to create # the "default" table resource with a table_id of "mytable". data "google_iam_policy" "iam_policy" { binding { role = "roles/bigquery.dataOwner" members = [ "user:raha@altostrat.com", ] } } resource "google_bigquery_table_iam_policy" "table_iam_policy" { dataset_id = google_bigquery_table.default.dataset_id table_id = google_bigquery_table.default.table_id policy_data = data.google_iam_policy.iam_policy.policy_data }
Menetapkan keanggotaan peran untuk tabel
Contoh berikut menunjukkan cara menggunakan resource google_bigquery_table_iam_binding
untuk menetapkan keanggotaan dalam peran tertentu untuk tabel mytable
. Tindakan ini akan menggantikan keanggotaan yang ada dalam peran tersebut.
Peran lain dalam kebijakan IAM untuk tabel dipertahankan.
# This file sets membership in an IAM role for the table created by # https://github.com/terraform-google-modules/terraform-docs-samples/blob/main/bigquery/bigquery_create_table/main.tf. # You must place it in the same local directory as that main.tf file, # and you must have already applied that main.tf file to create # the "default" table resource with a table_id of "mytable". resource "google_bigquery_table_iam_binding" "table_iam_binding" { dataset_id = google_bigquery_table.default.dataset_id table_id = google_bigquery_table.default.table_id role = "roles/bigquery.dataOwner" members = [ "group:analysts@altostrat.com", ] }
Menetapkan keanggotaan peran untuk satu akun utama
Contoh berikut menunjukkan cara menggunakan resource google_bigquery_table_iam_member
untuk memperbarui kebijakan IAM untuk tabel mytable
guna memberikan peran kepada satu akun utama. Memperbarui kebijakan IAM ini tidak akan memengaruhi akses untuk akun utama lain yang telah diberi peran tersebut untuk set data.
# This file adds a member to an IAM role for the table created by # https://github.com/terraform-google-modules/terraform-docs-samples/blob/main/bigquery/bigquery_create_table/main.tf. # You must place it in the same local directory as that main.tf file, # and you must have already applied that main.tf file to create # the "default" table resource with a table_id of "mytable". resource "google_bigquery_table_iam_member" "table_iam_member" { dataset_id = google_bigquery_table.default.dataset_id table_id = google_bigquery_table.default.table_id role = "roles/bigquery.dataEditor" member = "serviceAccount:bqcx-1234567891011-12a3@gcp-sa-bigquery-condel." }
Untuk menerapkan konfigurasi Terraform di project Google Cloud, selesaikan langkah-langkah di bagian berikut.
Menyiapkan Cloud Shell
- Luncurkan Cloud Shell.
-
Tetapkan project Google Cloud default tempat Anda ingin menerapkan konfigurasi Terraform.
Anda hanya perlu menjalankan perintah ini sekali per project, dan dapat dijalankan di direktori mana pun.
export GOOGLE_CLOUD_PROJECT=PROJECT_ID
Variabel lingkungan akan diganti jika Anda menetapkan nilai eksplisit dalam file konfigurasi Terraform.
Menyiapkan direktori
Setiap file konfigurasi Terraform harus memiliki direktorinya sendiri (juga disebut modul root).
-
Di Cloud Shell, buat direktori dan file baru di dalam direktori tersebut. Nama file harus memiliki
ekstensi
.tf
—misalnyamain.tf
. Dalam tutorial ini, file ini disebut sebagaimain.tf
.mkdir DIRECTORY && cd DIRECTORY && touch main.tf
-
Jika mengikuti tutorial, Anda dapat menyalin kode contoh di setiap bagian atau langkah.
Salin kode contoh ke dalam
main.tf
yang baru dibuat.Atau, salin kode dari GitHub. Tindakan ini direkomendasikan jika cuplikan Terraform adalah bagian dari solusi menyeluruh.
- Tinjau dan ubah contoh parameter untuk diterapkan pada lingkungan Anda.
- Simpan perubahan Anda.
-
Lakukan inisialisasi Terraform. Anda hanya perlu melakukan ini sekali per direktori.
terraform init
Secara opsional, untuk menggunakan versi penyedia Google terbaru, sertakan opsi
-upgrade
:terraform init -upgrade
Menerapkan perubahan
-
Tinjau konfigurasi dan pastikan resource yang akan dibuat atau
diupdate oleh Terraform sesuai yang Anda inginkan:
terraform plan
Koreksi konfigurasi jika diperlukan.
-
Terapkan konfigurasi Terraform dengan menjalankan perintah berikut dan memasukkan
yes
pada prompt:terraform apply
Tunggu hingga Terraform menampilkan pesan "Apply complete!".
- Buka project Google Cloud Anda untuk melihat hasilnya. Di Konsol Google Cloud, buka resource Anda di UI untuk memastikan bahwa Terraform telah membuat atau mengupdatenya.
API
- Untuk mengambil kebijakan saat ini, panggil metode
tables.getIamPolicy
. Edit kebijakan untuk menambahkan anggota atau binding, atau keduanya. Untuk format yang diperlukan untuk kebijakan, lihat topik referensi Kebijakan.
Panggil
tables.setIamPolicy
untuk menulis kebijakan yang diperbarui. Catatan: Binding kosong tanpa anggota tidak diizinkan dan akan menghasilkan error.
Java
Sebelum mencoba contoh ini, ikuti petunjuk penyiapan Java di Panduan memulai BigQuery menggunakan library klien. Untuk mengetahui informasi selengkapnya, lihat Dokumentasi referensi BigQuery Java API.
Untuk melakukan autentikasi ke BigQuery, siapkan Kredensial Default Aplikasi. Untuk informasi selengkapnya, lihat Menyiapkan autentikasi untuk library klien.
Python
Sebelum mencoba contoh ini, ikuti petunjuk penyiapan Python di Panduan memulai BigQuery menggunakan library klien. Untuk mengetahui informasi selengkapnya, lihat Dokumentasi referensi BigQuery Python API.
Untuk melakukan autentikasi ke BigQuery, siapkan Kredensial Default Aplikasi. Untuk informasi selengkapnya, lihat Menyiapkan autentikasi untuk library klien.
Mencabut akses ke resource
Bagian berikut menjelaskan cara mencabut akses ke berbagai resource.
Mencabut akses ke set data
Pilih salah satu opsi berikut:
Konsol
Buka halaman BigQuery.
Di panel Explorer, luaskan project Anda dan pilih set data.
Di panel detail, klik Sharing > Permissions.
Pada dialog Dataset Permissions, luaskan akun utama yang aksesnya ingin Anda cabut.
Klik
Remove principal.Pada dialog Hapus peran dari akun utama?, klik Hapus.
Untuk kembali ke detail set data, klik Close.
SQL
Untuk menghapus akses ke set data dari akun utama, gunakan pernyataan DCL REVOKE
:
Di konsol Google Cloud, buka halaman BigQuery.
Di editor kueri, masukkan pernyataan berikut:
REVOKE `ROLE_LIST` ON SCHEMA RESOURCE_NAME FROM "USER_LIST"
Ganti kode berikut:
ROLE_LIST
: peran atau daftar peran yang dipisahkan koma yang ingin Anda cabutRESOURCE_NAME
: nama resource yang izinnya ingin Anda cabutUSER_LIST
: daftar pengguna yang dipisahkan koma yang perannya akan dicabutUntuk daftar format yang valid, lihat
user_list
.
Klik
Run.
Untuk informasi selengkapnya tentang cara menjalankan kueri, lihat Menjalankan kueri interaktif.
Contoh berikut mencabut peran Admin pada set data myDataset
:
REVOKE `roles/bigquery.admin`
ON SCHEMA `myProject`.myDataset
FROM "group:example-team@example-pet-store.com", "serviceAccount:user@test-project."
bq
-
Di konsol Google Cloud, aktifkan Cloud Shell.
Di bagian bawah Google Cloud Console, Cloud Shell sesi akan terbuka dan menampilkan perintah command line. Cloud Shell adalah lingkungan shell dengan Google Cloud CLI yang sudah terinstal, dan dengan nilai yang sudah ditetapkan untuk project Anda saat ini. Diperlukan waktu beberapa detik untuk melakukan inisialisasi sesi.
Untuk menulis informasi set data yang ada (termasuk kontrol akses) ke file JSON, gunakan perintah
bq show
:bq show \ --format=prettyjson \ PROJECT_ID:DATASET > PATH_TO_FILE
Ganti kode berikut:
- PROJECT_ID: project ID Anda
- DATASET: nama set data Anda
- PATH_TO_FILE: jalur ke file JSON di komputer lokal Anda
Buat perubahan pada bagian
access
pada file JSON. Anda dapat menghapus salah satu entrispecialGroup
:projectOwners
,projectWriters
,projectReaders
, danallAuthenticatedUsers
. Anda juga dapat menghapus salah satu dari:userByEmail
,groupByEmail
, dandomain
.Misalnya, bagian
access
pada file JSON set data akan terlihat seperti berikut:{ "access": [ { "role": "READER", "specialGroup": "projectReaders" }, { "role": "WRITER", "specialGroup": "projectWriters" }, { "role": "OWNER", "specialGroup": "projectOwners" }, { "role": "READER", "specialGroup": "allAuthenticatedUsers" }, { "role": "READER", "domain": "domain_name" }, { "role": "WRITER", "userByEmail": "user_email" }, { "role": "READER", "groupByEmail": "group_email" } ], ... }
Setelah pengeditan selesai, gunakan perintah
bq update
dan sertakan file JSON menggunakan flag--source
. Jika set data berada dalam project selain project default Anda, tambahkan project ID ke nama set data dalam format berikut:PROJECT_ID:DATASET
.bq update \ --source PATH_TO_FILE \ PROJECT_ID:DATASET
Untuk memverifikasi perubahan kontrol akses, gunakan kembali perintah
show
tanpa perlu menulis informasi tersebut ke file:bq show --format=prettyjson PROJECT_ID:DATASET
API
Panggil datasets.patch
dan gunakan properti access
di resource Dataset
untuk memperbarui kontrol akses.
Karena metode datasets.update
menggantikan seluruh resource set data, datasets.patch
adalah metode yang lebih disukai untuk memperbarui kontrol akses.
Go
Sebelum mencoba contoh ini, ikuti petunjuk penyiapan Go di Panduan memulai BigQuery menggunakan library klien. Untuk mengetahui informasi selengkapnya, lihat Dokumentasi referensi BigQuery Go API.
Untuk melakukan autentikasi ke BigQuery, siapkan Kredensial Default Aplikasi. Untuk informasi selengkapnya, lihat Menyiapkan autentikasi untuk library klien.
Python
Sebelum mencoba contoh ini, ikuti petunjuk penyiapan Python di Panduan memulai BigQuery menggunakan library klien. Untuk mengetahui informasi selengkapnya, lihat Dokumentasi referensi BigQuery Python API.
Untuk melakukan autentikasi ke BigQuery, siapkan Kredensial Default Aplikasi. Untuk informasi selengkapnya, lihat Menyiapkan autentikasi untuk library klien.
Tetapkan propertidataset.access_entries
dengan kontrol akses untuk set data. Kemudian, panggil fungsi client.update_dataset()
untuk memperbarui properti.
Mencabut akses ke tabel atau tabel virtual
Pilih salah satu opsi berikut:
Konsol
Buka halaman BigQuery.
Di panel Explorer, luaskan project Anda dan pilih tabel atau tabel virtual.
Di panel detail, klik Share.
Pada dialog Share, luaskan akun utama yang aksesnya ingin Anda cabut.
Klik
Delete.Pada dialog Hapus peran dari akun utama?, klik Hapus.
Untuk kembali ke tabel atau melihat detail, klik Close.
SQL
Untuk menghapus akses ke tabel atau tabel virtual dari akun utama, gunakan pernyataan DCL REVOKE
:
Di konsol Google Cloud, buka halaman BigQuery.
Di editor kueri, masukkan pernyataan berikut:
REVOKE `ROLE_LIST` ON RESOURCE_TYPE RESOURCE_NAME FROM "USER_LIST"
Ganti kode berikut:
ROLE_LIST
: peran atau daftar peran yang dipisahkan koma yang ingin Anda cabutRESOURCE_TYPE
: jenis resource tempat peran dicabutNilai yang didukung mencakup
TABLE
,VIEW
,MATERIALIZED VIEW
, danEXTERNAL TABLE
.RESOURCE_NAME
: nama resource yang izinnya ingin Anda cabutUSER_LIST
: daftar pengguna yang dipisahkan koma yang perannya akan dicabutUntuk daftar format yang valid, lihat
user_list
.
Klik
Run.
Untuk informasi selengkapnya tentang cara menjalankan kueri, lihat Menjalankan kueri interaktif.
Contoh berikut mencabut peran Admin pada tabel myTable
:
REVOKE `roles/bigquery.admin`
ON TABLE `myProject`.myDataset.myTable
FROM "group:example-team@example-pet-store.com", "serviceAccount:user@test-project."
bq
-
Di konsol Google Cloud, aktifkan Cloud Shell.
Di bagian bawah Google Cloud Console, Cloud Shell sesi akan terbuka dan menampilkan perintah command line. Cloud Shell adalah lingkungan shell dengan Google Cloud CLI yang sudah terinstal, dan dengan nilai yang sudah ditetapkan untuk project Anda saat ini. Diperlukan waktu beberapa detik untuk melakukan inisialisasi sesi.
Untuk mencabut akses ke tabel atau tabel virtual, gunakan perintah
bq remove-iam-policy-binding
:bq remove-iam-policy-binding --member=MEMBER_TYPE:MEMBER --role=ROLE --table=true RESOURCE
Ganti kode berikut:
- MEMBER_TYPE: jenis anggota, seperti
user
,group
,serviceAccount
, ataudomain
. - MEMBER: alamat email atau nama domain anggota.
- ROLE: peran yang ingin Anda cabut dari anggota.
- RESOURCE: nama tabel atau tampilan yang kebijakannya ingin Anda perbarui.
- MEMBER_TYPE: jenis anggota, seperti
API
- Untuk mengambil kebijakan saat ini, panggil metode
tables.getIamPolicy
. Edit kebijakan untuk menghapus anggota atau binding, atau keduanya. Untuk format yang diperlukan untuk kebijakan, lihat topik referensi Kebijakan.
Panggil
tables.setIamPolicy
untuk menulis kebijakan yang diperbarui. Catatan: Binding kosong tanpa anggota tidak diizinkan dan akan menghasilkan error.
Java
Sebelum mencoba contoh ini, ikuti petunjuk penyiapan Java di Panduan memulai BigQuery menggunakan library klien. Untuk mengetahui informasi selengkapnya, lihat Dokumentasi referensi BigQuery Java API.
Untuk melakukan autentikasi ke BigQuery, siapkan Kredensial Default Aplikasi. Untuk informasi selengkapnya, lihat Menyiapkan autentikasi untuk library klien.
Menolak akses ke resource
Kebijakan tolak IAM dapat Anda gunakan untuk menetapkan batasan pada akses ke resource BigQuery. Anda dapat menentukan aturan tolak yang mencegah akun utama yang dipilih menggunakan izin tertentu, terlepas dari peran yang diberikan.
Untuk informasi tentang cara membuat, memperbarui, dan menghapus kebijakan tolak, lihat Menolak akses ke resource.
Kasus khusus
Pertimbangkan skenario berikut saat Anda membuat kebijakan penolakan IAM pada beberapa izin BigQuery:
Akses ke resource yang diotorisasi (tampilan, routines, set data, atau prosedur tersimpan) memungkinkan Anda create, menghapus, atau memanipulasi tabel, beserta membaca dan mengubah data tabel, meskipun Anda tidak memiliki izin langsung untuk melakukan operasi tersebut. Fungsi ini juga dapat mendapatkan data atau metadata model dan memanggil prosedur tersimpan lainnya di tabel pokok. Kemampuan ini menyiratkan bahwa resource yang diotorisasi memiliki izin berikut:
bigquery.tables.get
bigquery.tables.list
bigquery.tables.getData
bigquery.tables.updateData
bigquery.tables.create
bigquery.tables.delete
bigquery.routines.get
bigquery.routines.list
bigquery.datasets.get
bigquery.models.getData
bigquery.models.getMetadata
Untuk menolak akses ke resource yang diotorisasi ini, tambahkan salah satu nilai berikut ke kolom
deniedPrincipal
saat Anda membuat kebijakan penolakan:Nilai Kasus penggunaan principalSet://goog/public:all
Memblokir semua akun utama termasuk resource yang diotorisasi. principalSet://bigquery.googleapis.com/projects/PROJECT_NUMBER/*
Memblokir semua resource BigQuery yang diotorisasi dalam project yang ditentukan. PROJECT_NUMBER
adalah ID unik yang dibuat secara otomatis untuk project Anda dari jenisINT64
.BigQuery meng-cache hasil kueri pemilik tugas selama 24 jam, yang dapat diakses oleh pemilik tugas tanpa memerlukan izin
bigquery.tables.getData
di tabel yang berisi data. Oleh karena itu, menambahkan kebijakan penolakan IAM ke izinbigquery.tables.getData
tidak memblokir akses ke hasil yang di-cache untuk pemilik tugas hingga masa berlaku cache berakhir. Untuk memblokir akses pemilik tugas ke hasil yang di-cache, buat kebijakan tolak terpisah pada izinbigquery.jobs.create
.Untuk mencegah akses data yang tidak diinginkan saat menggunakan kebijakan tolak untuk memblokir operasi pembacaan data, sebaiknya Anda juga meninjau dan mencabut langganan yang ada di set data.
Untuk membuat kebijakan penolakan IAM guna melihat kontrol akses set data, tolak izin berikut:
bigquery.datasets.get
bigquery.datasets.getIamPolicy
Untuk membuat kebijakan penolakan IAM guna memperbarui kontrol akses set data, tolak izin berikut:
bigquery.datasets.update
bigquery.datasets.setIamPolicy