使用 REST API 创建资产
本教程介绍如何在用户能够在Microsoft Purview 数据目录中搜索和浏览的Microsoft Purview 数据映射中创建资产。
备注
如果你使用的是 Microsoft Purview 的免费版本,则只有 数据策展人角色组中 的用户才能访问这些资产。
如果已有服务主体和身份验证令牌,可以直接跳到 使用 REST API 创建资产的步骤。 否则,请按照本指南调用 REST API。
- 如果没有 Azure 订阅,请在开始之前 创建一个免费帐户 。
- 必须具有现有的 Microsoft Purview 帐户。 如果没有,检查组织是否有权访问 Microsoft Purview 的免费版本,或者使用此快速入门创建 Microsoft Purview 帐户。
若要使 REST API 客户端访问 Microsoft Purview 以创建实体,客户端必须具有服务主体 (应用程序) ,以及 Microsoft Purview 识别并配置为信任的标识。
使用现有服务主体 (应用程序 ID) 的客户故障率很高。 因此,建议创建新的服务主体来调用 API。
若要创建新的服务主体,请执行以下操作:
登录 Azure 门户。
在门户中,搜索并选择“ Azure Active Directory”。
从“Azure Active Directory”页中,从左窗格中选择“应用注册”。
选择“新注册”。
在 “注册应用程序” 页上:
- 输入应用程序 的名称 , (服务主体名称) 。
- 选择 “仅此组织目录中的帐户” (<租户名称> - 单租户) 。
- 对于 “重定向 URI (可选) ”,选择“ Web ”并输入值。 此值不需要是有效的终结点。
https://exampleURI.com
会的。 - 选择“注册”。
在新的服务主体页上,复制 “显示名称 ”和 “应用程序 (客户端) ID ”的值,以供以后保存。
应用程序 ID 是
client_id
示例代码中的值。
若要使用服务主体 (应用程序) ,需要知道服务主体的密码:
- 在应用注册列表中选择服务主体 (应用程序 ) 。
- 从左窗格中选择“ 证书 & 机密 ”。
- 选择“新建客户端密码”。
- 在 “添加客户端密码 ”页上,输入 “说明”,在“ 过期”下选择过期时间,然后选择“ 添加”。
- 在 “客户端机密 ”页上,新机密的“ 值 ”列中的字符串是密码。 保存此值。
创建新的服务主体后,需要分配权限,以便服务主体可以访问 Microsoft Purview 帐户。 需要分配的权限取决于使用的是 经典 Microsoft Purview 体验 还是 新的 Microsoft Purview 门户。
选择你正在使用的体验的选项卡。
在左侧菜单中选择“数据映射”。
选择“集合”。
在集合菜单中选择根集合。 这是列表中排名靠前的集合,其名称与 Microsoft Purview 帐户的名称相同。
备注
还可以将服务主体权限分配给任何子集合,而不是根集合。 但是,所有 API 的作用域将限定为继承权限) 的集合 (和子集合,并且尝试为另一个集合调用 API 的用户将收到错误。
选择“ 角色分配 ”选项卡。
将“数据策展人”角色分配给之前创建的服务主体。 有关详细步骤,请参阅 使用 Microsoft Purview 治理门户分配 Azure 角色。
分配权限后,需要收集身份验证令牌。
将 POST 请求发送到以下 URL 以获取访问令牌:
https://login.microsoftonline.com/{your-tenant-id}/oauth2/token
可以通过在Azure 门户中搜索租户属性来查找租户 ID。 租户属性页上提供了 ID。
需要将以下参数传递到上述 URL:
- client_id:在 Azure Active directory 中注册并分配给 Microsoft Purview 帐户的数据平面角色的应用程序的客户端 ID。
- client_secret:为上述应用程序创建的客户端密码。
- grant_type:这应该是“client_credentials”。
- 资源:应为“https://purview.azure.net”
下面是 PowerShell 中的 POST 请求示例:
$tenantID = "12a345bc-67d1-ef89-abcd-efg12345abcde" $url = "https://login.microsoftonline.com/$tenantID/oauth2/token" $params = @{ client_id = "a1234bcd-5678-9012-abcd-abcd1234abcd"; client_secret = "abcd~a1234bcd56789012abcdabcd1234abcd"; grant_type = "client_credentials"; resource = ‘https://purview.azure.net’ } Invoke-WebRequest $url -Method Post -Body $params -UseBasicParsing | ConvertFrom-Json
示例响应令牌:
{ "token_type": "Bearer", "expires_in": "86399", "ext_expires_in": "86399", "expires_on": "1621038348", "not_before": "1620951648", "resource": "https://purview.azure.net", "access_token": "<<access token>>" }
提示
如果收到如下错误消息: 仅允许“单页应用程序”客户端类型进行跨域令牌兑换。
- 检查请求标头并确认请求 不包含 “origin”标头。
- 确认重定向 URI 在服务主体中设置为 Web 。
- 如果使用的是 Postman 等应用程序,请确保软件是最新的。
使用上面的访问令牌调用数据平面 API。
现在,你已拥有令牌并可以进行身份验证,现在可以创建资产了。
重要
请求 URL 终结点取决于你正在使用的 Microsoft Purview 体验: 经典 Microsoft Purview 体验 或 新的 Microsoft Purview 门户
下面是一个可用于为 Azure 资源创建实体的示例。 此示例涵盖 Azure 存储帐户,但可以将其用于任何其他 Azure 源。
重要
若要将此示例用于 Azure 资源,请替换有效负载中的以下值:
- typeName
- 所有者
- qualifiedName
- name
- 专家 ID
- 专家信息
- 所有者 ID
- 所有者信息
- Createdby
- Updatedby
请求 URL: https://{accountName}.purview.azure.com/catalog/api/atlas/v2/entity
方法:POST
身份验证:使用上一步中的令牌作为持有者令牌。
有效负载示例:
{
"referredEntities": {},
"entity": {
"typeName": "azure_storage_account",
"attributes": {
"owner": "ExampleOwner",
"modifiedTime": 0,
"createTime": 0,
"qualifiedName": "https://exampleaccount.core.windows.net",
"name": "ExampleStorageAccount",
"description": null,
"publicAccessLevel": null
},
"contacts": {
"Expert": [
{
"id": "30435ff9-9b96-44af-a5a9-e05c8b1ae2d2",
"info": "Example Expert Info"
}
],
"Owner": [
{
"id": " 30435ff9-9b96-44af-a5a9-e05c8b1ae2d2",
"info": "Example Owner Info"
}
]
},
"status": "ACTIVE",
"createdBy": "ExampleCreator",
"updatedBy": "ExampleUpdator",
"version": 0
}
}
下面是可用于为多云资源创建实体的示例。 此示例创建 Snowflake 资源,但你可以将其用于任何其他源
重要
若要将此示例用于 Azure 资源,请替换有效负载中的以下值:
- typeName
- 所有者
- qualifiedName
- name
- type
- 专家 ID
- 专家信息
- 所有者 ID
- 所有者信息
- Createdby
- Updatedby
请求 URL: https://{accountName}.purview.azure.com/catalog/api/atlas/v2/entity
方法:POST
身份验证:使用上一步中的令牌作为持有者令牌。
有效负载示例:
{
"referredEntities": {},
"entity": {
"typeName": "snowflake_table",
"attributes": {
"owner": "ExampleOwner",
"modifiedTime": 0,
"createTime": 0,
"qualifiedName": "snowflake://microsoft_partner.east-us-2.azure.snowflakecomputing.com/databases/AZUREPURVIEW_TESTDB/schemas/COMPANY/tables/PROJECT_INFO",
"name": "PROJECT_INFO",
"description": null,
"type": "TABLE"
},
"contacts": {
"Expert": [
{
"id": "30435ff9-9b96-44af-a5a9-e05c8b1ae2d2",
"info": "Example Expert Info"
}
],
"Owner": [
{
"id": "4b27e65f-6a15-4925-a4ef-2e640445079b",
"info": "Example Owner Info"
}
]
},
"status": "ACTIVE",
"createdBy": "ExampleCreator",
"updatedBy": "ExampleUpdator",
"version": 0
}
}