Tampilan yang diotorisasi

Dokumen ini menjelaskan cara membuat tampilan yang diotorisasi dan tampilan terwujud yang diotorisasi di BigQuery. Sebagai administrator data, Anda dapat membuat tampilan yang diotorisasi untuk membagikan subset data dalam set data kepada pengguna dan grup (akun utama) tertentu. Akun utama 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 diprakomputasi yang secara berkala meng-cache hasil kueri 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. Untuk memahami kasus penggunaan tampilan logis dan terwujud, lihat Ringkasan tampilan logis dan terwujud.

Langkah-langkah tingkat tinggi untuk membuat tampilan yang diotorisasi

Untuk membuat dan membagikan tampilan, tinjau langkah-langkah tingkat tinggi ini, yang sama untuk tampilan logis yang diotorisasi dan tampilan terwujud yang diotorisasi.

  • Buat set data untuk berisi data sumber Anda.
  • Jalankan kueri untuk memuat data ke dalam tabel tujuan di set data sumber.
  • Buat set data untuk berisi tampilan yang diotorisasi.
  • Buat tampilan yang diotorisasi dari kueri SQL yang membatasi kolom yang dapat dilihat oleh analis data Anda dalam hasil kueri.
  • Berikan izin kepada analis data Anda untuk menjalankan tugas kueri.
  • Berikan akses kepada analis data Anda ke set data yang berisi tampilan yang diotorisasi.
  • Berikan 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:

  • Tetapkan kebijakan tingkat baris pada tabel.
  • Tetapkan kebijakan tingkat kolom pada tabel.
  • Simpan data dalam tabel terpisah.
  • Bagikan semua tampilan dalam set data (set data yang diotorisasi).

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 akan mengisolasi data dan menghapus kemampuan untuk melihat jumlah baris yang ada 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 diotorisasi 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 tampilan ke set data tanpa harus memberi otorisasi setiap tampilan tertentu, Anda dapat mengelompokkan tampilan ke dalam set data, lalu memberikan set data yang berisi akses tampilan ke set data yang berisi data.

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

Daftar kontrol akses set data dapat memiliki hingga total 2.500 resource yang diotorisasi, termasuk tampilan yang diotorisasi, set data yang diotorisasi, dan fungsi yang diotorisasi. Jika Anda melebihi batas ini karena banyaknya tampilan yang diotorisasi, pertimbangkan untuk mengelompokkan tampilan ke dalam set data yang diotorisasi. Sebagai praktik terbaik, kelompokkan tampilan terkait ke dalam set data yang diotorisasi saat Anda mendesain arsitektur BigQuery baru, terutama arsitektur multi-tenant.

Untuk mengetahui informasi selengkapnya, lihat Set data yang diotorisasi dan Mengotorisasi set data.

Batasan

  • Saat Anda membuat tampilan yang diotorisasi atau tampilan terwujud yang diotorisasi di set data lain, set data data sumber dan set data tampilan yang diotorisasi harus berada di lokasi regional yang sama .
  • Saat Anda menghapus tampilan yang diotorisasi, perlu waktu hingga 24 jam untuk menghapus tampilan yang diotorisasi dari daftar tampilan. Selama waktu ini, Anda tidak dapat mengakses tampilan yang diotorisasi, tetapi tampilan yang diotorisasi yang dihapus dapat muncul dalam daftar tampilan, dan dihitung terhadap batas tampilan yang diotorisasi yang diotorisasi. Batas ini dapat mencegah pembuatan tampilan tambahan yang diotorisasi jika tampilan baru yang diotorisasi akan melebihi batas tersebut.
  • Anda tidak dapat membuat tampilan yang diotorisasi di replika sekunder. Untuk mengetahui informasi selengkapnya, lihat Perilaku resource dalam set data replikasi.

Sebelum memulai

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

Tampilan yang diotorisasi dan Kontrol Layanan VPC

Saat menggunakan tampilan yang diotorisasi dalam perimeter Kontrol Layanan VPC, aturan ingress yang memungkinkan akun utama mengakses project yang berisi tampilan juga harus menyertakan akses ke project mana pun yang berisi data sumber tempat tampilan mengakses data. Akun utama tidak memerlukan izin Identity and Access Management pada project data sumber, tetapi aturan ingress harus mengizinkan akses ke BigQuery di project sumber data selain project yang berisi tampilan.

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.

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

Izin 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 set data, Anda memerlukan izin IAM bigquery.datasets.create di project.
  • Untuk membuat tampilan, Anda memerlukan izin IAM bigquery.tables.create di set data. Peran IAM yang telah ditetapkan roles/bigquery.dataEditor mencakup izin yang diperlukan untuk membuat tampilan.
  • Untuk membuat tampilan yang membuat kueri tabel yang tidak dapat Anda akses, Anda harus diberi izin bigquery.tables.getData pada tabel yang dikueri oleh tampilan.

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

Izin pada set data yang berisi data sumber

Untuk mengotorisasi tampilan, tampilan diberi izin baca ke set data data sumber.

Untuk melakukan otorisasi ini, Anda memerlukan izin berikut pada set data yang berisi data sumber:

  • bigquery.datasets.update
  • datasets.getIamPolicy
  • datasets.setIamPolicy

Untuk izin tambahan yang diperlukan untuk memperbarui set data, lihat izin yang diperlukan.

Izin pengguna pada project dan set data untuk tampilan

Untuk membagikan tampilan yang diotorisasi kepada pengguna atau grup, Anda harus memberikan izin IAM berikut kepada pengguna atau grup:

  • Peran IAM roles/bigquery.jobUser (atau roles/bigquery.user) ke project tempat tugas kueri berjalan (project penagihan atau eksekusi). Peran ini memberikan izin bigquery.jobs.create yang diperlukan untuk menjalankan tugas kueri terhadap tampilan.

    Peran IAM roles/bigquery.jobUser hanya diperlukan untuk project tempat Anda ingin menjalankan tugas, terlepas dari tempat tampilan dihosting.

  • Peran IAM roles/bigquery.dataViewer ke set data yang berisi tampilan yang diotorisasi. Peran ini memberikan izin bigquery.tables.getData, yang diperlukan untuk membuat kueri tampilan.

    Jika pengguna membuat kueri tampilan yang diotorisasi dari project terpisah, mereka tidak memerlukan peran roles/bigquery.jobUser di project yang menghosting tampilan. Mereka memerlukan peran roles/bigquery.dataViewer di set data yang berisi tampilan, dan mereka memerlukan peran roles/bigquery.jobUser di project tempat kueri berjalan.

Menggunakan tampilan yang diotorisasi

Bagian berikut menjelaskan cara menggunakan tampilan yang diotorisasi dan tampilan terwujud yang diotorisasi.

Membuat tampilan yang diotorisasi

Untuk membuat tampilan yang diotorisasi, pilih salah satu opsi berikut. Untuk 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 gunakan sebagai dasar tampilan yang diotorisasi.

  3. Klik Save > Save view.

  4. Di dialog Save view, lakukan hal berikut:

    1. Untuk Project, ketik project tempat menyimpan tampilan.

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

    3. Untuk Table, ketik nama tampilan.

    4. Klik Save.

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

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

  7. Di panel Details, klik Sharing > Authorize views.

  8. Di panel Authorized views, untuk Authorized view, ketik nama tampilan yang sepenuhnya memenuhi syarat, dalam format PROJECT_ID.DATASET_ID.VIEW_NAME.

  9. Klik Add authorization.

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 a Google Cloud project, selesaikan langkah-langkah di bagian berikut.

Menyiapkan Cloud Shell

  1. Luncurkan Cloud Shell.
  2. Tetapkan default Google Cloud project 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 project Anda Google Cloud untuk melihat hasilnya. Di Google Cloud konsol, buka resource Anda di UI untuk memastikan Terraform telah membuat atau memperbaruinya.

Mengelola pengguna atau grup untuk tampilan yang diotorisasi

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

  • Melihat kebijakan akses.
  • Memberikan 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 Google Cloud konsol.

    Buka BigQuery

  2. Di panel kiri, klik Explorer:

    Tombol yang ditandai untuk panel Explorer.

    Jika Anda tidak melihat panel kiri, klik Expand left pane untuk membuka panel.

  3. Di panel Explorer, luaskan project Anda, klik Datasets, dan lalu pilih set data.

  4. Klik Overview > Tables, lalu pilih tabel.

  5. Klik Sharing > Authorize views.

  6. Klik untuk Remove authorization.

  7. Klik Close.

bq

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

    bq rm \
    project_id:dataset:table_id
    

API

Panggil metode tables.delete dan gunakan properti projectID,datasetID, dan tableID untuk menghapus tampilan yang diotorisasi 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 diotorisasi.

Menggabungkan keamanan tingkat baris dengan tampilan yang diotorisasi

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 diotorisasi

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

Untuk mengetahui deskripsi mendetail tentang cara izin diterapkan, lihat Membuat kueri tampilan untuk keamanan tingkat kolom.

Menggunakan berbagi BigQuery dengan tampilan yang diotorisasi

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

  • Memungkinkan Anda berbagi 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 yang diotorisasi dan set data yang diotorisasi terkait, ke sekumpulan pelanggan.

Set data tertaut adalah set data BigQuery hanya baca yang berfungsi sebagai pointer atau referensi ke set data bersama. Berlangganan ke listing Berbagi akan membuat set data tertaut di project Anda, tetapi 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