Tampilan yang diberi otorisasi

Dokumen ini menjelaskan cara membuat tampilan yang diotorisasi dan tampilan terwujud yang diotorisasi di BigQuery. Sebagai administrator data, Anda dapat membuat tabel virtual yang diizinkan 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 pada data tersebut, 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 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 mengandalkan kueri yang besar atau mahal secara komputasi, Anda dapat membuat tampilan terwujud. 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 umum berikut, yang sama untuk tampilan logis yang diotorisasi dan tampilan terwujud yang diotorisasi.

  • Buat set data untuk menampung data sumber Anda.
  • Jalankan kueri untuk memuat data ke dalam tabel tujuan di set data sumber.
  • Buat set data untuk menampung tampilan yang diotorisasi.
  • Buat tampilan yang diotorisasi dari kueri SQL yang membatasi kolom yang dapat dilihat 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 fleksibel dan skalabel, salah satu metode berikut mungkin lebih cocok untuk kasus penggunaan Anda:

  • Menetapkan kebijakan tingkat baris pada tabel.
  • Menetapkan kebijakan tingkat kolom pada tabel.
  • Menyimpan data dalam tabel terpisah.
  • Membagikan 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 membagikan tampilan yang sah bersifat fleksibel dan memberikan performa terbaik.

Untuk membandingkan metode ini secara mendetail, lihat referensi berikut:

Membagikan semua tabel virtual 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.

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 tabel virtual terkait ke dalam set data yang diizinkan saat Anda mendesain arsitektur BigQuery baru, terutama arsitektur multi-tenant.

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.
  • Anda tidak dapat membuat tampilan yang diizinkan di replika sekunder. Untuk mengetahui informasi selengkapnya, lihat Perilaku resource dalam replikasi set data.

Sebelum memulai

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

Tampilan yang diotorisasi dan Kontrol Layanan VPC

Saat menggunakan tampilan yang diotorisasi dalam perimeter Kontrol Layanan VPC, aturan ingress dan egress harus mengizinkan akun utama mengakses project yang berisi tampilan dan project lain yang berisi data sumber yang diakses oleh tampilan.

Misalnya, dalam diagram berikut, pemanggil di Project R mengakses tampilan yang diotorisasi di Project A yang tabel sumbernya ada di Project B. Dalam hal ini, aturan ingress dan egress Kontrol Layanan VPC harus mengizinkan pemanggil di project R untuk mengakses Project A dan Project B menggunakan layanan BigQuery.

alt

Izin yang diperlukan untuk akses Kontrol Layanan VPC

Akun utama tidak memerlukan izin Identity and Access Management di project data sumber, tetapi aturan ingress harus mengizinkan akses ke layanan BigQuery di project sumber yang berisi tabel sumber, selain mengizinkan akses ke project yang berisi tampilan.

Untuk mengetahui informasi tentang peran dan izin yang diperlukan, lihat Izin pengguna pada project dan set data.

Aturan ingress dan egress

Contoh aturan ingress dan egress Kontrol Layanan VPC berikut memungkinkan BigQuery API mengakses project sumber dan tampilan.

Misalnya, jika Anda membuat tampilan di PROJECT_A (tampilan) yang mengakses data di PROJECT_B (sumber), Anda memerlukan kumpulan aturan ingress berikut untuk PROJECT_B dan kumpulan aturan ingress lainnya untuk PROJECT_A:

- ingressFrom:
    identityType: caller_r
    sources:
    - resource:
      - projects/project_r
  ingressTo:
    operations:
    - serviceName: bigquery.googleapis.com
      methodSelectors:
      - method: *
    resources:
    - projects/project_b
  title: Ingress rules for the source project

File YAML berikut menunjukkan kumpulan aturan egress untuk PROJECT_B (sumber). Anda juga memerlukan serangkaian aturan egress untuk PROJECT_A (tampilan):

