Dataform 和 BigQuery 使用 IAM 进行访问权限控制。如需详细了解 IAM 中的 Dataform 角色和权限,请参阅使用 IAM 控制访问权限。
Dataform 执行表或视图时,会在 BigQuery 中创建资源。在 Dataform 中开发期间,您可以向各个表和视图授予 BigQuery 角色,以便在执行后控制它们在 BigQuery 中的访问权限。
如需详细了解如何授予和撤消对资源的访问权限,请参阅授予对资源的访问权限。
准备工作
- 登录您的 Google Cloud 账号。如果您是 Google Cloud 新手,请创建一个账号来评估我们的产品在实际场景中的表现。新客户还可获享 $300 赠金,用于运行、测试和部署工作负载。
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
启用 BigQuery and Dataform API。
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
启用 BigQuery and Dataform API。
为表或视图授予 BigQuery 角色
您可以向 Dataform 中的表或视图授予 BigQuery 角色,方法是将带有 GRANT
DCL 语句的 post_operations
块添加到所选表或视图的 .sqlx
定义文件。
如需向选定的表或视图授予 BigQuery 角色,请按以下步骤操作:
在 Google Cloud 控制台中,前往 Dataform 页面。
选择一个代码库,然后选择一个工作区。
在 Files 窗格中,展开
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 页面。
选择一个代码库,然后选择一个工作区。
在 Files 窗格中,展开
definitions/
目录。选择要撤消对其访问权限的表或视图的
.sqlx
定义文件。在
post_operations
代码块中,输入以下REVOKE
语句:REVOKE "ROLE_LIST" ON "RESOURCE_TYPE" ${self()} TO "USER_LIST"
请替换以下内容:
- ROLE_LIST:要撤消的 BigQuery 角色或以英文逗号分隔的 BigQuery 角色列表。
- RESOURCE_TYPE:
TABLE
或VIEW
。 - USER_LIST:要撤消角色的用户的列表(以英文逗号分隔)。如需查看有效格式的列表,请参阅 user_list。
如需撤消文件的
GRANT
语句中授予的访问权限,请将GRANT
语句替换为REVOKE
语句。Removing the `GRANT` statement without adding the `REVOKE` statement does not revoke access.
可选:点击格式。
执行表或视图。
如果您撤消了对增量表的访问权限,请在首次执行后从表定义文件中移除
REVOKE
语句。
以下代码示例显示了撤消用户对表的 BigQuery Viewer 角色:
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 页面。
选择一个代码库,然后选择一个工作区。
在 Files 窗格中,点击
definitions/
旁边的More 菜单。
点击创建文件。
在添加文件路径字段中,输入文件名,然后在
definitions/
后添加.sqlx
。例如definitions/table-access.sqlx
。文件名只能包含数字、字母、连字符和下划线。
点击创建文件。
在 Files 窗格中,展开
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 概览。
- 如需详细了解角色和权限,请参阅了解角色。
- 如需详细了解如何管理对资源的访问权限,请参阅管理对项目、文件夹和组织的访问权限。