Share via


使用受控識別從其他 Azure 服務存取 Azure Data Manager for Energy

本文說明如何使用受控識別,從其他 Microsoft Azure 服務存取 Azure Data Manager for Energy 的資料平面或控制平面。

Azure Functions 等服務需要能夠取用 Azure Data Manager for Energy API。 此互通性可讓您使用多項 Azure 服務的最佳功能。

例如,您可以在 Azure Functions 中撰寫指令碼,以在 Azure Data Manager for Energy 中擷取資料。 在該案例中,您應該假設 Azure Functions 是來源服務,而 Azure Data Manager for Energy 是目標服務。

本文將逐步引導您完成設定 Azure Functions 以存取 Azure Data Manager for Energy 的五個主要步驟。

受控識別的概觀

Microsoft Entra ID 的受控識別可讓您的應用程式輕鬆存取其他受 Microsoft Entra 保護的資源。 身分識別由 Azure 平台負責管理,因此您不需要建立或輪替任何祕密。 任何想要針對任何作業存取 Azure Data Manager for Energy 控制平面或資料平面的 Azure 服務,都可以使用受控識別來執行此動作。

受控身分識別有兩種:

  • 系統指派的受控身分識別會將其生命週期繫結至已建立它們的資源。
  • 使用者指派的受控識別則可用於多個資源。

若要深入了解受控識別,請參閱什麼是 Azure 資源受控識別?

目前,其他服務可使用系統指派或使用者指派的受控識別,連線到 Azure Data Manager for Energy。 不過,Azure Data Manager for Energy 不支援系統指派的受控識別。

對於本文中的案例,您將使用 Azure Functions 中使用者指派的受控識別,在 Azure Data Manager for Energy 中呼叫資料平面 API。

必要條件

開始之前,請先建立下列資源:

步驟 1:擷取物件識別碼

若要擷取將存取 Azure Data Manager for Energy API 的使用者指派身分識別的物件識別碼:

  1. 登入 Azure 入口網站
  2. 移至受控識別,然後選取 [概觀]
  3. 在 [基本資訊] 底下,記下 [物件 (主體) 識別碼] 值。

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

步驟 2:擷取應用程式識別碼

使用物件識別碼擷取使用者指派身分識別的應用程式識別碼:

  1. 在 Azure 入口網站中,移至 [Microsoft Entra ID]
  2. 在左側功能表中,選取 [企業應用程式]
  3. 在 [依應用程式名稱或物件識別碼搜尋] 方塊中,輸入物件識別碼。
  4. 針對結果中顯示的應用程式,請記下 [應用程式識別碼] 值。

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

步驟 3:將使用者指派的受控識別新增至 Azure Functions

  1. 在 Azure 入口網站中,移至您的 Azure 函式。
  2. 在 [帳戶設定] 底下,選取 [身分識別]。
  3. 選取 [使用者指派] 索引標籤,然後選取 [新增]
  4. 選取您現有的使用者指派受控識別,然後選取 [新增]。 您接著會返回 [使用者指派] 索引標籤。

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

步驟 4:將應用程式識別碼新增至權利群組

接下來,將應用程式識別碼新增至將使用權利服務來存取 Azure Data Manager for Energy API 的適當群組。 下列範例會將應用程式識別碼新增至兩個群組:

  • users@[partition ID].dataservices.energy
  • users.datalake.editors@[partition ID].dataservices.energy

若要新增應用程式識別碼:

  1. 收集以下資訊:

    • 租用戶識別碼
    • 用戶端識別碼
    • 用戶端密碼
    • Azure Data Manager for Energy URI
    • 資料分割區識別碼
    • 存取權杖
    • 受控識別的應用程式識別碼
  2. 使用新增成員 API,將使用者指派受控識別的應用程式識別碼新增至適當的權利群組。

    注意

    在下列命令中,務必使用受控識別的應用程式識別碼,而不是物件識別碼。

    1. 若要將應用程式識別碼新增至 users@[partition 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. 若要將應用程式識別碼新增至 sers.datalake.editors@[partition 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 函式會使用使用者指派的身分識別來產生權杖。 函式會在產生權杖時,使用 Azure Data Manager for Energy 執行個體中存在的應用程式識別碼。

以下是 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 來存取 Azure Data Manager for Energy API 並適當地使用受控識別。

下一步

了解加密箱: