Управляемое удостоверение для Azure Synapse

Эта статья поможет понять, что такое управляемое удостоверение (ранее — Управляемое удостоверение службы, MSI) и как оно используется в Azure Synapse.

Примечание.

Мы рекомендуем использовать модуль Azure Az PowerShell для взаимодействия с Azure. Чтобы начать работу, см. статью Установка Azure PowerShell. Дополнительные сведения см. в статье Перенос Azure PowerShell с AzureRM на Az.

Обзор

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

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

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

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

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

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

Примечание.

Управляемое удостоверение, назначаемое системой, также называется просто управляемым удостоверением в других разделах документации и пользовательском интерфейсе Synapse Studio для обеспечения обратной совместимости. При обращении к нему мы будем явно говорить "управляемое удостоверение, назначаемое пользователем".

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

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

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

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

Примечание.

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

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

Вызовите команду New-AzSynapseWorkspace, после чего отобразятся только что созданные поля Identity:

PS C:\> $creds = New-Object System.Management.Automation.PSCredential ("ContosoUser", $password)
PS C:\> New-AzSynapseWorkspace -ResourceGroupName <resourceGroupName> -Name <workspaceName> -Location <region> -DefaultDataLakeStorageAccountName <storageAccountName> -DefaultDataLakeStorageFileSystem <fileSystemName> -SqlAdministratorLoginCredential $creds

DefaultDataLakeStorage           : Microsoft.Azure.Commands.Synapse.Models.PSDataLakeStorageAccountDetails
ProvisioningState                : Succeeded
SqlAdministratorLogin            : ContosoUser
VirtualNetworkProfile            :
Identity                         : Microsoft.Azure.Commands.Synapse.Models.PSManagedIdentity
ManagedVirtualNetwork            :
PrivateEndpointConnections       : {}
WorkspaceUID                     : <workspaceUid>
ExtraProperties                  : {[WorkspaceType, Normal], [IsScopeEnabled, False]}
ManagedVirtualNetworkSettings    :
Encryption                       : Microsoft.Azure.Commands.Synapse.Models.PSEncryptionDetails
WorkspaceRepositoryConfiguration :
Tags                             :
TagsTable                        :
Location                         : <region>
Id                               : /subscriptions/<subsID>/resourceGroups/<resourceGroupName>/providers/
                                   Microsoft.Synapse/workspaces/<workspaceName>
Name                             : <workspaceName>
Type                             : Microsoft.Synapse/workspaces

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

Примечание.

При попытке обновить экземпляр службы, у которого уже есть управляемое удостоверение, без указания параметра Identity в объекте рабочего пространства или предоставления раздела Identity в тексте запроса REST, возникнет ошибка.

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

PATCH https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Synapse/workspaces/{workspaceName}?api-version=2018-06-01

Текст запроса: add "identity": { "type": "SystemAssigned" }.

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

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

{
    "name": "<workspaceName>",
    "tags": {},
    "properties": {
        "provisioningState": "Succeeded",
        "loggingStorageAccountKey": "**********",
        "createTime": "2021-09-26T04:10:01.1135678Z",
        "version": "2018-06-01"
    },
    "identity": {
        "type": "SystemAssigned",
        "principalId": "765ad4ab-XXXX-XXXX-XXXX-51ed985819dc",
        "tenantId": "72f988bf-XXXX-XXXX-XXXX-2d7cd011db47"
    },
    "id": "/subscriptions/<subscriptionId>/resourceGroups/<resourceGroupName>/providers/Microsoft.Synapse/workspaces/<workspaceName>",
    "type": "Microsoft.Synapse/workspaces",
    "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": "<workspaceName>",
        "apiVersion": "2018-06-01",
        "type": "Microsoft.Synapse/workspaces",
        "location": "<region>",
        "identity": {
            "type": "SystemAssigned"
        }
    }]
}

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

Workspace workspace = new Workspace
{
    Identity = new ManagedIdentity
    {
        Type = ResourceIdentityType.SystemAssigned
    },
    DefaultDataLakeStorage = new DataLakeStorageAccountDetails
    {
        AccountUrl = <defaultDataLakeStorageAccountUrl>,
        Filesystem = <DefaultDataLakeStorageFilesystem>
    },
    SqlAdministratorLogin = <SqlAdministratorLoginCredentialUserName>
    SqlAdministratorLoginPassword = <SqlAdministratorLoginCredentialPassword>,
    Location = <region>
};
client.Workspaces.CreateOrUpdate(resourceGroupName, workspaceName, workspace);

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

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

Совет

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

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

Сведения об управляемом удостоверении можно найти на портале Azure. Для этого выберите рабочую область Synapse и щелкните Свойства.

Shows the Azure portal with the system-managed identity object ID for a Synapse workspace.

  • Идентификатор объекта управляемого удостоверения.

Сведения об управляемых удостоверениях также будут отображаться при создании связанной службы, поддерживающей проверку подлинности с использованием управляемых удостоверений (например, BLOB-объект Azure, Azure Data Lake Storage, Azure Key Vault и т. д.)

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

  1. Выберите Управление доступом (IAM) .

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

    Screenshot that shows Access control (IAM) page with Add role assignment menu open.

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

  4. Выберите свою подписку Azure.

  5. В разделе Управляемое удостоверение, назначаемое системой щелкните Рабочая область Synapse и выберите рабочую область. Также можно использовать идентификатор объекта или имя рабочей области (в качестве имени управляемого удостоверения), чтобы найти это удостоверение. Чтобы получить идентификатор приложения управляемого удостоверения, используйте PowerShell.

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

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

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

PS C:\> (Get-AzSynapseWorkspace -ResourceGroupName <resourceGroupName> -Name <workspaceName>).Identity

IdentityType   PrincipalId                          TenantId                            
------------   -----------                          --------                            
SystemAssigned cadadb30-XXXX-XXXX-XXXX-ef3500e2ff05 72f988bf-XXXX-XXXX-XXXX-2d7cd011db47

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

PS C:\> Get-AzADServicePrincipal -ObjectId cadadb30-XXXX-XXXX-XXXX-ef3500e2ff05

ServicePrincipalNames : {76f668b3-XXXX-XXXX-XXXX-1b3348c75e02, https://identity.azure.net/P86P8g6nt1QxfPJx22om8MOooMf/Ag0Qf/nnREppHkU=}
ApplicationId         : 76f668b3-XXXX-XXXX-XXXX-1b3348c75e02
DisplayName           : <workspaceName>
Id                    : cadadb30-XXXX-XXXX-XXXX-ef3500e2ff05
Type                  : ServicePrincipal

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

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

Вызовите API в запросе:

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

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

{
  "properties": {
    "defaultDataLakeStorage": {
      "accountUrl": "https://exampledatalakeaccount.dfs.core.windows.net",
      "filesystem": "examplefilesystem"
    },
    "encryption": {
      "doubleEncryptionEnabled": false
    },
    "provisioningState": "Succeeded",
    "connectivityEndpoints": {
      "web": "https://web.azuresynapse.net?workspace=%2fsubscriptions%2{subscriptionId}%2fresourceGroups%2f{resourceGroupName}%2fproviders%2fMicrosoft.Synapse%2fworkspaces%2f{workspaceName}",
      "dev": "https://{workspaceName}.dev.azuresynapse.net",
      "sqlOnDemand": "{workspaceName}-ondemand.sql.azuresynapse.net",
      "sql": "{workspaceName}.sql.azuresynapse.net"
    },
    "managedResourceGroupName": "synapseworkspace-managedrg-f77f7cf2-XXXX-XXXX-XXXX-c4cb7ac3cf4f",
    "sqlAdministratorLogin": "sqladminuser",
    "privateEndpointConnections": [],
    "workspaceUID": "e56f5773-XXXX-XXXX-XXXX-a0dc107af9ea",
    "extraProperties": {
      "WorkspaceType": "Normal",
      "IsScopeEnabled": false
    },
    "publicNetworkAccess": "Enabled",
    "cspWorkspaceAdminProperties": {
      "initialWorkspaceAdminObjectId": "3746a407-XXXX-XXXX-XXXX-842b6cf1fbcc"
    },
    "trustedServiceBypassEnabled": false
  },
  "type": "Microsoft.Synapse/workspaces",
  "id": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Synapse/workspaces/{workspaceName}",
  "location": "eastus",
  "name": "{workspaceName}",
  "identity": {
    "type": "SystemAssigned",
    "tenantId": "72f988bf-XXXX-XXXX-XXXX-2d7cd011db47",
    "principalId": "cadadb30-XXXX-XXXX-XXXX-ef3500e2ff05"
  },
  "tags": {}
}

Совет

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

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

Выполнение записных книжек Azure Synapse Spark с управляемым удостоверением, назначаемым системой

Вы можете легко запускать записные книжки Synapse Spark с управляемым удостоверением, назначаемым системой (или управляемым удостоверением рабочей области), включив параметр Запуск от имени управляемого удостоверения в меню Конфигурация сеанса. Чтобы выполнять записные книжки Spark с управляемым удостоверением рабочей области, у пользователей должны быть следующие роли RBAC:

  • оператор вычислений Synapse в рабочей области или выбранном пуле Spark;
  • пользователь учетных данных Synapse для управляемого удостоверения рабочей области.

synapse-run-as-msi-1

synapse-run-as-msi-2

synapse-run-as-msi-3

Примечание.

Записные книжки Synapse и определения заданий Spark поддерживают только использование управляемого удостоверения, назначаемого системой, через связанные службы и API mssparkutils. MSAL и другие библиотеки проверки подлинности не могут использовать управляемое удостоверение, назначаемое системой. Вместо этого можно создать субъект-службу и сохранить учетные данные в Key Vault.

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

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

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

Примечание.

Назначаемое пользователем управляемое удостоверение в настоящее время не поддерживается в записных книжках Synapse и определениях заданий Spark.

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

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

Дополнительные сведения об управляемых удостоверениях для ресурсов Azure, на основе которых создается управляемое удостоверение Azure Synapse, см. в статье Обзор управляемых удостоверений для ресурсов Azure.