标记数据集

本页面介绍如何使用标记来有条件地将 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. 在 Google Cloud 控制台中,前往 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 个标记。

后续步骤