标记数据集
本页面介绍如何使用标记来有条件地将 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/4567890123
或1234567/my_tag_key/my_tag_value
RESOURCE_ID
:数据集的完整 ID,包括用于标识资源类型的 API 域名 (//bigquery.googleapis.com/
),例如//bigquery.googleapis.com/projects/my_project/datasets/my_dataset
LOCATION
:您的数据集所在的位置
列出附加到数据集的标记
通过执行以下步骤,您可以获得直接附加到数据集的标记绑定的列表;执行这些步骤不会返回从父资源继承的任何标记。
控制台
转到 BigQuery 页面。
在浏览器面板中,展开您的项目并选择数据集。
标记会显示在数据集信息面板中。
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/4567890123
或1234567/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 数据集。您可以使用标记来控制他们的访问权限。
使用键
employee_type
和值intern
创建标记:在 Google Cloud 控制台中,前往 IAM 页面。
找到要限制其数据集访问权限的实习生所在的行,然后点击该行中的修改主帐号
。从角色菜单中,选择 BigQuery Dataset Viewer。
点击添加条件。
在标题和说明字段中,输入用于描述要创建的 IAM 条件的值。
在条件构建器标签页上,点击添加。
在条件类型菜单中,选择资源,然后选择标记。
在运算符菜单中,选择包含值。
在值路径字段中,输入
ORGANIZATION/TAG_KEY/TAG_VALUE
格式的标记值路径,例如example.org/employee_type/intern
。此 IAM 条件会限制实习生对具有
intern
标记的数据集的访问权限。如需保存条件,请点击保存。
如需保存您在修改权限窗格中所做的所有更改,请点击保存。
如需将
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 个标记。