- egressTo:
    operations:
    - serviceName: bigquery.googleapis.com
      methodSelectors:
      - method: *
    resources:
    - projects/project_b
  egressFrom:
    identityType: caller_r
    sources:
    - resource:
      - projects/project_r
  title: Egress rules for the source project

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 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 pada project.
  • Untuk membuat tampilan, Anda memerlukan izin IAM bigquery.tables.create pada set data. Peran IAM roles/bigquery.dataEditor yang telah ditetapkan mencakup izin yang diperlukan untuk membuat tampilan.
  • Untuk membuat tampilan yang mengkueri 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 memberikan otorisasi pada tampilan, tampilan tersebut diberi izin baca ke set data yang berisi 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 guna memperbarui set data, lihat izin yang diperlukan.

Izin pengguna pada project dan set data untuk tampilan

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

  • Peran IAM roles/bigquery.jobUser (atau roles/bigquery.user) ke project tempat tugas kueri dijalankan (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 diizinkan. Peran ini memberikan izin bigquery.tables.getData, yang diperlukan untuk membuat kueri tampilan.

    Jika pengguna mengkueri tampilan yang diizinkan dari project terpisah, mereka tidak memerlukan peran roles/bigquery.jobUser pada project yang menghosting tampilan tersebut. Mereka memerlukan peran roles/bigquery.dataViewer pada set data yang berisi tampilan, dan mereka memerlukan peran roles/bigquery.jobUser pada project tempat kueri dijalankan.

Menggunakan tampilan yang diotorisasi

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

Membuat tampilan yang diotorisasi

Untuk membuat tampilan yang diotorisasi, pilih salah satu opsi berikut. Untuk mengetahui langkah-langkah lengkap dalam mengizinkan, 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 File > Save > Save view.

  4. Pada dialog Save view, lakukan tindakan 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 Simpan.

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

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

Menyiapkan Cloud Shell

  1. Luncurkan Cloud Shell.
  2. 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).

  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 Google Cloud Anda untuk melihat hasilnya. Di konsol Google Cloud , buka resource Anda di UI untuk memastikan bahwa Terraform telah membuat atau mengupdatenya.

Mengelola pengguna atau grup untuk tampilan yang diotorisasi

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.
  • Cabut akses.
  • Tolak 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 Google Cloud .

    Buka BigQuery

  2. Di panel kiri, klik Explorer:

    Tombol yang ditandai untuk panel Explorer.

    Jika Anda tidak melihat panel kiri, klik Luaskan panel kiri untuk membuka panel.

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

  4. Klik Overview > Tables, lalu pilih tabel.

  5. Klik Berbagi > Otorisasi tampilan.

  6. Klik untuk Menghapus otorisasi.

  7. Klik Close.

bq

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

    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.

Otorisasi yang dicabut dan Kontrol Layanan VPC

Saat tampilan yang diotorisasi mengakses data dalam set data sumber di seluruh perimeter Kontrol Layanan VPC, kueri tampilan akan mengabaikan pemeriksaan Kontrol Layanan VPC standar terhadap tabel dasar yang mendasarinya.

Jika Anda mencabut atau menghapus otorisasi untuk tampilan dari set data sumber, BigQuery akan kembali ke pemeriksaan otorisasi standar dan mengkueri tabel dasar dalam project sumber secara langsung. Jika tabel dasar tersebut melewati batas perimeter Kontrol Layanan VPC tanpa aturan egress eksplisit yang mengizinkan akses tabel langsung, Kontrol Layanan VPC akan memblokir kueri dan menampilkan error pelanggaran ingress atau egress.

Saat Anda memulihkan otorisasi untuk tampilan pada set data sumber, BigQuery akan kembali mengabaikan pemeriksaan tabel dasar langsung, dan hal ini akan menyelesaikan error Kontrol Layanan VPC.

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 dalam 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 mengetahui deskripsi mendetail tentang cara penerapan izin, lihat Tampilan kueri untuk keamanan tingkat kolom.

Menggunakan BigQuery sharing 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 listingan Berbagi akan membuat set data tertaut dalam project Anda, tetapi bukan salinan set data, sehingga pelanggan dapat membaca data, tetapi tidak dapat menambahkan atau memperbarui objek di dalamnya.

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

Untuk mengetahui informasi selengkapnya, lihat Pengantar Berbagi.

Langkah berikutnya