Tampilan yang diberi otorisasi

Dokumen ini menjelaskan cara membuat tampilan yang diotorisasi dan tampilan terwujud yang diotorisasi di BigQuery.

Ringkasan

Sebagai administrator data, Anda dapat membuat tabel virtual yang diizinkan untuk membagikan subset data dalam set data kepada pengguna dan grup tertentu (akun utama). Principal dapat melihat data yang Anda bagikan dan menjalankan kueri di dalamnya, tetapi mereka tidak dapat mengakses set data sumber secara langsung.

Jenis tampilan

Tampilan logis adalah jenis tampilan default untuk BigQuery, dan tampilan terwujud adalah tampilan yang telah dihitung sebelumnya yang secara berkala menyimpan hasil kueri ke dalam cache untuk meningkatkan performa dan efisiensi.

Tampilan yang diotorisasi untuk tampilan logis disebut tampilan yang diotorisasi, tetapi tampilan yang diotorisasi untuk tampilan terwujud disebut tampilan terwujud yang diotorisasi.

Jika tampilan logis bergantung pada kueri yang besar atau mahal secara komputasi, Anda dapat membuat tampilan terwujud sebagai gantinya. Namun, membuat kueri hanya pada subset data atau menggunakan teknik lain sering kali dapat meningkatkan performa tanpa perlu membuat tampilan yang diwujudkan.

Untuk informasi selengkapnya, lihat referensi berikut:

Langkah-langkah tingkat tinggi untuk membuat tampilan yang diotorisasi

Untuk membuat dan membagikan tampilan, tinjau langkah-langkah umum berikut, yang sama untuk tampilan logis yang diotorisasi dan tampilan terwujud yang diotorisasi.

  • Buat set data yang berisi data sumber Anda.
  • Jalankan kueri untuk memuat data ke dalam tabel tujuan di set data sumber.
  • Buat set data yang berisi tampilan resmi Anda.
  • Buat tampilan yang diotorisasi dari kueri SQL yang membatasi kolom yang dapat dilihat oleh analis data Anda dalam hasil kueri.
  • Beri analis data Anda izin untuk menjalankan tugas kueri.
  • Beri analis data Anda akses ke set data yang berisi tampilan yang diotorisasi.
  • Memberikan akses tampilan yang diotorisasi ke set data sumber.

Alternatif

Meskipun tampilan yang diotorisasi bersifat fleksibel dan skalabel, salah satu metode berikut mungkin lebih sesuai untuk kasus penggunaan Anda:

  • Menetapkan kebijakan tingkat baris pada tabel.
  • Menetapkan kebijakan tingkat kolom pada tabel.
  • Simpan data dalam tabel terpisah.
  • Membagikan semua tampilan dalam set data (set data yang diizinkan).

Menggunakan keamanan tingkat baris atau tingkat kolom, atau tabel terpisah

Dengan menetapkan kebijakan akses tingkat baris pada tabel, atau dengan membuat tabel terpisah untuk menyimpan data sensitif, administrator data dapat membatasi kemampuan pengguna untuk melihat data tersebut. Menyimpan data dalam tabel terpisah mengisolasi data dan menghilangkan kemampuan untuk melihat jumlah baris dalam tabel.

Selain itu, dengan membuat dan menerapkan tag kebijakan, administrator data dapat membatasi kemampuan pengguna untuk melihat kolom dalam tabel.

Menyimpan data dalam tabel terpisah adalah metode yang paling aman, tetapi paling tidak fleksibel. Menetapkan kebijakan tingkat baris bersifat fleksibel dan aman, sedangkan berbagi tampilan yang sah bersifat fleksibel dan memberikan performa terbaik.

Untuk membandingkan metode ini secara mendetail, lihat referensi berikut:

Membagikan semua tampilan dalam set data

Jika ingin memberikan akses koleksi tabel virtual ke set data tanpa harus memberi otorisasi setiap tabel virtual tertentu, Anda dapat mengelompokkan tabel virtual ke dalam set data, lalu memberikan set data yang berisi akses tabel virtual ke set data yang berisi data.

