Mengontrol akses ke setiap tabel dengan IAM

Dokumen ini menunjukkan cara memberikan dan mencabut peran Identity and Access Management (IAM) BigQuery untuk setiap tabel dan tampilan Dataform.

Dataform dan BigQuery menggunakan IAM untuk kontrol akses. Untuk mengetahui informasi selengkapnya tentang peran dan izin Dataform di IAM, lihat Mengontrol akses dengan IAM.

Saat menjalankan tabel atau tampilan, Dataform akan membuat resource di BigQuery. Selama pengembangan di Dataform, Anda dapat memberikan peran BigQuery ke setiap tabel dan tampilan untuk mengontrol aksesnya di BigQuery setelah dieksekusi.

Untuk mengetahui informasi selengkapnya tentang cara memberikan dan mencabut akses ke resource, lihat Memberikan akses ke resource.

Sebelum memulai

  1. Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  3. Make sure that billing is enabled for your Google Cloud project.

  4. Enable the BigQuery and Dataform APIs.

    Enable the APIs

  5. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  6. Make sure that billing is enabled for your Google Cloud project.

  7. Enable the BigQuery and Dataform APIs.

    Enable the APIs

Memberikan peran BigQuery ke tabel atau tampilan

Anda dapat memberikan peran BigQuery ke tabel atau tampilan di Dataform dengan menambahkan blok post_operations dengan pernyataan DCL GRANT ke file definisi .sqlx dari tabel atau tampilan yang dipilih.

Untuk memberikan peran BigQuery ke tabel atau tampilan yang dipilih, ikuti langkah-langkah berikut:

  1. Di konsol Google Cloud, buka halaman Dataform.

    Buka halaman Dataform

  2. Pilih repositori, lalu pilih ruang kerja.

  3. Di panel Files, luaskan direktori definitions/.

  4. Pilih file definisi .sqlx tabel atau tampilan yang ingin Anda berikan akses.

  5. Di file tersebut, masukkan cuplikan kode berikut:

    post_operations {
        GRANT "ROLE_LIST"
        ON "RESOURCE_TYPE" ${self()}
        TO "USER_LIST"
    }
    

    Ganti kode berikut:

    • ROLE_LIST: peran BigQuery atau daftar peran BigQuery yang dipisahkan koma yang ingin Anda berikan.

    • RESOURCE_TYPE: TABLE atau VIEW.

    • USER_LIST: daftar pengguna yang dipisahkan koma yang diberi peran.

      Untuk daftar format yang valid, lihat user_list.

  6. Opsional: Klik Format.

  7. Jalankan tabel atau tampilan.

  8. Jika Anda memberikan akses pada tabel inkremental, hapus pernyataan GRANT dari file definisi tabel setelah eksekusi pertama.

Contoh kode berikut menunjukkan peran BigQuery Viewer yang diberikan pada tabel kepada pengguna:

config { type: "table" }

SELECT ...

post_operations {
  GRANT `roles/bigquery.dataViewer`
  ON TABLE ${self()}
  TO "user:222larabrown@gmail.com"
}

Cabut peran BigQuery dari tabel atau tampilan

Anda dapat mencabut peran BigQuery dari tabel atau tampilan dengan menambahkan blok post_operations dengan pernyataan DCL REVOKE ke file definisi .sqlx dari tabel atau tampilan yang dipilih.

Untuk mencabut peran BigQuery dari tabel atau tampilan yang dipilih, ikuti langkah-langkah berikut:

  1. Di konsol Google Cloud, buka halaman Dataform.

    Buka halaman Dataform

  2. Pilih repositori, lalu pilih ruang kerja.

  3. Di panel Files, luaskan direktori definitions/.

  4. Pilih file definisi .sqlx tabel atau tampilan yang aksesnya ingin Anda cabut.

  5. Di blok post_operations, masukkan pernyataan REVOKE berikut:

        REVOKE "ROLE_LIST"
        ON "RESOURCE_TYPE" ${self()}
        TO "USER_LIST"
    

    Ganti kode berikut:

    • ROLE_LIST: peran BigQuery atau daftar peran BigQuery yang dipisahkan koma yang ingin Anda cabut.
    • RESOURCE_TYPE: TABLE atau VIEW.
    • USER_LIST: daftar pengguna yang dipisahkan koma yang perannya dicabut. Untuk daftar format yang valid, lihat user_list.
  6. Untuk mencabut akses yang diberikan dalam pernyataan GRANT dalam file, ganti pernyataan GRANT dengan pernyataan REVOKE.

  7. Opsional: Klik Format.

  8. Jalankan tabel atau tampilan.

  9. Jika Anda mencabut akses ke tabel inkremental, hapus pernyataan REVOKE dari file definisi tabel setelah eksekusi pertama.

Contoh kode berikut menunjukkan peran BigQuery Viewer yang dicabut dari pengguna di tabel:

config { type: "table" }

SELECT ...

post_operations {
  REVOKE `roles/bigquery.dataViewer`
  ON TABLE ${self()}
  FROM "user:222larabrown@gmail.com"
}

Mengelola peran BigQuery secara kolektif untuk tabel dan tampilan

Untuk mengontrol akses BigQuery ke setiap tabel dan tampilan di satu lokasi, Anda dapat membuat file type: "operations" khusus dengan pernyataan DCL GRANT dan REVOKE.

Untuk mengelola akses tabel BigQuery dalam satu file type: "operations", ikuti langkah-langkah berikut:

  1. Di konsol Google Cloud, buka halaman Dataform.

    Buka halaman Dataform

  2. Pilih repositori, lalu pilih ruang kerja.

  3. Di panel Files, di samping definitions/, klik menu More.

  4. Klik Create file.

  5. Di kolom Add a file path, masukkan nama file, diikuti dengan .sqlx setelah definitions/. Contohnya, definitions/table-access.sqlx

    Nama file hanya boleh berisi angka, huruf, tanda hubung, dan garis bawah.

  6. Klik Create file.

  7. Di panel Files, luaskan direktori definitions/, lalu pilih file yang baru dibuat.

  8. Di file tersebut, masukkan cuplikan kode berikut:

      config { type: "operations" }
    
      GRANT "ROLE_LIST"
      ON RESOURCE_TYPE RESOURCE_NAME
      TO "USER_LIST"
    
      REVOKE "ROLE_LIST"
      ON { "<var>" }}RESOURCE_TYPE RESOURCE_NAME
      TO "USER_LIST"
    

    Ganti kode berikut:

    • ROLE_LIST: peran BigQuery atau daftar peran BigQuery yang dipisahkan koma yang ingin Anda berikan atau cabut.
    • RESOURCE_TYPE: TABLE atau VIEW.
    • RESOURCE_NAME: nama tabel atau tampilan.
    • USER_LIST: daftar pengguna yang dipisahkan koma yang mendapatkan atau dicabut peran. Untuk daftar format yang valid, lihat user_list.
  9. Tambahkan pernyataan GRANT dan REVOKE sesuai kebutuhan.

    1. Untuk mencabut akses yang diberikan dalam pernyataan GRANT dalam file, ganti pernyataan GRANT dengan pernyataan REVOKE.

      Menghapus pernyataan GRANT tanpa menambahkan pernyataan REVOKE tidak akan mencabut akses.

  10. Opsional: Klik Format.

  11. Jalankan file setelah setiap update.

    1. Jika Anda memberikan atau mencabut akses pada tabel inkremental, hapus pernyataan GRANT atau REVOKE dari file setelah eksekusi pertama pernyataan.

Langkah selanjutnya