如何通过azure-purview Python包编程管理自定义分类(创建/删除/更新)?
如何通过azure-purview Python包编程管理自定义分类(创建/删除/更新)?
嗨,我来帮你理清这个问题!首先得明确一个关键区别:自定义分类并不是AtlasEntity,它属于Purview里的元数据定义资源,和实体是完全分开的,所以你之前用的create_or_update实体方法是没法直接用来管理分类的,得用专门的分类管理方法来操作。
核心概念澄清
你提到的JSON是实体(比如存储账户)的结构,其中的typeName是实体的类型(比如azure_storage_account),而自定义分类的typeName是你给这个分类本身起的唯一标识名称(比如Custom_Confidential_Data),两者完全不同。
创建自定义分类
要创建自定义分类,你需要先构造分类的定义结构,然后调用Purview SDK中专门的分类定义管理方法。
首先构造自定义分类的定义(这里以基于正则规则的分类为例):
custom_classification_def = { "category": "SENSITIVE_DATA", # 分类所属的类别,比如SENSITIVE_DATA、BUSINESS等 "name": "Custom_PII_Data", "description": "自定义的个人身份信息敏感数据分类", "typeName": "Custom_PII_Data", # 这个就是分类的唯一标识,要和name一致 "rule": { "kind": "Pattern", "pattern": { "regex": "^[0-9]{18}$", # 匹配18位身份证号的正则 "format": "Regex" } }, "version": 1 }
然后使用PurviewMetadataClient来创建分类:
from azure.identity import DefaultAzureCredential from azure.purview.metadata import PurviewMetadataClient # 初始化客户端 purview_endpoint = "https://your-purview-account-name.purview.azure.com" client = PurviewMetadataClient( endpoint=purview_endpoint, credential=DefaultAzureCredential() ) # 创建自定义分类 response = client.classification_definitions.create_or_update( classification_definition_name="Custom_PII_Data", body=custom_classification_def ) print("自定义分类创建成功:", response)
更新自定义分类
更新自定义分类的逻辑很简单,修改分类定义的内容(比如更新规则、描述)后,再次调用create_or_update方法即可(这个方法是幂等的,会根据名称更新已存在的分类):
# 复制原定义并修改 updated_classification_def = custom_classification_def.copy() updated_classification_def["description"] = "更新后的个人身份信息敏感数据分类" updated_classification_def["rule"]["pattern"]["regex"] = "^[0-9]{17,18}$" # 适配17-18位身份证号 updated_classification_def["version"] = 2 # 版本号建议递增 # 执行更新 response = client.classification_definitions.create_or_update( classification_definition_name="Custom_PII_Data", body=updated_classification_def ) print("自定义分类更新成功:", response)
删除自定义分类
使用delete方法即可删除指定名称的自定义分类:
client.classification_definitions.delete( classification_definition_name="Custom_PII_Data" ) print("自定义分类删除成功")
额外补充:给实体应用自定义分类
如果你已经创建了自定义分类,想要给某个实体(比如你示例中的存储账户)添加这个分类标签,可以用实体的分类管理方法:
# 假设你已经获取到目标实体的GUID target_entity_guid = "your-entity-guid-here" # 给实体添加自定义分类 client.entities.classifications.add( entity_guid=target_entity_guid, classification_name="Custom_PII_Data" )
备注:内容来源于stack exchange,提问作者FaCoffee
相关产品推荐
相关产品推荐

