本文档介绍了如何使用 BigQuery 表 ACL 控制对表和视图的访问权限。如需大致了解 BigQuery 表 ACL,请参阅表访问权限控制简介。
创建表或视图后,您可以通过以下方式设置其政策:
- 使用 Cloud Console
- 使用
bq set-iam-policy
命令 - 调用
tables.setIamPolicy
方法
您可以使用 BigQuery 表 ACL 来设置对逻辑视图和数据集级层授权视图的访问权限。逻辑视图还可以引用您使用 BigQuery 表 ACL 共享的其他源表和视图。
准备工作
向将要执行本主题中的步骤的人员授予 BigQuery Data Owner (
roles/bigquery.dataOwner
) 角色或 BigQuery Admin (roles/bigquery.admin
) 角色。
创建访问权限政策
要在表或视图上创建访问权限政策,请执行以下操作:
控制台
在 Cloud Console 中打开 BigQuery 页面。
在浏览器面板中,选择项目。
选择包含表或视图的数据集。
选择表或视图。
如果您要修改表的访问权限,请点击共享表。如果您要修改视图的访问权限,请点击共享视图。
系统会打开表权限或视图权限页面。对于添加成员,请输入将获得表或视图访问权限的用户的电子邮件地址。
从选择角色下拉列表中,选择要向用户授予的角色。下图显示
joe@example.com
被授予 BigQuery Data Viewer (roles/bigquery.dataViewer
) 角色。点击完成。
bq
将现有政策检索到本地文件。
bq get-iam-policy \ project-id:dataset.table_or_view \ > policy.json
其中:
- project-id 是项目 ID。
- dataset 是包含要更新的资源(表或视图)的数据集的名称。
- table_or_view 是要更新的资源的名称。
识别表或视图以及将政策输出重定向到文件的更多示例:
bq get-iam-policy dataset1.table1 > policy.json
bq get-iam-policy --project_id=project1 -t dataset1.table1 > policy.json
bq get-iam-policy project1:dataset1.table1 > policy.json
如果您还没有向政策添加任何成员,则
policy.json
文件将包含一个etag
值,没有其他字段。如需详细了解如何设置policy.json
文件的格式,请参阅了解政策。如需添加第一个成员,请向政策添加
bindings
字段。例如,如需向joe@example.com
授予 BigQuery Data Viewer (roles/bigquery.dataViewer
) 角色,请运行以下命令:"bindings": [ { "members": [ "user:joe@example.com" ], "role": "roles/bigquery.dataViewer" } ]
如果您需要向现有绑定添加更多成员,只需添加成员即可。此示例显示如何针对已存在的绑定向
jane@example.com
授予 BigQuery Data Viewer (roles/bigquery.dataViewer
) 角色。"members": [ "user:joe@example.com", "user:jane@example.com" ], "role": "roles/bigquery.dataViewer" }
更新政策。
bq set-iam-policy \ project-id:dataset.table_or_view \ policy.json
如需了解 IAM 政策架构版本,请参阅政策版本。
API
调用
tables.getIamPolicy
以检索当前政策。修改政策以添加成员和/或绑定。如需查看政策的格式,请参阅
bq
示例。调用
tables.setIamPolicy
以写入新政策。
如需了解 IAM 政策架构版本,请参阅政策版本。
Java
试用此示例之前,请按照《BigQuery 快速入门:使用客户端库》中的 Java 设置说明进行操作。 如需了解详情,请参阅 BigQuery Java API 参考文档。
更新访问权限政策
如需更新表或视图的访问权限政策,请执行以下操作:
控制台
在 Cloud Console 中打开 BigQuery 页面。
在浏览器面板中,选择项目。
选择包含表或视图的数据集。
选择表或视图。
如果您要修改表的访问权限,请点击共享表。如果您要修改视图的访问权限,请点击共享视图。
系统会打开表权限或视图权限页面。
如果要添加新成员,请使用创建访问权限政策中所示的相同技术。
如果要移除用户的访问权限,请使用搜索成员字段搜索该用户。对于要移除用户的每个群组,请展开该群组,然后点击该用户对应的删除
按钮。如果您要更改用户的群组成员资格,请按上述 2 个步骤中的说明进行添加和/或删除操作。
根据需要,针对您要为其添加、修改或移除访问权限的其他用户重复上述步骤。完成后,点击完成。
bq
将现有政策检索到本地文件。
bq get-iam-policy --format=prettyjson \ project-id:dataset.table_or_view \ > policy.json
其中:
- project-id 是项目 ID。
- dataset 是要更新的表所在的数据集的名称。
- table_or_view 是要更新的表或视图的名称。
识别表或视图以及将政策输出重定向到文件的更多示例:
bq get-iam-policy dataset1.table1 > policy.json
bq get-iam-policy --project_id=project1 -t dataset1.table1 > policy.json
bq get-iam-policy project1:dataset1.table1 > policy.json
根据需要修改 policy.json。
如需详细了解如何设置
policy.json
文件的格式,请参阅了解政策。如需了解 IAM 政策架构版本,请参阅政策版本。
更新政策。
bq set-iam-policy \ project-id:dataset.table_or_view \ policy.json
API
调用
tables.getIamPolicy
以检索当前政策。修改政策以添加成员和/或绑定。
如需了解政策所需的格式,请参阅政策参考主题。
调用
tables.setIamPolicy
以写入更新后的政策。
Java
试用此示例之前,请按照《BigQuery 快速入门:使用客户端库》中的 Java 设置说明进行操作。 如需了解详情,请参阅 BigQuery Java API 参考文档。
如需详细了解 Identity and Access Management 政策,请参阅了解政策以及政策参考主题。