控制对表和视图的访问权限

本文档介绍了如何使用 BigQuery 表 ACL 控制对表和视图的访问权限。如需大致了解 BigQuery 表 ACL,请参阅表访问权限控制简介

创建表或视图后,您可以通过以下方式设置其政策:

  • 使用 Cloud Console
  • 使用 bq set-iam-policy 命令
  • 调用 tables.setIamPolicy 方法

您可以使用 BigQuery 表 ACL 来设置对逻辑视图和数据集级层授权视图的访问权限。逻辑视图还可以引用您使用 BigQuery 表 ACL 共享的其他源表和视图。

准备工作

  1. 创建您要用于 BigQuery 表 ACL 的视图

  2. 向将要执行本主题中的步骤的人员授予 BigQuery Data Owner (roles/bigquery.dataOwner) 角色或 BigQuery Admin (roles/bigquery.admin) 角色。

  3. 如需详细了解身份和访问权限管理 (IAM) 政策,请参阅了解政策政策参考主题。

创建访问权限政策

要在表或视图上创建访问权限政策,请执行以下操作:

控制台

  1. 在 Cloud Console 中打开 BigQuery 页面。

    转到 Cloud Console

  2. 在导航面板的资源部分,选择您的项目。

  3. 选择包含表或视图的数据集。

  4. 选择表或视图。

  5. 如果您要修改表的访问权限,请点击共享表。如果您要修改视图的访问权限,请点击共享视图

  6. 系统会打开表权限视图权限页面。对于添加成员,请输入将获得表或视图访问权限的用户的电子邮件地址。

  7. 选择角色下拉列表中,选择要向用户授予的角色。下图显示 joe@example.com 被授予 BigQuery Data Viewer (roles/bigquery.dataViewer) 角色。

    表权限

  8. 点击完成

bq

  1. 将现有政策检索到本地文件。

    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
  2. 如果您还没有向政策添加任何成员,则 policy.json 文件将包含一个 etag 值,没有其他字段。如需详细了解如何设置 policy.json 文件的格式,请参阅了解政策

  3. 如需添加第一个成员,请向政策添加 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"
       }
    
  4. 更新政策。

    bq set-iam-policy \
     project-id:dataset.table_or_view \
     policy.json
    

    如需了解 IAM 政策架构版本,请参阅政策版本

API

  1. 调用 tables.getIamPolicy 以检索当前政策。

  2. 修改政策以添加成员和/或绑定。如需查看政策的格式,请参阅 bq 示例。

  3. 调用 tables.setIamPolicy 以写入新政策。

如需了解 IAM 政策架构版本,请参阅政策版本

更新访问权限政策

如需更新表或视图的访问权限政策,请执行以下操作:

控制台

  1. 在 Cloud Console 中打开 BigQuery 页面。

    转到 Cloud Console

  2. 在导航面板的资源部分,选择您的项目。

  3. 选择包含表或视图的数据集。

  4. 选择表或视图。

  5. 如果您要修改表的访问权限,请点击共享表。如果您要修改视图的访问权限,请点击共享视图

  6. 系统会打开表权限视图权限页面。

    • 如果要添加新成员,请使用创建访问权限政策中所示的相同技术。

    • 如果要移除用户的访问权限,请使用搜索成员字段搜索该用户。对于要移除用户的每个群组,请展开该群组,然后点击该用户对应的删除 按钮。

    • 如果您要更改用户的群组成员资格,请按上述 2 个步骤中的说明进行添加和/或删除操作。

  7. 根据需要,针对您要为其添加、修改或移除访问权限的其他用户重复上述步骤。完成后,点击完成

bq

  1. 将现有政策检索到本地文件。

    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
  2. 根据需要修改 policy.json。

    如需详细了解如何设置 policy.json 文件的格式,请参阅了解政策

    如需了解 IAM 政策架构版本,请参阅政策版本

  3. 更新政策。

    bq set-iam-policy \
     project-id:dataset.table_or_view \
     policy.json
    

API

  1. 调用 tables.getIamPolicy 以检索当前政策。

  2. 修改政策以添加成员和/或绑定。

    如需了解政策所需的格式,请参阅政策参考主题。

  3. 调用 tables.setIamPolicy 以写入更新后的政策。

如需详细了解 Identity and Access Management 政策,请参阅了解政策以及政策参考主题。

后续步骤