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-idclient-secretなど、インスタンスのさまざまなパラメーターを取得します。 「認証トークンを生成する方法」を参照してください。
  • エンタイトルメント API を呼び出すために必要なサービス プリンシパル アクセス トークンを生成します。 「認証トークンを生成する方法」を参照してください。
  • すべてのパラメーター値を手元に置いてください。 エンタイトルメント API を使用してさまざまなユーザー管理要求を実行する必要があります。

オブジェクト ID をフェッチする

Azure オブジェクト ID (OID) は Microsoft Entra ユーザー OID です。

  1. 最初にユーザーの OID を見つけます。 アプリケーションのアクセスを管理する場合は、OID ではなくアプリケーション ID (またはクライアント ID) を見つけて使用する必要があります。

  2. Azure Data Manager for Energy インスタンスの Entitlements API の呼び出しで、ユーザーの OID (またはアプリケーションのアクセスを管理する場合はアプリケーションまたはクライアント ID) をパラメーターとして入力します。 パラメーターでユーザーの電子メール ID を使用することはできません。また、オブジェクト ID を使用する必要があります。

    Microsoft Entra ID からオブジェクト ID を見つける方法を示すスクリーンショット。

    プロファイルから OID を見つける方法を示すスクリーンショット。

新しいデータ パーティションにユーザーを初めて追加する

  1. Azure Data Manager for Energy インスタンスの新しいデータ パーティションに最初の管理者を追加するには、インスタンスのプロビジョニングに使用された OID のアクセス トークンを使用します。

  2. Generate client-id access token を使用して、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 グループにユーザーを追加して、すべてのサービス グループへのアクセス権を付与します。
  4. ユーザーがデータ パーティションの管理者になります。 管理者は、必要なエンタイトルメント グループにユーザーを追加または削除できます。

    1. client-idclient-secret の値が同じ Generate user access token を使用して、管理者の認証トークンを取得します。
    2. admin's access token を使用してユーザーを追加する OSDU グループ (service.legal.editor@<data-partition-id>.<domain> など) を取得します。
    3. admin's access token を使用して、その OSDU グループにユーザーを追加します。
  5. users.data.root は、システムでレコードが自動的に作成されるときに、すべてのデータ レコードの既定の永続的な所有者です。 そのため、レコードを作成した、レコードの所有者であるユーザーが組織を離れた場合、users.data.root のメンバーは常に、すべてのデータ レコードにアクセスできます。 詳細については、データ ルート グループに関するページを参照してください。

  6. 特定の OSDU グループにメンバーを追加するとき、OSDU コミュニティで定義されている特定の ID に対して 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 グループにメンバーを追加する

  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 グループ ユーザーに対するサンプル要求

    dp1 という名前のデータ パーティションを持つ medstest という名前の Azure Data Manager for Energy インスタンスについて考えてみましょう。

        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>'
    

    サンプル要求

    dp1 という名前のデータ パーティションを持つ medstest という名前の Azure Data Manager for Energy インスタンスについて考えてみましょう。

        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. グループ内のユーザーを管理できる別の所有者がいない限り、グループの OWNER を削除しないでください。 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>'
    

    サンプル要求

    dp1 という名前のデータ パーティションを持つ medstest という名前の Azure Data Manager for Energy インスタンスについて考えてみましょう。

        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 インスタンスにデータを取り込むこともできます。