Dataform 和 BigQuery 均使用 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.
-
Make sure 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.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the BigQuery and Dataform APIs.
为表或视图授予 BigQuery 角色
您可以通过以下方式向 Dataform 中的表或视图授予 BigQuery 角色:
添加一个 post_operations
代码块,
GRANT
DCL 语句
添加到所选表或视图的 .sqlx
定义文件。
如需向选定的表或视图授予 BigQuery 角色,请按以下步骤操作:
在 Google Cloud 控制台中,前往 Dataform 页面。
选择一个代码库,然后选择一个工作区。
在文件窗格中,展开
definitions/
目录中。选择表或视图的
.sqlx
定义文件 您要授予访问权限的对象。在文件中输入以下代码段:
post_operations { GRANT "ROLE_LIST" ON "RESOURCE_TYPE" ${self()} TO "USER_LIST" }
替换以下内容:
ROLE_LIST:BigQuery 角色或以英文逗号分隔的 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 角色
您可以通过向表或视图添加
post_operations
块
REVOKE
DCL 语句。
添加到所选表或视图的 .sqlx
定义文件。
如需撤消所选表或视图的 BigQuery 角色,请按以下步骤操作:
在 Google Cloud 控制台中,前往 Dataform 页面。
选择一个代码库,然后选择一个工作区。
在文件窗格中,展开
definitions/
目录中。选择表或视图的
.sqlx
定义文件 您要撤消访问权限的组织部门。在
post_operations
代码块中,输入以下REVOKE
语句:REVOKE "ROLE_LIST" ON "RESOURCE_TYPE" ${self()} TO "USER_LIST"
替换以下内容:
- ROLE_LIST:BigQuery 角色或以英文逗号分隔的 BigQuery 角色列表 要撤消的 BigQuery 角色。
- RESOURCE_TYPE:
TABLE
或VIEW
。 - USER_LIST:以英文逗号分隔的用户列表 角色已撤消。有关有效格式的列表,请参阅 user_list。
如需撤消在文件的
GRANT
语句中授予的访问权限,请将 使用REVOKE
语句的GRANT
语句。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 对单个表和视图的访问权限
您可以使用以下命令创建一个专用的 type: "operations"
文件:
GRANT
和REVOKE
DCL 语句。
如需在单个 type: "operations"
文件中管理 BigQuery 表访问权限,
请按以下步骤操作:
在 Google Cloud 控制台中,前往 Dataform 页面。
选择一个代码库,然后选择一个工作区。
在 Files 窗格中,点击
definitions/
旁边的 更多菜单。点击创建文件。
在添加文件路径字段中,输入文件名,后跟
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 角色列表 您要授予或撤消的 BigQuery 角色。
- RESOURCE_TYPE:
TABLE
或VIEW
。 - RESOURCE_NAME:表或视图的名称。
- USER_LIST:以逗号分隔的用户列表, 被授予或撤消的角色。有关有效格式的列表,请参阅 user_list。
根据需要添加
GRANT
和REVOKE
语句。如需撤消在文件的
GRANT
语句中授予的访问权限,请将 使用REVOKE
语句的GRANT
语句。移除
GRANT
语句,但不添加REVOKE
语句 不会撤消访问权限。
可选:点击格式。
每次更新后执行该文件。
- 如果您授予或撤消了增量表的访问权限,请移除
GRANT
或REVOKE
语句。
- 如果您授予或撤消了增量表的访问权限,请移除
后续步骤
- 如需详细了解 IAM,请参阅 IAM 概览。
- 如需详细了解角色和权限,请参阅 了解角色。
- 如需详细了解如何管理对资源的访问权限,请参阅 管理对项目、文件夹和组织的访问权限。