Поделиться через


Управляемое удостоверение для Фабрика данных Azure

ПРИМЕНИМО К: Фабрика данных Azure Azure Synapse Analytics

Совет

Data Factory в Microsoft Fabric — это следующее поколение Фабрика данных Azure с более простой архитектурой, встроенным ИИ и новыми функциями. Если вы не знакомы с интеграцией данных, начните с Fabric Data Factory. Существующие рабочие нагрузки ADF могут обновляться до Fabric для доступа к новым возможностям в области обработки и анализа данных, аналитики в режиме реального времени и отчетов.

В этой статье показано, как понять управляемое удостоверение (ранее известное как управляемое удостоверение службы или MSI) и как оно работает в Фабрика данных Azure.

Примечание.

Мы рекомендуем использовать модуль Az PowerShell Azure для взаимодействия с Azure. Сведения о начале работы см. в разделе Install Azure PowerShell. Сведения о миграции в модуль Az PowerShell см. в статье Migrate Azure PowerShell из AzureRM в Az.

Обзор

Управляемые удостоверения устраняют необходимость в управлении учетными данными. Управляемые удостоверения предоставляют идентичность для экземпляра службы при подключении к ресурсам, которые поддерживают аутентификацию Microsoft Entra. Например, служба может использовать управляемое удостоверение для доступа к ресурсам, таким как Azure Key Vault, где администраторы данных могут безопасно хранить учетные данные или получать доступ к учетным записям хранения. Служба использует управляемое удостоверение для получения токенов Microsoft Entra.

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

  • Назначено системой: вы можете включить управляемое удостоверение непосредственно на экземпляре службы. Если вы разрешаете системное назначение управляемого удостоверения во время создания службы, в Microsoft Entra создается удостоверение, которое связано с жизненным циклом этого экземпляра службы. Только этот ресурс Azure может использовать это удостоверение для запроса токенов из Microsoft Entra ID. Поэтому при удалении ресурса Azure автоматически удаляет удостоверение за вас.
  • User-assigned: Вы также можете создать управляемое удостоверение как автономный ресурс Azure. Вы можете создать управляемое удостоверение, назначаемое пользователем и назначить его одному или нескольким экземплярам фабрики данных. В случае управляемых удостоверений, назначаемых пользователем, управление таким удостоверением осуществляется отдельно от ресурсов, которые его используют.

Примечание.

Доверенный обход не может использовать управляемые идентичности, назначенные пользователем. Он может использовать только системные управляемые удостоверения для подключения к служба хранилища Azure и Azure Key Vault.

Управляемое удостоверение дает следующие преимущества:

  • Храните учетные данные в Azure Key Vault, в этом случае управляемое удостоверение используется для аутентификации в Azure Key Vault.
  • Получите доступ к хранилищам данных или вычислительным ресурсам, используя проверку подлинности управляемого удостоверения, включая хранилище Azure BLOB-объектов, Azure Data Explorer, Azure Data Lake Storage 1-го поколения, Azure Data Lake Storage 2-го поколения, База данных SQL Azure, Управляемый экземпляр SQL Azure, Azure Synapse Analytics, REST, активности Databricks, Web активности и многое другое. Дополнительные сведения см. в статьях о соединителях и действиях.
  • Управляемое удостоверение также используется для шифрования и расшифровки данных и метаданных с помощью ключа, управляемого клиентом, хранящегося в Azure Key Vault, обеспечивая двойное шифрование.

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

Чтобы эффективно использовать управляемые удостоверения в Фабрика данных Azure, необходимо назначить определенные роли, чтобы обеспечить надлежащий доступ и функциональные возможности. Ниже приведены необходимые роли:

  • Системно назначаемое управляемое удостоверение

    • Роль читателя. Эта роль необходима для чтения метаданных ресурсов.
    • Роль участника. Эта роль необходима для управления ресурсами, к которым требуется получить доступ управляемому удостоверению.
  • Управляемое удостоверение, назначаемое пользователем

    • Роль оператора управляемых удостоверений: Эта роль позволяет управлять управляемым удостоверением, назначаемым пользователем.
    • Роль читателя. Эта роль необходима для чтения метаданных ресурсов.
    • Роль участника. Эта роль необходима для управления ресурсами, к которым требуется получить доступ управляемому удостоверению.

Примечание.

  • Пользователи с ролью участника фабрики данных могут создавать и запускать конвейеры, использующие управляемое удостоверение, назначаемое системой (SAMI), и любые назначаемые пользователем управляемые удостоверения (UAMI), подключенные к фабрике данных. Эти идентификации наследуют все разрешения, уже предоставленные им для внешних ресурсов (например, учетные записи хранения, базы данных SQL, Key Vault, и Fabric Lakehouse).
  • Назначьте роль участника только доверенным принципалам и на максимально суженную область. Просмотрите и ограничьте разрешения, предоставленные управляемым удостоверениям фабрики данных, используйте RBAC с наименьшими привилегиями в дочерних ресурсах, а также регулярно аудитируйте назначения ролей и журналы действий.

Системное управляемое удостоверение

Примечание.

Управляемое удостоверение, назначаемое системой, также называется просто управляемым удостоверением в документации и в Data Factory Studio для целей обеспечения обратной совместимости. При обращении к 'User-assigned managed identity', мы будем это явно упоминать.

Генерация управляемого удостоверения, назначенного системой

Управляемое удостоверение, назначаемое системой, создается следующим образом:

  • При создании фабрики данных с помощью портала Azure или PowerShell управляемое удостоверение создается всегда автоматически.
  • При создании фабрики данных с помощью SDK управляемое удостоверение будет создано только в том случае, если в объекте фабрики для создания указано "Identity = new FactoryIdentity()". См. пример в разделе .NET Быстрый старт - создание фабрики данных.
  • При создании фабрики данных с помощью REST API управляемое удостоверение будет создано только в том случае, если в теле запроса указана секция "identity". Пример см. в кратком руководстве по REST - создание фабрики данных.

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

Примечание.

  • Управляемое удостоверение изменить невозможно. Обновление экземпляра службы, который уже имеет управляемую личность, не повлияет, и управляемая личность останется без изменений.
  • Если вы обновите экземпляр службы, уже имеющей управляемое удостоверение, не указав параметр "identity" в объектах фабрики или раздел "identity" в теле запроса REST, возникнет ошибка.
  • При удалении экземпляра службы связанный управляемый идентификатор также будет удален.

Создание системно назначаемого управляемого удостоверения с помощью PowerShell

Вызовите команду Set-AzDataFactoryV2, затем вы увидите, что поля "Identity" были вновь созданы.

PS C:\> Set-AzDataFactoryV2 -ResourceGroupName <resourceGroupName> -Name <dataFactoryName> -Location <region>

DataFactoryName   : ADFV2DemoFactory
DataFactoryId     : /subscriptions/<subsID>/resourceGroups/<resourceGroupName>/providers/Microsoft.DataFactory/factories/ADFV2DemoFactory
ResourceGroupName : <resourceGroupName>
Location          : East US
Tags              : {}
Identity          : Microsoft.Azure.Management.DataFactory.Models.FactoryIdentity
ProvisioningState : Succeeded

Создание управляемого удостоверения с системным назначением с помощью REST API

Примечание.

При попытке обновить экземпляр службы, который уже имеет управляемую идентификацию, без указания параметра identity в объекте фабрики или без добавления раздела identity в теле запроса REST, произойдет ошибка.

Вызовите API с разделом identity в тексте запроса, как в примере ниже.

PATCH https://management.azure.com/subscriptions/<subsID>/resourceGroups/<resourceGroupName>/providers/Microsoft.DataFactory/factories/<data factory name>?api-version=2018-06-01

Текст запроса: добавьте "identity": { "type": "SystemAssigned" }.

