Tabel Virtual OBJECT_PRIVILEGES

Tabel virtual INFORMATION_SCHEMA.OBJECT_PRIVILEGES berisi metadata tentang binding kontrol akses yang secara eksplisit ditetapkan pada objek BigQuery. Tabel virtual ini tidak berisi metadata tentang binding kontrol akses yang diwarisi.

Izin yang diperlukan

Untuk membuat kueri tabel virtual INFORMATION_SCHEMA.OBJECT_PRIVILEGES, Anda memerlukan izin Identity and Access Management (IAM) berikut:

  • bigquery.datasets.get untuk set data.
  • bigquery.tables.getIamPolicy untuk tabel dan tabel virtual.

Untuk mengetahui informasi selengkapnya tentang izin BigQuery, lihat Kontrol akses dengan IAM.

Skema

Saat Anda membuat kueri tabel virtual INFORMATION_SCHEMA.OBJECT_PRIVILEGES, hasil kueri akan berisi satu baris untuk setiap binding kontrol akses untuk suatu resource.

Tabel virtual INFORMATION_SCHEMA.OBJECT_PRIVILEGES memiliki skema berikut:

Nama kolom Jenis data Nilai
OBJECT_CATALOG STRING Project ID dari project yang berisi resource.
OBJECT_SCHEMA STRING Nama set data yang berisi resource. Ini adalah NULL jika resource itu sendiri adalah set data.
OBJECT_NAME STRING Nama tabel, tampilan, atau set data yang menjadi tujuan penerapan kebijakan.
OBJECT_TYPE STRING Jenis resource, seperti SCHEMA (set data), TABLE, VIEW, dan EXTERNAL.
PRIVILEGE_TYPE STRING ID peran, seperti roles/bigquery.dataEditor.
GRANTEE STRING Jenis pengguna dan pengguna yang diberi peran.

Cakupan dan sintaksis

Kueri terhadap tabel virtual ini harus menyertakan penentu region. Project ID bersifat opsional. Jika project ID tidak ditentukan, project tempat kueri dijalankan akan digunakan. Tabel berikut menjelaskan cakupan wilayah untuk tabel virtual ini:

Nama tabel virtual Cakupan resource Cakupan region
[PROJECT_ID.]`region-REGION`.INFORMATION_SCHEMA.OBJECT_PRIVILEGES Level project REGION
Ganti kode berikut:

  • Opsional: PROJECT_ID: ID project Google Cloud Anda. Jika tidak ditentukan, project default akan digunakan.

  • REGION: nama region set data apa pun. Misalnya, `region-us`.

  • Contoh

    -- Returns metadata for the access control bindings for mydataset.
    SELECT * FROM myproject.`region-us`.INFORMATION_SCHEMA.OBJECT_PRIVILEGES
    WHERE object_name = "mydataset";
    

    Batasan

    • Kueri OBJECT_PRIVILEGES harus berisi klausa WHERE yang membatasi kueri ke satu set data, tabel, atau tabel virtual.
    • Kueri untuk mengambil metadata kontrol akses bagi set data harus menentukan object_name.
    • Kueri untuk mengambil metadata kontrol akses untuk tabel atau tabel virtual harus menentukan object_name DAN object_schema.

    Contoh

    Contoh berikut mengambil semua kolom dari tabel virtual INFORMATION_SCHEMA.OBJECT_PRIVILEGES.

    Untuk menjalankan kueri terhadap project selain project tempat kueri berjalan, tambahkan project ID ke region dalam format berikut: `project_id`.`region_id`.INFORMATION_SCHEMA.OBJECT_PRIVILEGES.

    Contoh berikut mendapatkan semua metadata kontrol akses untuk set data mydataset di project mycompany:

    SELECT *
    FROM mycompany.`region-us`.INFORMATION_SCHEMA.OBJECT_PRIVILEGES
    WHERE object_name = "mydataset"
    

    Hasilnya akan terlihat seperti berikut ini:

      +----------------+---------------+-------------+-------------+---------------------------+-----------------------------------+
      | object_catalog | object_schema | object_name | object_type |  privilege_type           | grantee                           |
      +----------------+---------------+-------------+-------------+---------------------------+-----------------------------------+
      | mycompany      | NULL          | mydataset   | SCHEMA      | roles/bigquery.dataEditor | projectEditor:mycompany           |
      +----------------+---------------+-------------+-------------+---------------------------+-----------------------------------+
      | mycompany      | NULL          | mydataset   | SCHEMA      | roles/bigquery.dataOwner  | projectOwner:mycompany            |
      +----------------+---------------+-------------+-------------+---------------------------+-----------------------------------+
      | mycompany      | NULL          | mydataset   | SCHEMA      | roles/bigquery.dataOwner  | user:cloudysanfrancisco@gmail.com |
      +----------------+---------------+-------------+-------------+---------------------------+-----------------------------------+
      | mycompany      | NULL          | mydataset   | SCHEMA      | roles/bigquery.dataViwer  | projectViewer:mycompany           |
      +----------------+---------------+-------------+-------------+---------------------------+-----------------------------------+
      

    Contoh berikut mendapatkan semua informasi kontrol akses untuk tabel testdata dalam set data mydataset:

    SELECT *
    FROM mycompany.`region-us`.INFORMATION_SCHEMA.OBJECT_PRIVILEGES
    WHERE object_schema = "mydataset" AND object_name = "testdata"
    

    Hasilnya akan terlihat seperti berikut:

      +----------------+---------------+--------------+-------------+----------------------+------------------------------------+
      | object_catalog | object_schema |  object_name | object_type |  privilege_type      | grantee                            |
      +----------------+---------------+--------------+-------------+----------------------+------------------------------------+
      | mycompany      | mydataset     | testdata     | TABLE       | roles/bigquery.admin | user:baklavainthebalkans@gmail.com |
      +----------------+---------------+--------------+-------------+----------------------+------------------------------------+
      

    Tampilan INFORMATION_SCHEMA.OBJECT_PRIVILEGES hanya menampilkan binding kontrol akses yang ditetapkan secara eksplisit. Contoh pertama menunjukkan bahwa pengguna cloudysanfrancisco@gmail.com memiliki peran bigquery.dataOwner pada set data mydataset. Pengguna cloudysanfrancisco@gmail.com mewarisi izin untuk membuat, memperbarui, dan menghapus tabel di mydataset, termasuk tabel testdata. Namun, karena izin tersebut tidak diberikan secara eksplisit pada tabel testdata, izin tersebut tidak muncul dalam hasil contoh kedua.