Dataform 和 BigQuery 使用 IAM 进行访问权限控制。如需详细了解 IAM 中的 Dataform 角色和权限,请参阅使用 IAM 控制访问权限。
当 Dataform 执行表或视图时,它会在 BigQuery 中创建相应资源。在 Dataform 中进行开发时,您可以向各个表和视图授予 BigQuery 角色,以便在执行后控制它们在 BigQuery 中的访问权限。
如需详细了解如何授予和撤消对资源的访问权限,请参阅授予对资源的访问权限。
准备工作
- 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.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Verify that billing is enabled for your Google Cloud project.
-
Enable the BigQuery and Dataform APIs.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Verify that billing is enabled for your Google Cloud project.
-
Enable the BigQuery and Dataform APIs.
向表或视图授予 BigQuery 角色
您可以通过将包含 GRANT
DCL 语句的 post_operations
块添加到所选表或视图的 .sqlx
定义文件,向 Dataform 中的表或视图授予 BigQuery 角色。
如需向所选表或视图授予 BigQuery 角色,请按以下步骤操作:
在 Google Cloud 控制台中,进入 Dataform 页面。
选择一个代码库,然后选择一个工作区。
在文件窗格中,展开
definitions/
目录。选择您要授予访问权限的表格或视图的
.sqlx
定义文件。在文件中输入以下代码段:
post_operations { GRANT "ROLE_LIST" ON "RESOURCE_TYPE" ${self()} TO "USER_LIST" }
替换以下内容:
ROLE_LIST:您要授予的 BigQuery 角色或以英文逗号分隔的 BigQuery 角色列表。
RESOURCE_TYPE:
TABLE
或VIEW
。USER_LIST:为其授予角色的以英文逗号分隔的用户列表。
如需查看有效格式的列表,请参阅 user_list。
可选:点击格式。
执行表或视图。
如果您授予了对增量表的访问权限,请在首次执行后从表定义文件中移除
GRANT
语句。
以下代码示例展示了向用户授予表的 BigQuery Viewer 角色:
config { type: "table" }
SELECT ...
post_operations {
GRANT `roles/bigquery.dataViewer`
ON TABLE ${self()}
TO "user:222larabrown@gmail.com"
}
从表或视图中撤消 BigQuery 角色
如需从表或视图中撤消 BigQuery 角色,请将包含 REVOKE
DCL 语句的 post_operations
块添加到所选表或视图的 .sqlx
定义文件中。
如需从所选表或视图中撤消 BigQuery 角色,请按以下步骤操作:
在 Google Cloud 控制台中,进入 Dataform 页面。
选择一个代码库,然后选择一个工作区。
在文件窗格中,展开
definitions/
目录。选择要撤消访问权限的表或视图的
.sqlx
定义文件。在
post_operations
代码块中,输入以下REVOKE
语句:REVOKE "ROLE_LIST" ON "RESOURCE_TYPE" ${self()} FROM "USER_LIST"
替换以下内容:
- ROLE_LIST:您要撤消权限的 BigQuery 角色或以英文逗号分隔的 BigQuery 角色列表。
- RESOURCE_TYPE:
TABLE
或VIEW
。 - USER_LIST:要撤消角色的用户的英文逗号分隔列表。如需查看有效格式的列表,请参阅 user_list。
如需撤消文件中
GRANT
语句中授予的访问权限,请将GRANT
语句替换为REVOKE
语句。可选:点击格式。
执行表或视图。
如果您撤消了对增量表的访问权限,请在首次执行后从表定义文件中移除
REVOKE
语句。
以下代码示例展示了从表中某个用户撤消 BigQuery 查看者角色:
config { type: "table" }
SELECT ...
post_operations {
REVOKE `roles/bigquery.dataViewer`
ON TABLE ${self()}
FROM "user:222larabrown@gmail.com"
}
集中管理表和视图的 BigQuery 角色
如需控制 BigQuery 对单个位置中的各个表和视图的访问权限,您可以使用 GRANT
和 REVOKE
DCL 语句创建专用 type: "operations"
文件。
如需在单个 type: "operations"
文件中管理 BigQuery 表访问权限,请按以下步骤操作:
在 Google Cloud 控制台中,进入 Dataform 页面。
选择一个代码库,然后选择一个工作区。
在文件窗格中,点击
definitions/
旁边的更多菜单。
点击创建文件。
在 Add a file path 字段中,在
definitions/
后面输入文件名称,后跟.sqlx
。例如definitions/table-access.sqlx
。文件名只能包含数字、字母、连字符和下划线。
点击创建文件。
在文件窗格中,展开
definitions/
目录,然后选择新创建的文件。在文件中输入以下代码段:
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"
替换以下内容:
- ROLE_LIST:您要授予或撤消的 BigQuery 角色或以英文逗号分隔的 BigQuery 角色列表。
- RESOURCE_TYPE:
TABLE
或VIEW
。 - RESOURCE_NAME:表或视图的名称。
- USER_LIST:为其授予或撤消角色的以英文逗号分隔的用户列表。如需查看有效格式的列表,请参阅 user_list。
根据需要添加
GRANT
和REVOKE
语句。如需撤消文件中
GRANT
语句中授予的访问权限,请将GRANT
语句替换为REVOKE
语句。移除
GRANT
语句而不添加REVOKE
语句不会撤消访问权限。
可选:点击格式。
在每次更新后执行该文件。
- 如果您授予或撤消了对增量表的访问权限,请在首次执行语句后从文件中移除
GRANT
或REVOKE
语句。
- 如果您授予或撤消了对增量表的访问权限,请在首次执行语句后从文件中移除
后续步骤
- 如需详细了解 IAM,请参阅 IAM 概览。
- 如需详细了解角色和权限,请参阅了解角色。
- 如需详细了解如何管理对资源的访问权限,请参阅管理对项目、文件夹和组织的访问权限。