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 |
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 klausaWHERE
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
DANobject_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.