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 diperlukan, Anda perlu
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 bawaan ini berisi serta 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 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 yang dipisahkan koma peran yang ingin Anda berikanRESOURCE_NAME
: nama resource yang ingin Anda berikan izinUSER_LIST
: daftar pengguna yang dipisahkan koma yang diberi peranUntuk mengetahui daftar format yang valid, lihat
user_list
Klik
Run.
Untuk mengetahui 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 {i>dataset<i} yang ada (termasuk kontrol akses) ke {i>dataset<i} 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
Referensi google_bigquery_dataset_iam_policy
untuk menetapkan kebijakan IAM,
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
Referensi 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
Referensi google_bigquery_dataset_iam_member
memperbarui kebijakan IAM untuk
Set data mydataset
untuk 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 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.
Setel 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 yang dipisahkan koma peran 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 berikan izinUSER_LIST
: daftar pengguna yang dipisahkan koma yang diberi peranUntuk mengetahui daftar format yang valid, lihat
user_list
Klik
Run.
Untuk mengetahui 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 diupdate
- 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@" ] }, ], "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 Anda, gunakan perintah
bq get-iam-policy
lagi tanpa perlu menulis informasi tersebut 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
Referensi google_bigquery_table_iam_policy
untuk menetapkan kebijakan IAM,
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
Referensi 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
Referensi google_bigquery_table_iam_member
memperbarui kebijakan IAM untuk
Tabel mytable
untuk 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." }
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 dan/atau binding. Untuk format yang diperlukan untuk kebijakan, lihat Kebijakan topik referensi.
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 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 yang dipisahkan koma peran yang ingin Anda cabutRESOURCE_NAME
: nama resource yang izin aksesnya ingin Anda cabutUSER_LIST
: daftar pengguna yang dipisahkan koma yang perannya akan dicabutUntuk mengetahui daftar format yang valid, lihat
user_list
Klik
Run.
Untuk mengetahui 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 {i>dataset<i} yang ada (termasuk kontrol akses) ke {i>dataset<i} 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.
Setel 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 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 yang dipisahkan koma peran yang ingin Anda cabutRESOURCE_TYPE
: jenis resource tempat peran dicabutNilai yang didukung mencakup
TABLE
,VIEW
,MATERIALIZED VIEW
, danEXTERNAL TABLE
.RESOURCE_NAME
: nama resource yang izin aksesnya ingin Anda cabutUSER_LIST
: daftar pengguna yang dipisahkan koma yang perannya akan dicabutUntuk mengetahui daftar format yang valid, lihat
user_list
Klik
Run.
Untuk mengetahui 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 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 diupdate
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 tabel virtual 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, gunakan kembali perintah
get-iam-policy
tanpa perlu menulis informasi tersebut 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 Kebijakan topik referensi.
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 penolakan IAM memungkinkan Anda menetapkan batasan akses ke resource BigQuery. Anda dapat menentukan aturan penolakan yang mencegah akun utama yang dipilih menggunakan izin tertentu, terlepas dari peran yang diberikan.
Untuk informasi tentang cara membuat, memperbarui, dan menghapus kebijakan penolakan, lihat Tolak akses ke resource.
Kasus khusus
Pertimbangkan skenario berikut saat Anda membuat kebijakan penolakan IAM di beberapa izin BigQuery:
Akses ke resource yang diizinkan (tampilan, rutin, set data, atau prosedur tersimpan) memungkinkan Anda membuat, turun, atau memanipulasi tabel, beserta pembacaan dan pengubahan data tabel, meskipun Anda tidak memiliki izin untuk melakukan operasi tersebut. Ini juga dapat mendapatkan data atau metadata model, serta memanggil prosedur tersimpan lainnya pada tabel yang mendasarinya. Kemampuan ini menyiratkan bahwa resource resmi 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
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 yang diotorisasi BigQuery dalam project yang ditentukan. PROJECT_NUMBER
adalah ID unik yang dibuat secara otomatis untuk project Anda dengan jenisINT64
.BigQuery menyimpan hasil kueri dalam cache selama 24 jam, yang dapat diakses oleh pemilik pekerjaan tanpa perlu izin
bigquery.tables.getData
di tabel yang berisi izin layanan otomatis dan data skalabel. Oleh karena itu, menambahkan kebijakan penolakan IAM ke Izinbigquery.tables.getData
tidak memblokir akses ke hasil yang di-cache untuk pemilik tugas hingga cache kedaluwarsa. Untuk memblokir akses pemilik lowongan ke hasil yang disimpan dalam cache, buat kebijakan penolakan terpisah padabigquery.jobs.create
izin akses.