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 guna mengubah kebijakan IAM untuk resource, minta administrator untuk memberi Anda peran IAM BigQuery Data Owner (roles/bigquery.dataOwner
) pada project tersebut.
Untuk mengetahui informasi selengkapnya tentang cara memberikan peran, lihat Mengelola akses.
Peran bawaan ini berisi izin yang diperlukan guna mengubah kebijakan IAM untuk resource. Untuk melihat izin yang benar-benar diperlukan, perluas 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 yang telah ditetapkan 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 menerapkan kontrol akses saat set data dibuat, panggil
datasets.insert
dengan
dataset resource
yang ditentukan.
Untuk memperbarui kontrol akses, panggil
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.
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
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 Anda, gunakan kembali perintah
bq show
tanpa menulis informasi 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.iam.gserviceaccount.com", ] } } 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
. Hal 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
guna memperbarui kebijakan IAM untuk
set data mydataset
guna memberikan peran ke satu akun utama. Memperbarui kebijakan IAM ini tidak 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 bahwa resource yang dibuat atau diperbarui oleh Terraform sesuai dengan ekspektasi Anda:
terraform plan
Koreksi konfigurasi jika diperlukan.
-
Terapkan konfigurasi Terraform dengan menjalankan perintah berikut dan memasukkan
yes
pada perintah: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 mengetahui 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 mengetahui 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 mengetahui informasi selengkapnya, lihat Menyiapkan autentikasi untuk library klien.
Tetapkan propertidataset.access_entries
dengan kontrol akses untuk set data. Selanjutnya, 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 menulis informasi tabel atau tabel virtual yang sudah ada (termasuk kontrol akses) ke file JSON, gunakan perintah
bq get-iam-policy
:bq get-iam-policy \ PROJECT_ID:DATASET.TABLE_OR_VIEW \ > PATH_TO_FILE
Ganti kode berikut:
- PROJECT_ID: project ID Anda
- DATASET: nama set data yang berisi tabel atau tabel virtual yang ingin Anda perbarui
- TABLE_OR_VIEW: nama resource yang akan diperbarui
- PATH_TO_FILE: jalur ke file JSON di komputer lokal Anda
Buat perubahan pada bagian
bindings
file JSON. Binding mengikat satu atau beberapamembers
, atau akun utama, kerole
tunggal. Akun utama dapat berupa akun pengguna, akun layanan, grup Google, dan domain. Misalnya, bagianbindings
dari file JSON tabel atau tabel virtual akan terlihat seperti berikut:{ "bindings": [ { "role": "roles/bigquery.dataViewer", "members": [ "user:mike@example.com", "group:admins@example.com", "domain:google.com", "serviceAccount:my-project-id@appspot.gserviceaccount.com" ] }, ], "etag": "BwWWja0YfJA=", "version": 1 }
Untuk memperbarui kebijakan akses, gunakan perintah
bq set-iam-policy
:bq set-iam-policy PROJECT_ID:DATASET.TABLE_OR_VIEW PATH_TO_FILE
Untuk memverifikasi perubahan kontrol akses, gunakan perintah
bq get-iam-policy
lagi tanpa menulis informasi ke file:bq get-iam-policy --format=prettyjson \ PROJECT_ID:DATASET.TABLE_OR_VIEW
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 pada 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
. Hal 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
guna memperbarui kebijakan IAM untuk
tabel mytable
guna memberikan peran ke 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.iam.gserviceaccount.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 bahwa resource yang dibuat atau diperbarui oleh Terraform sesuai dengan ekspektasi Anda:
terraform plan
Koreksi konfigurasi jika diperlukan.
-
Terapkan konfigurasi Terraform dengan menjalankan perintah berikut dan memasukkan
yes
pada perintah: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 dan/atau binding. Untuk format yang diperlukan untuk kebijakan, lihat topik referensi Kebijakan.
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 mengetahui 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 mengetahui 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 Remove role from principal?, klik Remove.
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.iam.gserviceaccount.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 menghapus salah satu entrispecialGroup
:projectOwners
,projectWriters
,projectReaders
, danallAuthenticatedUsers
. Anda juga dapat menghapus salah satu dari:userByEmail
,groupByEmail
, dandomain
.Misalnya, bagian
access
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 Anda, gunakan kembali perintah
show
tanpa menulis informasi 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 mengetahui 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 mengetahui informasi selengkapnya, lihat Menyiapkan autentikasi untuk library klien.
Tetapkan propertidataset.access_entries
dengan kontrol akses untuk set data. Selanjutnya, 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 Remove role from principal?, klik Remove.
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.iam.gserviceaccount.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 tabel atau tabel virtual yang sudah ada (termasuk kontrol akses) ke file JSON, gunakan perintah
bq get-iam-policy
:bq get-iam-policy \ PROJECT_ID:DATASET.TABLE_OR_VIEW \ > PATH_TO_FILE
Ganti kode berikut:
- PROJECT_ID: project ID Anda
- DATASET: nama set data yang berisi tabel atau tabel virtual yang ingin Anda perbarui
- TABLE_OR_VIEW: nama resource yang akan diperbarui
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, bagianaccess
dari file JSON tabel atau tampilan 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" } ], ... }
Untuk memperbarui kebijakan akses, gunakan perintah
bq set-iam-policy
:bq set-iam-policy PROJECT_ID:DATASET.TABLE_OR_VIEW PATH_TO_FILE
Untuk memverifikasi perubahan kontrol akses Anda, gunakan kembali perintah
get-iam-policy
tanpa menulis informasi ke file:bq get-iam-policy --format=prettyjson \ PROJECT_ID:DATASET.TABLE_OR_VIEW
API
- Untuk mengambil kebijakan saat ini, panggil metode
tables.getIamPolicy
. Edit kebijakan untuk menghapus anggota dan/atau binding. 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 mengetahui informasi selengkapnya, lihat Menyiapkan autentikasi untuk library klien.
Menolak akses ke resource
Kebijakan penolakan IAM dapat Anda gunakan untuk menetapkan batasan pada akses ke resource BigQuery. Anda dapat menentukan aturan penolakan yang mencegah akun utama yang dipilih menggunakan izin tertentu, terlepas dari peran yang diberikan.
Untuk mengetahui informasi tentang cara membuat, memperbarui, dan menghapus kebijakan penolakan, lihat Menolak akses ke resource.