你当前正在访问 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 组概念的详细信息,请参阅权利

先决条件

提取对象 ID

Azure 对象 ID (OID) 是 Microsoft Entra 用户 OID。

  1. 首先查找用户的 OID。 如果要管理应用程序的访问,则必须查找并使用应用程序 ID(或客户端 ID),而不是 OID。

  2. 在调用 Azure Data Manager for Energy 实例的权利 API 时,输入用户的 OID(或应用程序或客户端 ID,如果是管理应用程序的访问权限的话)作为参数。 不能在参数中使用用户的电子邮件 ID,必须使用对象 ID。

    显示从 Microsoft Entra ID 中查找对象 ID 的屏幕截图。

    显示从配置文件中查找 OID 的屏幕截图。

首次在新数据分区中添加用户

  1. 若要将第一个管理员添加到 Azure Data Manager for Energy 实例的新数据分区,请使用用于预配实例的 OID 的访问令牌。

  2. 使用生成客户端 ID 访问令牌获取 client-id 访问令牌。

    如果尝试直接使用你自己的访问令牌添加权利,则会导致 401 错误。 client-id 访问令牌必须用于在系统中添加第一组用户。 然后,这些用户(具有管理员访问权限)可以使用他们自己的访问令牌管理更多用户。

  3. 使用以下部分中概述的命令,使用 client-id 访问令牌执行以下步骤:

    1. 将用户添加到具有 OWNER 角色的 users@<data-partition-id>.<domain> OSDU 组。
    2. 将用户添加到具有 OWNER 角色的 users.datalake.ops@<data-partition-id>.<domain> OSDU 组,以授予所有服务组的访问权限。
    3. 将用户添加到具有 OWNER 角色的 users.data.root@<data-partition-id>.<domain> OSDU 组,以授予所有数据组的访问权限。
  4. 用户会成为数据分区的管理员。 然后,管理员可以向所需的权利组添加或移除更多用户:

    1. 使用生成用户访问令牌并使用相同的 client-idclient-secret 值获取管理员的身份验证令牌。
    2. 使用管理员的访问令牌获取要向其添加更多用户的 OSDU 组,例如 service.legal.editor@<data-partition-id>.<domain>
    3. 使用管理员的访问令牌将更多用户添加到该 OSDU 组。

若要详细了解 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 组

  1. 在 Azure Cloud Shell 中运行以下 curl 命令,使用权利服务将用户添加到用户组。

  2. 要为参数 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 是所有组的默认所有者。

    显示 Microsoft Entra ID 中的应用程序 ID 的屏幕截图。

获取数据分区中给定用户的 OSDU 组

  1. 在 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"
            }
        ]
        }
    

从数据分区中的组中移除成员

  1. 在 Azure Cloud Shell 中运行以下 curl 命令,从组中移除特定成员。

  2. 如果 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>'
    

从数据分区中的所有组中删除特定用户

  1. 在 Azure Cloud Shell 中运行以下 curl 命令,从特定数据分区中删除特定用户。

  2. 请不要删除组的所有者,除非有另一个所有者可以管理该组中的用户。 但 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 实例: