如何通过Python/API获取BigQuery中Policy Tag关联的用户列表?
在BigQuery中获取Policy Tag关联的用户列表
要获取Policy Tag关联的用户/权限列表,需要借助Data Catalog API(因为Policy Tag属于Data Catalog分类体系的一部分),而非BigQuery的表操作API。以下是具体实现方式:
方法一:使用Python客户端库
- 先安装依赖库:
pip install google-cloud-datacatalog
- 获取Policy Tag的IAM权限配置
需要先确认Policy Tag的完整资源名称,格式为:projects/{项目ID}/locations/{区域}/taxonomies/{分类ID}/policyTags/{Policy Tag ID}
通过以下代码获取关联的用户和角色:
from google.cloud import datacatalog_v1 def fetch_policy_tag_permissions(policy_tag_resource_name): client = datacatalog_v1.DataCatalogClient() request = datacatalog_v1.GetIamPolicyRequest( resource=policy_tag_resource_name, options=datacatalog_v1.GetIamPolicyOptions() ) policy = client.get_iam_policy(request=request) # 解析并输出权限绑定信息 for binding in policy.bindings: print(f"角色: {binding.role}") print(f"关联主体(用户/组/服务账号): {binding.members}\n") # 替换为你的Policy Tag资源名称 target_policy_tag = "projects/your-project-id/locations/us-central1/taxonomies/your-taxonomy-id/policyTags/your-p1-tag-id" fetch_policy_tag_permissions(target_policy_tag)
方法二:使用gcloud命令行工具
直接执行以下命令(替换占位符为实际信息):
gcloud data-catalog policy-tags get-iam-policy projects/your-project-id/locations/us-central1/taxonomies/your-taxonomy-id/policyTags/your-p1-tag-id
如何获取Policy Tag的资源名称
如果不知道Policy Tag的资源名称,可通过两种方式获取:
- 控制台方式:进入Data Catalog分类体系页面,点击目标Policy Tag,在详情页的「资源名称」字段直接复制。
- 代码方式:列出指定分类下的所有Policy Tag:
from google.cloud import datacatalog_v1 def list_policy_tags(taxonomy_resource_name): client = datacatalog_v1.DataCatalogClient() request = datacatalog_v1.ListPolicyTagsRequest(parent=taxonomy_resource_name) page_result = client.list_policy_tags(request=request) for tag in page_result: print(f"Tag名称: {tag.display_name}") print(f"资源名称: {tag.name}\n") # 替换为你的分类资源名称 target_taxonomy = "projects/your-project-id/locations/us-central1/taxonomies/your-taxonomy-id" list_policy_tags(target_taxonomy)
注意:Policy Tag的核心权限角色是
roles/datacatalog.categoryFineGrainedReader,拥有该角色的主体才能访问绑定了该标签的列。
内容的提问来源于stack exchange,提问作者Sarthak Chandel
相关产品推荐
相关产品推荐