{
    "name": "<dataFactoryName>",
    "location": "<region>",
    "properties": {},
    "identity": {
        "type": "SystemAssigned"
    }
}

Ответ: управляемое удостоверение создается автоматически, и раздел идентификации заполняется соответствующим образом.

{
    "name": "<dataFactoryName>",
    "tags": {},
    "properties": {
        "provisioningState": "Succeeded",
        "loggingStorageAccountKey": "**********",
        "createTime": "2017-09-26T04:10:01.1135678Z",
        "version": "2018-06-01"
    },
    "identity": {
        "type": "SystemAssigned",
        "principalId": "aaaaaaaa-bbbb-cccc-1111-222222222222",
        "tenantId": "aaaabbbb-0000-cccc-1111-dddd2222eeee"
    },
    "id": "/subscriptions/<subscriptionId>/resourceGroups/<resourceGroupName>/providers/Microsoft.DataFactory/factories/<dataFactoryName>",
    "type": "Microsoft.DataFactory/factories",
    "location": "<region>"
}

Создание управляемой идентичности, назначенной системой, с помощью шаблона Azure Resource Manager

Шаблон: add "identity": { "type": "SystemAssigned" }.

{
    "contentVersion": "1.0.0.0",
    "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
    "resources": [{
        "name": "<dataFactoryName>",
        "apiVersion": "2018-06-01",
        "type": "Microsoft.DataFactory/factories",
        "location": "<region>",
        "identity": {
            "type": "SystemAssigned"
        }
    }]
}

Создайте управляемую идентичность, назначаемую системой, используя SDK

Вызовите функцию create_or_update с параметром Identity, равным new FactoryIdentity(). Пример кода с помощью .NET:

Factory dataFactory = new Factory
{
    Location = <region>,
    Identity = new FactoryIdentity()
};
client.Factories.CreateOrUpdate(resourceGroup, dataFactoryName, dataFactory);

Получение управляемой идентичности, назначенной системой

Управляемое удостоверение можно получить на портале Azure или программно. В разделах ниже приведено несколько примеров.

Совет

Если управляемое удостоверение не отображается, создайте управляемое удостоверение, обновив экземпляр службы.

Получение системно назначаемого управляемого удостоверения с помощью портала Azure

Сведения об управляемом удостоверении можно найти на портале Azure -> вашей фабрике данных -> Свойства.

Показывает портал Azure с идентификатором объекта удостоверения, управляемого системой, и арендатором идентификаторов для Фабрика данных Azure.

  • ID объекта управляемой идентичности.
  • Управляемый удостоверением арендатор.

Сведения об управляемом удостоверении также отображаются при создании связанного сервиса, поддерживающего аутентификацию с управляемым удостоверением, например Azure Blob, Azure Data Lake Storage, Azure Key Vault и т. д.

Чтобы предоставить разрешения для управляемого удостоверения Фабрики данных вашим источникам данных Azure, выполните следующие действия. Подробные инструкции см. в статье о назначении ролей Azure с помощью портала Azure.

  1. Выберите элемент управления Access (IAM) на странице портала Azure для источника данных.

  2. Выберите Добавить>Добавить назначение ролей.

    Снимок экрана: страница

  3. Выберите требуемую роль, чтобы предоставить необходимый доступ к источнику данных. Это может отличаться в зависимости от источника данных и разрешений, необходимых для фабрики данных. Например, если фабрике данных требуется только чтение из SQL Server Azure, выберите роль Reader.

  4. На вкладке "Участники" выберите "Управляемое удостоверение" и нажмите "Выбрать участников".

  5. Выберите подписку Azure.

  6. В разделе Назначаемое системой управляемое удостоверение выберите Фабрика данных, а затем выберите фабрику данных. Вы также можете использовать идентификатор объекта или имя фабрики данных (как имя управляемой идентичности), чтобы найти эту идентичность. Чтобы получить идентификатор приложения управляемого удостоверения, используйте PowerShell.

  7. Чтобы назначить роль, на вкладке Проверка и назначение выберите Проверка и назначение.

