Использовать управляемую идентификацию для доступа к Azure Data Manager for Energy из других служб Azure

В этой статье описывается, как получить доступ к плоскости данных или плоскости управления Azure Data Manager для энергетики из других служб Microsoft Azure с помощью управляемого удостоверения.

Существует потребность в таких службах, как Azure Functions, чтобы они могли использовать API Azure Data Manager для энергетики. Это взаимодействие позволяет использовать лучшие возможности нескольких служб Azure.

Например, можно написать сценарий в Функции Azure для приема данных в Azure Data Manager для энергетики. В этом сценарии следует предположить, что Функции Azure является исходной службой, а Azure Data Manager for Energy является целевой службой.

В этой статье описаны пять основных шагов по настройке Функции Azure для доступа к Azure Data Manager для энергетики.

Обзор управляемых удостоверений

Управляемое удостоверение в Microsoft Entra ID позволяет вашему приложению удобно обращаться к другим защищенным ресурсам Microsoft Entra. Удостоверение личности управляется платформой Azure и не требует создания или смены секретных ключей. Любая служба Azure, которая хочет получить доступ к плоскости управления или плоскости данных Azure Data Manager для энергетики для выполнения любых операций, может использовать управляемое удостоверение для этого.

Существует два типа управляемых удостоверений:

  • Системой назначенные управляемые удостоверения их жизненный цикл связан с ресурсом, который создает их.
  • Управляемые удостоверения, назначаемые пользователем, могут использоваться на нескольких ресурсах.

Дополнительные сведения об управляемых удостоверениях см. в статье "Что такое управляемые удостоверения для ресурсов Azure"?

В настоящее время другие службы могут подключаться к Azure Data Manager для энергетики с помощью управляемого удостоверения, назначаемого системой или назначаемого пользователем. Однако Azure Data Manager для энергетики не поддерживает назначаемые системой управляемые удостоверения.

В этом сценарии вы будете использовать управляемое удостоверение, назначенное пользователем, в Azure Functions для вызова API канала данных в Azure Data Manager для энергетической системы.

Предварительные условия

Прежде чем приступать, создайте следующие ресурсы:

Шаг 1. Получение идентификатора объекта

Чтобы получить идентификатор объекта для пользовательского идентификатора, чтобы использовать API Azure Data Manager для энергетики:

  1. Войдите на портал Azure.
  2. Перейдите к управляемому удостоверению и затем выберите "Обзор".
  3. В разделе Essentials обратите внимание на значение Идентификатора объекта (principal).

Скриншот идентификатора объекта для назначаемой пользователем идентификации.

Шаг 2. Получение идентификатора приложения

Получите идентификатор приложения удостоверения, назначаемого пользователем, с помощью идентификатора объекта:

  1. В портале Azure перейдите к Microsoft Entra ID.
  2. В меню слева выберите Корпоративные приложения.
  3. В поле поиска по имени приложения или идентификатору объекта введите идентификатор объекта.
  4. Для приложения, отображающегося в результатах, обратите внимание на значение идентификатора приложения.

Снимок экрана идентификатора приложения для пользовательского удостоверения.

Шаг 3. Добавление управляемого идентификатора, назначенного пользователем, в Функции Azure

  1. В портале Azure перейдите к вашей функции Azure.
  2. В разделе Параметры учетной записи выберите элемент Удостоверение.
  3. Перейдите на вкладку Назначено пользователем и нажмите Добавить.
  4. Выберите существующую управляемую удостоверенность пользователя, затем нажмите Добавить. Затем вы вернеесь на назначенную пользователем вкладку.

Снимок экрана: только что добавленное пользователем удостоверение в функцию Azure.

Шаг 4. Добавление идентификатора приложения в группы разрешений

Затем добавьте идентификатор приложения в соответствующие группы, которые будут использовать службу прав для доступа к API Azure Data Manager для энергетики. В следующем примере идентификатор приложения добавляется в две группы:

  • users@[идентификатор раздела].dataservices.energy
  • users.datalake.editors@[идентификатор секции].dataservices.energy

Чтобы добавить идентификатор приложения, выполните следующие действия.

  1. Соберите следующие сведения:

    • Идентификатор клиента
    • ИД клиента
    • Секрет клиента
    • Универсальный код ресурса (URI) Azure Data Manager для энергетического сектора
    • Идентификатор секции данных
    • Маркер доступа
    • Идентификатор приложения управляемой идентичности
  2. Используйте API добавления участника для добавления идентификатора приложения назначаемого пользователем управляемого удостоверения в соответствующие группы прав.

    Примечание.

    В следующих командах обязательно используйте идентификатор приложения управляемой идентификации, а не идентификатор объекта.

    1. Чтобы добавить ID приложения в группу users@[идентификатор раздела].dataservices.energy, выполните команду cURL в Bash на Azure:

       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. Чтобы добавить идентификатор приложения в группу users.datalake.editors@[идентификатор секции].dataservices.energy, выполните следующую команду cURL через Bash в Azure:

       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 готовы к доступу к API Azure Data Manager для энергетики.

Функция Azure создает маркер с помощью удостоверения, назначаемого пользователем. Функция использует идентификатор приложения, который присутствует в экземпляре Azure Data Manager для 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.

Снимок экрана успешного сообщения Функций Azure.

После выполнения предыдущих шагов теперь можно использовать функции Azure для доступа к API-интерфейсам Azure Data Manager для энергетики с корректным использованием управляемых идентичностей.

Следующие шаги

Узнайте о Локбоксе: