マネージド ID を使用して、他の Azure サービスから Azure Data Manager for Energy にアクセスする

この記事では、マネージド ID を使用して、他の Microsoft Azure サービスから Azure Data Manager for Energy のデータ プレーンまたはコントロール プレーンにアクセスする方法について説明します。

Azure Functions などのサービスで、Azure Data Manager for Energy API を使用できるようにする必要があります。 この相互運用性により、複数の Azure サービスの最適な機能を使用できます。

たとえば、Azure Data Manager for Energy でデータを取り込むためのスクリプトを Azure Functions で記述できます。 そのシナリオでは、Azure Functions がソース サービスであり、Azure Data Manager for Energy がターゲット サービスであると想定する必要があります。

この記事では、Azure Data Manager for Energy にアクセスするように Azure Functions を構成するための 5 つの主な手順について説明します。

マネージド ID の概要

Microsoft Entra ID のマネージド ID により、アプリケーションは、Microsoft Entra で保護された他のリソースに簡単にアクセスすることができます。 ID は Azure プラットフォームによって管理され、シークレットを作成したりローテーションしたりする必要はありません。 Azure Data Manager for Energy コントロール プレーンまたはデータ プレーンにアクセスして操作を行うどの Azure サービスでも、マネージド ID を使用してこれを行うことができます。

マネージド ID には、次の 2 種類があります。

  • システム割り当てマネージド ID のライフサイクルは、それらを作成したリソースに関連付けられています。
  • ユーザー割り当てマネージド ID は、複数のリソースで使用できます。

マネージド ID の詳細については、Azure リソースのマネージド ID とはを参照してください。

現在、他のサービスでは、Azure Data Manager for Energy への接続に、システム割り当てマネージド ID を使用することも、ユーザー割り当てマネージド ID を使用することもできます。 ただし、Azure Data Manager for Energy では、システム割り当てマネージド ID はサポートされていません。

この記事のシナリオでは、Azure Functions でユーザー割り当てマネージド ID を使用して、Azure Data Manager for Energy のデータ プレーン API を呼び出します。

前提条件

開始する前に、次のリソースを作成します。

手順 1: オブジェクト ID を取得する

Azure Data Manager for Energy API にアクセスするユーザー割り当て ID のオブジェクト ID を取得するには:

  1. Azure portal にサインインします。
  2. マネージド ID に移動し、[概要] を選択します。
  3. Essentials で、[オブジェクト (プリンシパル) ID] の値をメモします。

Screenshot of the object ID for a user-assigned identity.

手順 2: アプリケーション ID を取得する

オブジェクト ID を使用して、ユーザー割り当て ID のアプリケーション ID を取得します。

  1. Azure portal で、[Microsoft Entra ID] に移動します。
  2. 左側のメニューで、[エンタープライズ アプリケーション] を選択します。
  3. [アプリケーションの名前またはオブジェクト ID で検索] ボックスに、オブジェクト ID を入力します。
  4. 結果に表示されるアプリケーションについて、[アプリケーション ID] の値をメモします。

Screenshot of the application ID for a user-assigned identity.

手順 3: ユーザー割り当てマネージド ID を Azure Functions に追加する

  1. Azure portal で Azure 関数にアクセスします。
  2. [アカウント設定] で、[ID] を選択します。
  3. [ユーザー割り当て] タブを選択し、[追加] を選択します。
  4. 既存のユーザー割り当てマネージド ID を選択し、[追加] を選択します。 [ユーザー割り当て] タブに自動的に戻ります。

Screenshot of a newly added user-assigned identity to an Azure function.

手順 4: エンタイトルメント グループにアプリケーション ID を追加する

次に、エンタイトルメント サービスを使用して Azure Data Manager for Energy API にアクセスする適切なグループに、アプリケーション ID を追加します。 次の例では、アプリケーション ID を 2 つのグループに追加します。

  • users@[パーティション ID].dataservices.energy
  • users.datalake.editors@[パーティション ID].dataservices.energy

アプリケーション ID を追加するには:

  1. 次の情報を集めます。

    • テナント ID
    • クライアント ID
    • クライアント シークレット
    • Azure Data Manager for Energy URI
    • データ パーティション ID
    • アクセス トークン
    • マネージド ID のアプリケーション ID
  2. メンバーの追加 API を使用して、ユーザー割り当てマネージド ID のアプリケーション ID を適切なエンタイトルメント グループに追加します。

    Note

    次のコマンドでは、オブジェクト ID ではなく、マネージド ID のアプリケーション ID を必ず使用してください。

    1. アプリケーション ID を users@[パーティション ID].dataservices.energy グループに追加するには、Azure の Bash を使用して次の cURL コマンドを実行します。

       curl --location --request POST 'https://<Azure Data Manager for Energy URI>/api/entitlements/v2/groups/users@ <data-partition-id>.dataservices.energy/members' \
          --header 'data-partition-id: <data-partition-id>' \
          --header 'Authorization: Bearer \
          --header 'Content-Type: application/json' \
          --data-raw '{
                          "email": "<application ID of the managed identity>",
                          "role": "MEMBER"
                      }'
      

      応答のサンプルを次に示します。

      {
          "email": "<application ID of the managed identity>",
          "role": "MEMBER"
          }
      
    2. アプリケーション ID を users.datalake.editors@[パーティション ID].dataservices.energy グループに追加するには、Azure の Bash を使用して次の cURL コマンドを実行します。

       curl --location --request POST 'https://<Azure Data Manager for Energy URI>/api/entitlements/v2/groups/ users.datalake.editors@ <data-partition-id>.dataservices.energy/members' \
          --header 'data-partition-id: <data-partition-id>' \
          --header 'Authorization: Bearer \
          --header 'Content-Type: application/json' \
          --data-raw '{
                          "email": "<application ID of the managed identity>",
                          "role": "MEMBER"
                      }'
      

      応答のサンプルを次に示します。

      {
          "email": "<application ID of the managed identity>",
          "role": "MEMBER"
          }
      

手順 5: トークンを生成する

これで、Azure Functions で Azure Data Manager for Energy API にアクセスする準備ができました。

Azure 関数では、ユーザー割り当て ID を使用してトークンを生成します。 この関数では、トークンの生成中に Azure Data Manager for Energy インスタンスに存在するアプリケーション ID を使用します。

Azure 関数コードの例を次に示します。

import logging
import requests
import azure.functions as func
from msrestazure.azure_active_directory import MSIAuthentication

def main(req: func.HttpRequest) -> str:
    logging.info('Python HTTP trigger function processed a request.')

    //To authenticate by using a managed identity, you need to pass the Azure Data Manager for Energy application ID as the resource.     
    //To use a user-assigned identity, you should include the   
    //client ID as an additional parameter.
    //Managed identity using user-assigned identity: MSIAuthentication(client_id, resource)

    creds = MSIAuthentication(client_id="<client_id_of_managed_identity>”, resource="<meds_app_id>")
    url = "https://<meds-uri>/api/entitlements/v2/groups"
    payload = {}
    // Passing the data partition ID of Azure Data Manager for Energy in headers along with the token received using the managed instance.
    headers = {
        'data-partition-id': '<data partition id>',
        'Authorization': 'Bearer ' + creds.token["access_token"]
    }
    response = requests.request("GET", url, headers=headers, data=payload, verify=False)
    return response.text

Azure Functions から次の正常な応答が得られます。

Screenshot of a success message from Azure Functions.

上記の手順が完了したので、Azure Functions を使用して、マネージド ID を適切に使用して Azure Data Manager for Energy にアクセスできるようになりました。

次のステップ

Lockbox の詳細: