你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
在 Azure Data Manager for Energy 中管理用户
在本文中,你将了解如何在 Azure Data Manager for Energy 的 OSDU 组中管理用户及其成员身份。 权利 API 用于向 OSDU 组添加或移除用户,并在用户尝试访问 OSDU 服务或数据时检查权利。 有关 OSDU 组概念的详细信息,请参阅权利。
先决条件
- 创建 Azure Data Manager for Energy 实例。 请参阅如何创建 Azure Data Manager for Energy 实例。
- 获取实例的各种参数,例如
client-id
和client-secret
。 请参阅如何生成身份验证令牌。 - 生成调用权利 API 所需的服务主体访问令牌。 请参阅如何生成身份验证令牌。
- 将所有参数值随手保留。 通过权利 API 运行不同的用户管理请求时需要它们。
提取对象 ID
Azure 对象 ID (OID) 是 Microsoft Entra 用户 OID。
首先查找用户的 OID。 如果要管理应用程序的访问,则必须查找并使用应用程序 ID(或客户端 ID),而不是 OID。
在调用 Azure Data Manager for Energy 实例的权利 API 时,输入用户的 OID(或应用程序或客户端 ID,如果是管理应用程序的访问权限的话)作为参数。 不能在参数中使用用户的电子邮件 ID,必须使用对象 ID。
首次在新数据分区中添加用户
若要将第一个管理员添加到 Azure Data Manager for Energy 实例的新数据分区,请使用用于预配实例的 OID 的访问令牌。
使用生成客户端 ID 访问令牌获取
client-id
访问令牌。如果尝试直接使用你自己的访问令牌添加权利,则会导致 401 错误。
client-id
访问令牌必须用于在系统中添加第一组用户。 然后,这些用户(具有管理员访问权限)可以使用他们自己的访问令牌管理更多用户。使用以下部分中概述的命令,使用
client-id
访问令牌执行以下步骤:- 将用户添加到具有 OWNER 角色的
users@<data-partition-id>.<domain>
OSDU 组。 - 将用户添加到具有 OWNER 角色的
users.datalake.ops@<data-partition-id>.<domain>
OSDU 组,以授予所有服务组的访问权限。
- 将用户添加到具有 OWNER 角色的
用户会成为数据分区的管理员。 然后,管理员可以向所需的权利组添加或移除更多用户:
- 使用生成用户访问令牌并使用相同的
client-id
和client-secret
值获取管理员的身份验证令牌。 - 使用管理员的访问令牌获取要向其添加更多用户的 OSDU 组,例如
service.legal.editor@<data-partition-id>.<domain>
。 - 使用管理员的访问令牌将更多用户添加到该 OSDU 组。
- 使用生成用户访问令牌并使用相同的
users.data.root
是系统中自动创建记录时所有数据记录的默认和永久所有者。 因此,如果创建记录且是记录的所有者的用户离开组织,则users.data.root
的成员始终有权访问所有数据记录。 有关更多详细信息,请查看数据根组。向给定 OSDU 组添加更多成员时,OSDU 社区定义的给定标识的成员数限制为 5000 个。
若要详细了解 OSDU 启动组,请查看此处。
获取在数据分区中有权访问的所有组的列表
在 Azure Cloud Shell 中运行以下 curl 命令,获取在 Azure Data Manager for Energy 实例的特定数据分区中你可用或有权访问的所有组。
curl --location --request GET "https://<adme-url>/api/entitlements/v2/groups/" \
--header 'data-partition-id: <data-partition>' \
--header 'Authorization: Bearer <access_token>'
将成员添加到数据分区中的 OSDU 组
在 Azure Cloud Shell 中运行以下 curl 命令,使用权利服务将用户添加到用户组。
要为参数
email
发送的值是用户的 OID,而不是用户的电子邮件地址。curl --location --request POST 'https://<adme-url>/api/entitlements/v2/groups/<group-name>@<data-partition-id>.<domain>/members' \ --header 'data-partition-id: <data-partition-id>' \ --header 'Authorization: Bearer <access_token>' \ --header 'Content-Type: application/json' \ --data-raw '{ "email": "<Object_ID_1>", "role": "MEMBER" }, { "email": "<Object_ID_2>", "role": "MEMBER" } '
用户 OSDU 组的示例请求
假设有一个名为
medstest
的 Azure Data Manager for Energy 实例,它具有一个名为dp1
的数据分区。curl --location --request POST 'https://medstest.energy.azure.com/api/entitlements/v2/groups/users@medstest-dp1.dataservices.energy/members' \ --header 'data-partition-id: medstest-dp1' \ --header 'Authorization: Bearer abcdefgh123456.............' \ --header 'Content-Type: application/json' \ --data-raw '{ "email": "90e0d063-2f8e-4244-860a-XXXXXXXXXX", "role": "MEMBER" }'
示例响应
{ "email": "90e0d063-2f8e-4244-860a-XXXXXXXXXX", "role": "MEMBER" }
法律服务编辑器 OSDU 组的示例请求
curl --location --request POST 'https://medstest.energy.azure.com/api/entitlements/v2/groups/service.legal.editor@medstest-dp1.dataservices.energy/members' \ --header 'data-partition-id: medstest-dp1' \ --header 'Authorization: Bearer abcdefgh123456.............' \ --header 'Content-Type: application/json' \ --data-raw '{ "email": "90e0d063-2f8e-4244-860a-XXXXXXXXXX", "role": "MEMBER" }'
重要
应用 ID 是所有组的默认所有者。
获取数据分区中给定用户的 OSDU 组
在 Azure Cloud Shell 中运行以下 curl 命令,以获取与用户关联的所有组。
curl --location --request GET 'https://<adme-url>/api/entitlements/v2/members/<obejct-id>/groups?type=none' \ --header 'data-partition-id: <data-partition-id>' \ --header 'Authorization: Bearer <access_token>'
示例请求
假设有一个名为
medstest
的 Azure Data Manager for Energy 实例,它具有一个名为dp1
的数据分区。curl --location --request GET 'https://medstest.energy.azure.com/api/entitlements/v2/members/90e0d063-2f8e-4244-860a-XXXXXXXXXX/groups?type=none' \ --header 'data-partition-id: medstest-dp1' \ --header 'Authorization: Bearer abcdefgh123456.............'
示例响应
{ "desId": "90e0d063-2f8e-4244-860a-XXXXXXXXXX", "memberEmail": "90e0d063-2f8e-4244-860a-XXXXXXXXXX", "groups": [ { "name": "users", "description": "Datalake users", "email": "users@medstest-dp1.dataservices.energy" }, { "name": "service.search.user", "description": "Datalake Search users", "email": "service.search.user@medstest-dp1.dataservices.energy" } ] }
从数据分区中的组中移除成员
在 Azure Cloud Shell 中运行以下 curl 命令,从组中移除特定成员。
如果 API 尝试从
users@
组中移除成员,但该成员已加入其他组,则 API 请求将失败。 若要从users@
组中移除成员(进而从数据分区中移除成员),可以使用 Delete 命令。curl --location --request DELETE 'https://<adme-url>/api/entitlements/v2/groups/<group-id>/members/<object-id>' \ --header 'data-partition-id: <data-partition-id>' \ --header 'Authorization: Bearer <access_token>'
从数据分区中的所有组中删除特定用户
在 Azure Cloud Shell 中运行以下 curl 命令,从特定数据分区中删除特定用户。
请不要删除组的所有者,除非有另一个所有者可以管理该组中的用户。 但 users.data.root 是所有数据记录的默认和永久所有者。
curl --location --request DELETE 'https://<adme-url>/api/entitlements/v2/members/<object-id>' \ --header 'data-partition-id: <data-partition-id>' \ --header 'Authorization: Bearer <access_token>'
示例请求
假设有一个名为
medstest
的 Azure Data Manager for Energy 实例,它具有一个名为dp1
的数据分区。curl --location --request DELETE 'https://medstest.energy.azure.com/api/entitlements/v2/members/90e0d063-2f8e-4244-860a-XXXXXXXXXX' \ --header 'data-partition-id: medstest-dp1' \ --header 'Authorization: Bearer abcdefgh123456.............'
示例响应
成功响应没有输出。
后续步骤
将用户添加到组后,可以:
还可以将数据引入 Azure Data Manager for Energy 实例: