OBJECT_PRIVILEGES 뷰
INFORMATION_SCHEMA.OBJECT_PRIVILEGES
뷰는 BigQuery 객체에 명시적으로 설정된 액세스 제어 바인딩에 대한 메타데이터를 포함합니다.
이 뷰는 상속된 액세스 제어 바인딩에 대한 메타데이터를 포함하지 않습니다.
필수 권한
INFORMATION_SCHEMA.OBJECT_PRIVILEGES
뷰를 쿼리하려면 다음 Identity and Access Management(IAM) 권한이 필요합니다.
- 데이터 세트의 경우
bigquery.datasets.get
- 테이블 및 뷰의 경우
bigquery.tables.getIamPolicy
BigQuery 권한에 대한 자세한 내용은 IAM으로 액세스 제어를 참조하세요.
스키마
INFORMATION_SCHEMA.OBJECT_PRIVILEGES
뷰를 쿼리하면 리소스의 각 액세스 제어 바인딩에 대해 하나의 행이 쿼리 결과에 포함됩니다.
INFORMATION_SCHEMA.OBJECT_PRIVILEGES
뷰에는 다음과 같은 스키마가 있습니다.
열 이름 | 데이터 유형 | 값 |
---|---|---|
OBJECT_CATALOG |
STRING |
리소스가 포함된 프로젝트의 프로젝트 ID입니다. |
OBJECT_SCHEMA |
STRING |
리소스가 포함된 데이터 세트의 이름입니다. 리소스 자체가 데이터 세트인 경우 NULL 입니다. |
OBJECT_NAME |
STRING |
정책이 적용되는 테이블, 뷰 또는 데이터 세트의 이름입니다. |
OBJECT_TYPE |
STRING |
SCHEMA (데이터 세트), TABLE , VIEW , EXTERNAL 과 같은 리소스 유형입니다.
|
PRIVILEGE_TYPE |
STRING |
roles/bigquery.dataEditor 와 같은 역할 ID입니다. |
GRANTEE |
STRING |
역할이 부여된 사용자 유형 및 사용자입니다. |
범위 및 구문
이 뷰에 대한 쿼리에는 리전 한정자가 있어야 합니다. 프로젝트 ID는 선택사항입니다. 프로젝트 ID를 지정하지 않으면 쿼리가 실행되는 프로젝트가 사용됩니다. 다음 표에는 이 뷰의 리전 범위가 나와 있습니다.
뷰 이름 | 리소스 범위 | 리전 범위 |
---|---|---|
[PROJECT_ID.]`region-REGION`.INFORMATION_SCHEMA.OBJECT_PRIVILEGES |
프로젝트 수준 | REGION |
- (선택사항)
PROJECT_ID
: Google Cloud 프로젝트의 ID입니다. 지정하지 않으면 기본 프로젝트가 사용됩니다.
REGION
: 모든 데이터 세트 리전 이름입니다.
예를 들면 region-us
입니다.
예시
-- Returns metadata for the access control bindings for mydataset.
SELECT * FROM myproject.`region-us`.INFORMATION_SCHEMA.OBJECT_PRIVILEGES
WHERE object_name = "mydataset";
제한사항
OBJECT_PRIVILEGES
쿼리에는 단일 데이터 세트, 테이블, 뷰로 쿼리를 제한하는WHERE
절이 있어야 합니다.- 데이터 세트에 대해 액세스 제어 메타데이터를 검색하는 쿼리는
object_name
을 지정해야 합니다. - 테이블 또는 뷰의 액세스 제어 메타데이터를 검색하는 쿼리는
object_name
및object_schema
를 모두 지정해야 합니다.
예시
다음 예시에서는 INFORMATION_SCHEMA.OBJECT_PRIVILEGES
뷰의 모든 열을 검색합니다.
쿼리가 실행되는 프로젝트가 아닌 다른 프로젝트에 대해 쿼리를 실행하려면 `project_id`.`region_id`.INFORMATION_SCHEMA.OBJECT_PRIVILEGES
형식으로 프로젝트 ID를 해당 리전에 추가합니다.
다음 예시는 mycompany
프로젝트의 mydataset
데이터 세트에 대해 모든 액세스 제어 메타데이터를 가져옵니다.
SELECT *
FROM mycompany.`region-us`.INFORMATION_SCHEMA.OBJECT_PRIVILEGES
WHERE object_name = "mydataset"
다음과 같은 결과가 표시됩니다.
+----------------+---------------+-------------+-------------+---------------------------+-----------------------------------+ | 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 | +----------------+---------------+-------------+-------------+---------------------------+-----------------------------------+
다음 예시에서는 mydataset
데이터 세트에서 testdata
테이블에 대해 모든 액세스 제어 정보를 가져옵니다.
SELECT *
FROM mycompany.`region-us`.INFORMATION_SCHEMA.OBJECT_PRIVILEGES
WHERE object_schema = "mydataset" AND object_name = "testdata"
다음과 같은 결과가 표시됩니다.
+----------------+---------------+--------------+-------------+----------------------+------------------------------------+ | object_catalog | object_schema | object_name | object_type | privilege_type | grantee | +----------------+---------------+--------------+-------------+----------------------+------------------------------------+ | mycompany | mydataset | testdata | TABLE | roles/bigquery.admin | user:baklavainthebalkans@gmail.com | +----------------+---------------+--------------+-------------+----------------------+------------------------------------+
INFORMATION_SCHEMA.OBJECT_PRIVILEGES
뷰에는 명시적으로 설정된 액세스 제어 바인딩만 표시됩니다. 첫 번째 예시는 cloudysanfrancisco@gmail.com
사용자가 mydataset
데이터 세트에 대한 bigquery.dataOwner
역할을 가지고 있음을 보여줍니다. cloudysanfrancisco@gmail.com
사용자는 testdata
테이블을 포함하여 mydataset
에서 테이블을 만들고, 업데이트하고, 삭제할 수 있는 권한을 상속받습니다. 그러나 이러한 권한이 testdata
테이블에 명시적으로 부여되지 않았기 때문에 두 번째 예시의 결과에는 나타나지 않습니다.