Selanjutnya, Anda dapat memberikan akses kepada akun utama ke set data yang berisi grup tabel virtual, atau ke setiap tabel virtual dalam set data, sesuai kebutuhan. Set data yang memiliki akses ke set data lain disebut set data yang diizinkan. Set data yang memberikan otorisasi pada set data lain untuk mengakses datanya disebut set data bersama.

Untuk mengetahui informasi selengkapnya, lihat Set data yang diizinkan dan Mengizinkan set data.

Batasan

  • Saat Anda membuat tampilan yang diotorisasi atau tampilan terwujud yang diotorisasi di set data lain, set data dari data sumber dan set data tampilan yang diotorisasi harus berada di lokasi regional yang sama.
  • Saat Anda menghapus tampilan yang diotorisasi, diperlukan waktu hingga 24 jam untuk menghapus tampilan yang diotorisasi tersebut dari daftar tampilan. Selama waktu ini, Anda tidak dapat mengakses tampilan yang diotorisasi, tetapi tampilan yang dihapus tersebut dapat muncul dalam daftar tampilan, dan dihitung dalam batas tampilan yang diotorisasi. Batas ini dapat mencegah pembuatan tampilan tambahan yang diotorisasi jika tampilan baru yang diotorisasi akan melebihi batas tersebut.

Sebelum memulai

Berikan peran Identity and Access Management (IAM) yang memberi pengguna izin yang diperlukan untuk membuat kueri tampilan yang diizinkan atau tampilan terwujud yang diizinkan yang Anda bagikan.

Peran yang diperlukan

Untuk membuat atau memperbarui tampilan yang diotorisasi, Anda memerlukan izin ke set data yang berisi tampilan dan ke set data yang memberikan akses ke tampilan tersebut.

Anda juga perlu memberi pengguna atau grup akses ke project dan set data yang berisi tampilan.

Izin admin pada set data yang berisi tampilan

Tampilan diperlakukan sebagai resource tabel di BigQuery, sehingga pembuatan tampilan memerlukan izin yang sama seperti pembuatan tabel. Anda juga harus memiliki izin untuk membuat kueri setiap tabel yang direferensikan oleh kueri SQL tampilan.

Untuk membuat tampilan, Anda memerlukan izin IAM bigquery.tables.create. Peran IAM roles/bigquery.dataEditor yang telah ditetapkan mencakup izin yang diperlukan untuk membuat tampilan.

Selain itu, jika Anda memiliki izin bigquery.datasets.create, Anda dapat membuat tampilan dalam set data yang Anda buat. Agar dapat membuat tampilan untuk data yang bukan milik Anda, Anda harus memiliki izin bigquery.tables.getData untuk tabel tersebut.

Untuk mengetahui informasi selengkapnya tentang peran dan izin IAM di BigQuery, lihat Peran dan izin yang telah ditetapkan.

Izin admin pada set data kedua yang memberikan akses ke tampilan

Untuk memperbarui properti set data, Anda memerlukan izin IAM berikut:

  • bigquery.datasets.update
  • bigquery.datasets.setIamPolicy (hanya diperlukan saat memperbarui kontrol akses set data di konsol Trusted Cloud )

Peran IAM roles/bigquery.dataOwner yang telah ditetapkan mencakup izin yang Anda perlukan untuk memperbarui properti set data.

Selain itu, jika memiliki izin bigquery.datasets.create, Anda dapat memperbarui properti set data yang Anda buat.

Untuk mengetahui informasi selengkapnya tentang peran dan izin IAM di BigQuery, lihat Peran dan izin bawaan.

Izin pengguna pada project dan set data untuk tampilan

Untuk membagikan tampilan resmi kepada pengguna atau grup, Anda harus memberi pengguna atau grup izin IAM berikut:

  • Peran IAM roles/bigquery.user ke project yang berisi tampilan yang diotorisasi.
  • Peran IAM roles/bigquery.dataViewer ke set data yang berisi tampilan resmi.

Menggunakan tampilan yang diotorisasi

Bagian berikut menjelaskan cara menggunakan tampilan resmi dan tampilan terwujud resmi.

Membuat tampilan yang diotorisasi

Untuk membuat tampilan yang diotorisasi, pilih salah satu opsi berikut. Untuk mengetahui langkah-langkah lengkap guna mengotorisasi, membagikan, dan menghapus tampilan yang diotorisasi, lihat tutorial Membuat tampilan yang diotorisasi.

Konsol

  1. Buka halaman BigQuery.

    Buka BigQuery

  2. Di editor kueri, ketik kueri yang ingin Anda jadikan dasar untuk tampilan yang diizinkan.

  3. Klik Save > Save view.

  4. Pada dialog Simpan tampilan, lakukan hal berikut:

    1. Untuk Project, ketik project tempat menyimpan tampilan.

    2. Untuk Set data, ketik set data tempat tampilan akan disimpan. Set data ini harus berbeda dengan set data yang digunakan dalam kueri sumber.

    3. Untuk Table, ketik nama tampilan.

    4. Klik Simpan.

  5. Berikan izin yang diperlukan kepada pengguna yang dapat menggunakan tampilan resmi.

  6. Di panel Explorer, pilih set data yang digunakan dalam kueri sumber.

  7. Di panel Detail, klik Berbagi > Otorisasi tampilan.

  8. Di panel Tampilan yang diotorisasi, untuk Tampilan yang diotorisasi, ketik nama tampilan yang sepenuhnya memenuhi syarat, dalam format PROJECT_ID.DATASET_ID.VIEW_NAME.

  9. Klik Tambahkan otorisasi.

Terraform

Untuk melakukan autentikasi ke BigQuery, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, lihat Menyiapkan autentikasi untuk library klien.

# Creates an authorized view.

# Create a dataset to contain the view.
resource "google_bigquery_dataset" "view_dataset" {
  dataset_id  = "view_dataset"
  description = "Dataset that contains the view"
  location    = "us-west1"
}

# Create the view to authorize.
resource "google_bigquery_table" "movie_view" {
  project     = google_bigquery_dataset.view_dataset.project
  dataset_id  = google_bigquery_dataset.view_dataset.dataset_id
  table_id    = "movie_view"
  description = "View to authorize"

  view {
    query          = "SELECT item_id, avg(rating) FROM `movie_project.movie_dataset.movie_ratings` GROUP BY item_id ORDER BY item_id;"
    use_legacy_sql = false
  }
}


# Authorize the view to access the dataset
# that the query data originates from.
resource "google_bigquery_dataset_access" "view_authorization" {
  project    = "movie_project"
  dataset_id = "movie_dataset"

  view {
    project_id = google_bigquery_table.movie_view.project
    dataset_id = google_bigquery_table.movie_view.dataset_id
    table_id   = google_bigquery_table.movie_view.table_id
  }
}

# Specify the IAM policy for principals that can access
# the authorized view. These users should already
# have the roles/bigqueryUser role at the project level.
data "google_iam_policy" "principals_policy" {
  binding {
    role = "roles/bigquery.dataViewer"
    members = [
      "group:example-group@example.com",
    ]
  }
}

# Set the IAM policy on the authorized  view.
resource "google_bigquery_table_iam_policy" "authorized_view_policy" {
  project     = google_bigquery_table.movie_view.project
  dataset_id  = google_bigquery_table.movie_view.dataset_id
  table_id    = google_bigquery_table.movie_view.table_id
  policy_data = data.google_iam_policy.principals_policy.policy_data
}

Untuk menerapkan konfigurasi Terraform di project Trusted Cloud , selesaikan langkah-langkah di bagian berikut.

Menyiapkan Cloud Shell

  1. Luncurkan Cloud Shell.
  2. Tetapkan project default Trusted Cloud 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).

  1. Di Cloud Shell, buat direktori dan file baru di dalam direktori tersebut. Nama file harus memiliki ekstensi .tf—misalnya main.tf. Dalam tutorial ini, file ini disebut sebagai main.tf.
    mkdir DIRECTORY && cd DIRECTORY && touch main.tf
  2. 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.

  3. Tinjau dan ubah contoh parameter untuk diterapkan pada lingkungan Anda.
  4. Simpan perubahan Anda.
  5. 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

  1. Tinjau konfigurasi dan pastikan resource yang akan dibuat atau diupdate oleh Terraform sesuai yang Anda inginkan:
    terraform plan

    Koreksi konfigurasi jika diperlukan.

  2. Terapkan konfigurasi Terraform dengan menjalankan perintah berikut dan memasukkan yes pada prompt:
    terraform apply

    Tunggu hingga Terraform menampilkan pesan "Apply complete!".

  3. Buka Trusted Cloud project Anda untuk melihat hasilnya. Di konsol Trusted Cloud , buka resource Anda di UI untuk memastikan bahwa Terraform telah membuat atau mengupdatenya.