Получение назначаемого системой управляемого удостоверения с использованием PowerShell

Идентификатор субъекта и идентификатор клиента управляемого удостоверения возвращаются при получении определенного экземпляра службы данных, как указано ниже. Используйте PrincipalId для предоставления доступа:

PS C:\> (Get-AzDataFactoryV2 -ResourceGroupName <resourceGroupName> -Name <dataFactoryName>).Identity

PrincipalId                          TenantId
-----------                          --------
aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb aaaabbbb-0000-cccc-1111-dddd2222eeee

Чтобы получить идентификатор приложения, скопируйте указанный выше идентификатор субъекта, а затем выполните следующую команду Microsoft Entra ID с идентификатором субъекта в качестве параметра.

PS C:\> Get-AzADServicePrincipal -ObjectId aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb

ServicePrincipalNames : {00001111-aaaa-2222-bbbb-3333cccc4444, https://identity.azure.net/P86P8g6nt1QxfPJx22om8MOooMf/Ag0Qf/nnREppHkU=}
ApplicationId         : 00001111-aaaa-2222-bbbb-3333cccc4444
DisplayName           : ADFV2DemoFactory
Id                    : aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb
Type                  : ServicePrincipal

Получение управляемого удостоверения с использованием REST API

Идентификатор субъекта и идентификатор клиента управляемого удостоверения возвращаются при получении определенного экземпляра службы данных, как указано ниже.

Вызовите указанный ниже API в запросе:

GET https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DataFactory/factories/{factoryName}?api-version=2018-06-01

Ответ: вы получите ответ, как показано в примере ниже. Раздел "identity" заполняется соответствующим образом.

{
    "name":"<dataFactoryName>",
    "identity":{
        "type":"SystemAssigned",
        "principalId":"bbbbbbbb-cccc-dddd-2222-333333333333",
        "tenantId":"aaaabbbb-0000-cccc-1111-dddd2222eeee"
    },
    "id":"/subscriptions/<subscriptionId>/resourceGroups/<resourceGroupName>/providers/Microsoft.DataFactory/factories/<dataFactoryName>",
    "type":"Microsoft.DataFactory/factories",
    "properties":{
        "provisioningState":"Succeeded",
        "createTime":"2020-02-12T02:22:50.2384387Z",
        "version":"2018-06-01",
        "factoryStatistics":{
            "totalResourceCount":0,
            "maxAllowedResourceCount":0,
            "factorySizeInGbUnits":0,
            "maxAllowedFactorySizeInGbUnits":0
        }
    },
    "eTag":"\"03006b40-XXXX-XXXX-XXXX-5e43617a0000\"",
    "location":"<region>",
    "tags":{

    }
}

Совет

Чтобы получить управляемое удостоверение из шаблона ARM, добавьте раздел outputs в JSON ARM:

{
    "outputs":{
        "managedIdentityObjectId":{
            "type":"string",
            "value":"[reference(resourceId('Microsoft.DataFactory/factories', parameters('<dataFactoryName>')), '2018-06-01', 'Full').identity.principalId]"
        }
    }
}

Управляемое удостоверение, назначаемое пользователем

Вы можете создавать, удалять и управлять управляемыми удостоверениями, назначаемыми пользователями, в Microsoft Entra ID. Для получения дополнительных сведений обратитесь к статье Создание, просмотр, удаление или назначение роли управляемому удостоверению, назначенному пользователем, с помощью портала Azure.

Чтобы использовать управляемое удостоверение, назначаемое пользователем, необходимо сначала создать учетные данные в экземпляре службы для UAMI.

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

Обзор тему Управляемые удостоверения для ресурсов Azure для получения дополнительной информации по управляемым удостоверениям для ресурсов Azure, на которых основывается управляемое удостоверение в Фабрика данных Azure.

См. раздел под названием Limitations об управляемых идентификаторах, который также относится к управляемым идентификаторам в Фабрика данных Azure.