标记数据集

本页面介绍如何使用标记来有条件地将 Identity and Access Management (IAM) 政策应用于 BigQuery 数据集。

标记是一种键值对,您可以将标记直接附加到数据集,也可以让数据集从其他 Google Cloud 资源继承标记。您可以根据资源是否具有特定标记来有条件地应用政策。例如,您可以有条件地将 BigQuery Data Viewer 角色授予带有 environment:dev 标记的任何数据集上的主帐号。

如需详细了解如何在 Google Cloud 资源层次结构中使用标记,请参阅标记概览

所需权限

如需在 BigQuery 中使用标记,您需要具有以下权限:

  • 如需将标记附加到数据集,您需要拥有数据集的 bigquery.datasets.createTagBinding IAM 权限以及要附加的标记值的组织级 resourcemanager.tagValueBindings.create 权限。
  • 如需从数据集中移除标记,您需要拥有数据集的 bigquery.datasets.deleteTagBinding IAM 权限以及要删除的标记值的组织级 resourcemanager.tagValueBindings.delete 权限。
  • 如需列出附加到数据集的标记,您需要拥有 bigquery.datasets.listTagBindings IAM 权限。

以下两个预定义的 IAM 角色均具有所有必要的 BigQuery 权限:

  • BigQuery Data Owner (roles/bigquery.dataOwner)
  • BigQuery Admin (roles/bigquery.admin)

Resource Manager 权限包含在 Tag User 角色 (roles/resourcemanager.tagUser) 中。

创建标记键和标记值

在附加标记之前,您需要创建标记并配置其值。如需创建标记键和标记值,请参阅创建标记添加标记值

将标记附加到数据集

创建标记后,您可以将其附加到数据集。对于任何给定的标记键,您只能将其一个标记值附加到数据集。

如需使用命令行将标记附加到数据集,请使用 gcloud alpha resource-manager tags bindings create 命令创建标记绑定资源:

gcloud alpha resource-manager tags bindings create \
    --tag-value=TAGVALUE_NAME \
    --parent=RESOURCE_ID \
    --location=LOCATION

替换以下内容:

  • TAGVALUE_NAME:要附加的标记值的永久性 ID 或命名空间名称,例如 tagValues/45678901231234567/my_tag_key/my_tag_value
  • RESOURCE_ID:数据集的完整 ID,包括用于标识资源类型的 API 域名 (//bigquery.googleapis.com/),例如 //bigquery.googleapis.com/projects/my_project/datasets/my_dataset
  • LOCATION:您的数据集所在的位置

列出附加到数据集的标记

通过执行以下步骤,您可以获得直接附加到数据集的标记绑定的列表;执行这些步骤不会返回从父资源继承的任何标记。

控制台

  1. 转到 BigQuery 页面。

    转到 BigQuery

  2. 浏览器面板中,展开您的项目并选择数据集。

    标记会显示在数据集信息面板中。

gcloud

如需获取附加到资源的标记绑定的列表,请使用 gcloud alpha resource-manager tags bindings list 命令

gcloud alpha resource-manager tags bindings list \
    --parent=RESOURCE_ID \
    --location=LOCATION

替换以下内容:

  • RESOURCE_ID:数据集的完整 ID,包括用于标识资源类型的 API 域名 (//bigquery.googleapis.com/),例如 //bigquery.googleapis.com/projects/my_project/datasets/my_dataset

  • LOCATION:您的数据集所在的位置

输出内容类似如下:

name: tagBindings/%2F%2Fbigquery.googleapis.com%2Fprojects%2Fmy_project%2Fdatasets%2Fmy_dataset/tagValues/4567890123
parent: //bigquery.googleapis.com/projects/my_project/datasets/my_dataset
tagValue: tagValues/4567890123

从数据集分离标记

您可以通过删除标记绑定资源,从资源分离标记。 如果您需要删除标记,您应首先分离该标记。

如需使用命令行从数据集分离标记,请使用 gcloud alpha resource-manager tags bindings delete 命令删除标记绑定:

gcloud alpha resource-manager tags bindings delete \
    --tag-value=TAGVALUE_NAME \
    --parent=RESOURCE_ID \
    --location=LOCATION

替换以下内容:

  • TAGVALUE_NAME:要附加的标记值的永久性 ID 或命名空间名称,例如 tagValues/45678901231234567/my_tag_key/my_tag_value
  • RESOURCE_ID:数据集的完整 ID,包括用于标识资源类型的 API 域名 (//bigquery.googleapis.com/),例如 //bigquery.googleapis.com/projects/my_project/datasets/my_dataset
  • LOCATION:您的数据集所在的位置

删除标记

您应该先删除所有现有标记绑定资源,然后再删除标记键或标记值本身。如需删除标记键和标记值,请参阅删除标记

示例

假设您是组织的管理员。您的数据分析师都是群组 analysts@example.com 的成员,他们对项目 userData 具有 BigQuery Data Viewer IAM 角色。您的公司聘请了一些数据分析师实习生,根据公司政策,他们应该只能查看 userData 项目中的 anonymousData 数据集。您可以使用标记来控制他们的访问权限。

  1. 使用键 employee_type 和值 intern 创建标记

    创建标记键和标记值的示例。

  2. 在控制台中,转到 IAM 页面。

    转到 IAM

  3. 找到要限制其数据集访问权限的实习生所在的行,然后点击该行中的修改主帐号

  4. 角色菜单中,选择 BigQuery Dataset Viewer

  5. 点击添加条件

  6. 标题说明字段中,输入用于描述要创建的 IAM 条件的值。

  7. 条件构建器标签页上,点击添加

  8. 条件类型菜单中,选择资源,然后选择标记

  9. 运算符菜单中,选择包含值

  10. 值路径字段中,输入 ORGANIZATION/TAG_KEY/TAG_VALUE 格式的标记值路径,例如 example.org/employee_type/intern

    使用标记的 IAM 条件示例。

    此 IAM 条件会限制实习生对具有 intern 标记的数据集的访问权限。

  11. 如需保存条件,请点击保存

  12. 如需保存您在修改权限窗格中所做的所有更改,请点击保存

  13. 如需将 intern 标记值附加到 anonymousData 数据集,请使用命令行运行 gcloud alpha resource-manager tags bindings create 命令:

    gcloud alpha resource-manager tags bindings create \
    --tag-value=tagValues/4567890123 \
    --parent=//bigquery.googleapis.com/projects/userData/datasets/anonymousData \
    --location=US
    

限制

  • 如果删除标记值,BigQuery 不会自动删除使用该值的标记绑定。在删除标记值后,必须提供标记值 ID 才能删除标记绑定。如果您不知道标记值 ID,则移除绑定的唯一方法是删除整个数据集。

  • 您最多可以为一个数据集附加 10 个标记。

后续步骤