Dataform 和 BigQuery 使用 IAM 进行访问权限控制。如需详细了解 IAM 中的 Dataform 角色和权限,请参阅使用 IAM 控制访问权限。
Dataform 在执行表或视图时,会在 BigQuery 中创建资源。在 Dataform 中进行开发期间,您可以向各个表和视图授予 BigQuery 角色,以便在执行后控制其在 BigQuery 中的访问权限。
如需详细了解如何授予和撤消对资源的访问权限,请参阅授予对资源的访问权限。
准备工作
- 登录您的 Google Cloud 账号。如果您是 Google Cloud 新手,请创建一个账号来评估我们的产品在实际场景中的表现。新客户还可获享 $300 赠金,用于运行、测试和部署工作负载。
-
在 Google Cloud Console 中的项目选择器页面上,选择或创建一个 Google Cloud 项目。
-
启用 BigQuery and Dataform API。
-
在 Google Cloud Console 中的项目选择器页面上,选择或创建一个 Google Cloud 项目。
-
启用 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 ${self()} TO "USER_LIST" }
替换以下内容:
- ROLE_LIST:您要授予的 BigQuery 角色或以英文逗号分隔的 BigQuery 角色列表
USER_LIST:授予角色的用户的逗号分隔列表
如需查看有效格式的列表,请参阅 user_list。
可选:点击格式。
执行表或视图。
如果您授予对增量表的访问权限,请在首次执行后从表定义文件中移除
GRANT
语句。
以下代码示例展示了针对表向用户授予的 BigQuery Viewer 角色:
config { type: "table" }
SELECT ...
post_operations {
GRANT `roles/bigquery.dataViewer` ON ${self()} TO "user:222larabrown@gmail.com"
}
从表或视图中撤消 BigQuery 角色
您可以从表或视图撤消 BigQuery 角色,方法是向所选表或视图的 .sqlx
定义文件添加包含 REVOKE
DCL 语句的 post_operations
块。
如需从所选表或视图撤消 BigQuery 角色,请按以下步骤操作:
在 Google Cloud 控制台中,转到 Dataform 页面。
选择代码库,然后选择工作区。
在 Files 窗格中,展开
definitions/
目录。选择要撤消其访问权限的表或视图的
.sqlx
定义文件。在
post_operations
代码块中,输入以下REVOKE
语句:REVOKE "ROLE_LIST" ON ${self()} TO "USER_LIST"
替换以下内容:
- ROLE_LIST:您要撤消的 BigQuery 角色或以英文逗号分隔的 BigQuery 角色列表。
- 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 ${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
语句。在不添加
REVOKE
语句的情况下移除GRANT
语句不会撤消访问权限。
可选:点击格式。
每次更新后执行该文件。
- 如果您授予或撤消了对增量表的访问权限,请在首次执行语句之后,从文件中移除
GRANT
或REVOKE
语句。
- 如果您授予或撤消了对增量表的访问权限,请在首次执行语句之后,从文件中移除
后续步骤
- 如需详细了解 IAM,请参阅 IAM 概览。
- 如需详细了解角色和权限,请参阅了解角色。
- 如需详细了解如何管理对资源的访问权限,请参阅管理对项目、文件夹和组织的访问权限。