如何通过Python SDK或REST API在DataHub中创建策略?
DataHub通过Python SDK/REST API创建策略的实现
当然可以通过Python SDK或REST API自动化创建元数据策略/平台策略,以下是具体实现方式:
REST API方式
- DataHub的Metadata Service提供了专用的REST端点用于策略管理,通过POST请求调用
/api/v2/policies即可创建策略。请求需携带有效认证令牌(如JWT),请求体需包含策略的完整定义。 - 示例JSON请求体:
{ "name": "数据集元数据查看策略", "type": "METADATA", "description": "授权data_team组查看指定Hive数据集的元数据", "rules": [ { "resource": "urn:li:dataset:(urn:li:dataPlatform:hive,sample_db.sample_table,PROD)", "actions": ["VIEW"], "effect": "ALLOW" } ], "principals": ["urn:li:corpGroup:data_team"] }
- 策略类型
METADATA对应元数据策略,PLATFORM对应平台策略,可根据需求调整。
Python SDK方式
- 使用官方Python SDK
acryl-datahub(需确保版本≥0.10.0),通过PolicyClient完成策略创建:
from datahub.metadata.com.linkedin.pegasus2avro.common import CorpGroupUrn from datahub.metadata.com.linkedin.pegasus2avro.policy import ( Policy, PolicyRule, PolicyType, ResourceUrn, PolicyAction, PolicyEffect, ) from datahub.client import DataHubClient from datahub.client.config import DataHubClientConfig # 初始化DataHub客户端 client_config = DataHubClientConfig( server="http://your-datahub-server:8080", token="your-authentication-token" ) client = DataHubClient(client_config) # 构建策略规则 access_rule = PolicyRule( resource=ResourceUrn(urn="urn:li:dataset:(urn:li:dataPlatform:hive,sample_db.sample_table,PROD)"), actions=[PolicyAction.VIEW], effect=PolicyEffect.ALLOW ) # 构建完整策略对象 platform_policy = Policy( name="管理员平台操作权限策略", type=PolicyType.PLATFORM, description="允许admin用户执行平台级配置操作", rules=[access_rule], principals=[CorpGroupUrn(urn="urn:li:corpuser:admin")] ) # 发送创建请求 client.policy_client.create_policy(platform_policy)
注意事项
- 需确认你的DataHub实例版本支持该功能,旧版本可能未开放策略管理的API接口。
- 策略中的资源URN、主体URN需与DataHub内的实际对象匹配,否则会创建失败。
内容的提问来源于stack exchange,提问作者KAs
相关产品推荐
相关产品推荐