Mengelola pengguna atau grup untuk tampilan resmi

Setelah mengizinkan tampilan, Anda dapat mempertahankan akses ke tampilan tersebut dengan menyelesaikan tugas berikut untuk set data, tabel, atau tampilan:

  • Melihat kebijakan akses.
  • Berikan akses.
  • Mencabut akses.
  • Menolak akses.

Untuk mengetahui informasi selengkapnya, lihat Mengontrol akses ke resource menggunakan IAM.

Menghapus otorisasi ke tampilan

Untuk menghapus otorisasi ke tampilan, pilih salah satu opsi berikut:

Konsol

  1. Buka halaman BigQuery di konsol Trusted Cloud .

    Buka BigQuery

  2. Di panel Explorer, luaskan project Anda dan pilih set data.

  3. Klik Berbagi > Otorisasi tampilan.

  4. Klik untuk Hapus otorisasi.

  5. Klik Close.

bq

Untuk menghapus otorisasi dari tampilan, gunakan perintah bq rm. Masukkan table_id untuk tampilan yang ingin Anda hapus otorisasinya.

    bq rm \
    project_id:dataset:table_id
    

API

Panggil metode tables.delete dan gunakan properti projectID,datasetID, dan tableID untuk menghapus tampilan yang diberi otorisasi untuk set data Anda. Untuk mengetahui informasi selengkapnya, lihat Tabel.

Kuota dan batas

  • Tampilan yang diotorisasi tunduk pada batas set data. Untuk mengetahui informasi selengkapnya, lihat Batas set data.
  • Jika Anda menghapus tampilan yang diotorisasi, perlu waktu hingga 24 jam untuk menghapus semua referensi ke tampilan tersebut dari sistem. Untuk menghindari error, tunggu 24 jam sebelum menggunakan kembali nama tampilan yang dihapus, atau buat nama unik untuk tampilan Anda.

Topik lanjutan

Bagian berikut menjelaskan metode lanjutan untuk menggunakan tampilan yang diizinkan.

Menggabungkan keamanan tingkat baris dengan tampilan yang diizinkan

Data yang ditampilkan dalam tampilan logis atau tampilan terwujud difilter sesuai dengan kebijakan akses tingkat baris tabel sumber yang mendasarinya.

Untuk mengetahui detail tentang cara keamanan tingkat baris berinteraksi dengan tampilan terwujud, lihat Menggunakan keamanan tingkat baris dengan fitur BigQuery lainnya.

Menggabungkan keamanan tingkat kolom dengan tampilan yang diizinkan

Dampak keamanan tingkat kolom pada tampilan tidak bergantung pada apakah tampilan merupakan tampilan yang diotorisasi atau bukan.

Untuk deskripsi mendetail tentang cara izin diterapkan, lihat Tampilan kueri untuk keamanan tingkat kolom.

Menggunakan berbagi BigQuery dengan tampilan resmi

Fitur berbagi BigQuery (sebelumnya Analytics Hub) adalah platform pertukaran data dengan kemampuan berikut:

  • Memungkinkan Anda membagikan data dan insight dalam skala besar di seluruh batas organisasi.
  • Menggunakan framework keamanan dan privasi yang kuat.
  • Mendukung publikasi set data BigQuery, yang disebut set data bersama, serta tampilan resmi dan set data resmi terkaitnya, kepada sekumpulan subscriber.

Set data tertaut adalah set data BigQuery hanya baca yang berfungsi sebagai penunjuk atau referensi ke set data bersama. Berlangganan listingan Berbagi akan membuat set data tertaut di project Anda, bukan salinan set data, sehingga pelanggan dapat membaca data, tetapi tidak dapat menambahkan atau memperbarui objek di dalamnya.

Tabel virtual terwujud yang merujuk ke tabel dalam set data tertaut tidak didukung.

Untuk mengetahui informasi selengkapnya, lihat Pengantar Berbagi.

Langkah berikutnya