Identidad administrada de Azure Data Factory

SE APLICA A: Azure Data Factory Azure Synapse Analytics

Sugerencia

Pruebe Data Factory en Microsoft Fabric, una solución de análisis todo en uno para empresas. Microsoft Fabric abarca todo, desde el movimiento de datos hasta la ciencia de datos, el análisis en tiempo real, la inteligencia empresarial y los informes. ¡Obtenga más información sobre cómo iniciar una nueva evaluación gratuita!

Este artículo ayuda a entender qué es la identidad administrada (anteriormente conocida como Managed Service Identity/MSI) y cómo funciona en Azure Data Factory.

Nota

Se recomienda usar el módulo Azure Az de PowerShell para interactuar con Azure. Consulte Instalación de Azure PowerShell para empezar. Para más información sobre cómo migrar al módulo Az de PowerShell, consulte Migración de Azure PowerShell de AzureRM a Az.

Información general

Las identidades administradas eliminan la necesidad de administrar las credenciales. Proporcionan una identidad que usa la instancia del servicio al conectarse a recursos que admiten la autenticación de Microsoft Entra. Por ejemplo, el servicio puede usar una identidad administrada para acceder a recursos como Azure Key Vault, donde los administradores de datos pueden almacenar credenciales o acceder a cuentas de almacenamiento de manera segura. El servicio usa la identidad administrada para obtener tokens de Microsoft Entra.

Hay dos tipos de identidades administradas compatibles:

  • Asignadas por el sistema: puede habilitar una identidad administrada directamente en una instancia de servicio. Cuando se permite una identidad administrada asignada por el sistema durante la creación del servicio, se crea una identidad en Microsoft Entra asociada al ciclo de vida de esa instancia de servicio. Por diseño, solo ese recurso de Azure puede usar esta identidad para solicitar tokens de Microsoft Entra ID. Por tanto, cuando se elimina el recurso, Azure elimina automáticamente la identidad.
  • Asignada por el usuario: también es posible crear una identidad administrada como recurso independiente de Azure. Puede crear una identidad administrada asignada por el usuario y asignarla a una o varias instancias de una factoría de datos. En las identidades administradas asignadas por el usuario, la identidad se administra independientemente de los recursos que la utilicen.

La identidad administrada proporciona las siguientes ventajas:

  • Almacenamiento de credenciales en Azure Key Vault, en cuyo caso la identidad administrada se usa para la autenticación de Azure Key Vault.
  • Obtenga acceso a almacenes de datos o procesos mediante la autenticación de identidad administrada, como Azure Blob Storage, Azure Data Explorer, Azure Data Lake Storage Gen1, Azure Data Lake Storage Gen2, Azure SQL Database, Azure SQL Managed Instance, Azure Synapse Analytics, REST, actividad de Databricks, actividad web y mucho más. Consulte los artículos sobre el conector y las actividades para obtener más información.
  • La identidad administrada también se usa para cifrar o descifrar los datos y los metadatos mediante la clave administrada por el cliente almacenada en Azure Key Vault, lo que brinda cifrado doble.

Identidad administrada asignada por el sistema

Nota

La identidad administrada asignada por el sistema también se conoce como "identidad administrada" en otra parte de la documentación y en la interfaz de usuario de Data Factory Studio por motivos de compatibilidad con versiones anteriores. Al hacer referencia a una "identidad administrada asignada por el usuario", lo mencionaremos de manera explícita.

Generación de una identidad administrada asignada por el sistema

La identidad administrada por el sistema se genera de la manera siguiente:

  • Cuando se crea una factoría de datos mediante Azure Portal o PowerShell, la identidad administrada siempre se crea automáticamente.
  • Cuando se crea una factoría de datos mediante SDK, la identidad administrada se crea solo si se especifica "Identity = new FactoryIdentity()" en el objeto de factoría para la creación. Consulte el ejemplo en Inicio rápido de .NET: creación de una factoría de datos.
  • Cuando se crea una factoría de datos mediante la API de REST, la identidad administrada solo se crea si se especifica la sección "identity" en el cuerpo de la solicitud. Vea el ejemplo que aparece en el Inicio rápido de REST: Crear una factoría de datos.

Si observa que la instancia de servicio no tiene una identidad administrada asociada tras la instrucción Recuperar identidad administrada, puede generar una de forma explícita si la actualiza con el iniciador de identidades mediante programación:

Nota

  • La identidad administrada no se puede modificar. La actualización de una instancia de servicio que ya tiene una identidad administrada no tiene ningún impacto, y la identidad administrada se mantiene sin cambios.
  • Si actualiza una instancia de servicio que ya tiene una identidad administrada sin especificar el parámetro "identity" en el objeto de factoría o sin especificar la sección "identity" en el cuerpo de la solicitud de REST, se obtiene un error.
  • Cuando se elimina una instancia de servicio, también se elimina la identidad administrada asociada.

Generación de una identidad administrada asignada por el sistema mediante PowerShell

Llame al comando Set-AzDataFactoryV2 y verá cómo se van agregando campos "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

Generación de una identidad administrada asignada por el sistema mediante la API REST

Nota

Si intenta actualizar una instancia de servicio que ya tiene una identidad administrada sin especificar el parámetro identity en el objeto de factoría o sin proporcionar una sección identity en el cuerpo de la solicitud de REST, se obtiene un error.

Llame a la API siguiente con la sección "identity" en el cuerpo de la solicitud:

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

Cuerpo de la solicitud: agregue "identity": { "type": "SystemAssigned" }.

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

Respuesta: la identidad administrada se crea automáticamente y la sección "identity" se rellena en consecuencia.

{
    "name": "<dataFactoryName>",
    "tags": {},
    "properties": {
        "provisioningState": "Succeeded",
        "loggingStorageAccountKey": "**********",
        "createTime": "2017-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.DataFactory/factories/<dataFactoryName>",
    "type": "Microsoft.DataFactory/factories",
    "location": "<region>"
}

Generación de una identidad administrada asignada por el sistema mediante una plantilla de Azure Resource Manager

Plantilla: agregue "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"
        }
    }]
}

Generación de una identidad administrada asignada por el sistema mediante el SDK

Llame a la función create_or_update con Identity=new FactoryIdentity(). Código de ejemplo mediante .NET:

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

Recuperación de una identidad administrada asignada por el sistema

Puede recuperar la identidad administrada desde Azure Portal o mediante programación. Las secciones siguientes le muestran algunos ejemplos.

Sugerencia

Si no ve la identidad administrada, genérela mediante la actualización de la instancia de servicio.

Recuperación de una identidad administrada asignada por el sistema mediante Azure Portal

Puede encontrar la información de la identidad administrada en Azure Portal -> su factoría de datos -> Propiedades.

Shows the Azure portal with the system-managed identity object ID and Identity Tenant for an Azure Data Factory.

  • Id. del objeto de identidad administrada
  • Inquilino de identidad administrada

La información de identidad administrada también se mostrará cuando se crea un servicio vinculado que admita la autenticación de identidad administrada, como Azure Blob, Azure Data Lake Storage, Azure Key Vault, etc.

Para conceder permisos, siga estos pasos. Para asignar roles, consulte Asignación de roles de Azure mediante Azure Portal.

  1. Seleccione Access Control (IAM) .

  2. Seleccione Agregar>Agregar asignación de roles.

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

  3. En la pestaña Miembros, seleccione Identidad administrada y, a continuación, seleccione Seleccionar miembros.

  4. Seleccione su suscripción a Azure.

  5. En Identidad administrada asignada por el sistema, seleccione Data Factory y una factoría de datos. También puede usar el identificador de objeto o el nombre de la factoría de datos (como nombre de identidad administrada) para encontrar esta identidad. Para obtener el identificador de aplicación de la identidad administrada, use PowerShell.

  6. En la pestaña Revisión y asignación, seleccione Revisión y asignación para asignar el rol.

Recuperación de una identidad administrada asignada por el sistema mediante PowerShell

Al obtener una instancia de servicio específica, se devuelven el identificador de identidad de seguridad y el de inquilino de la identidad administrada del modo siguiente. Use el valor de PrincipalId para conceder acceso:

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

PrincipalId                          TenantId
-----------                          --------
765ad4ab-XXXX-XXXX-XXXX-51ed985819dc 72f988bf-XXXX-XXXX-XXXX-2d7cd011db47

Puede obtener el identificador de la aplicación copiando el identificador de la entidad de seguridad anterior y ejecutando a continuación el comando Microsoft Entra ID con el identificador de la entidad de seguridad como parámetro.

PS C:\> Get-AzADServicePrincipal -ObjectId 765ad4ab-XXXX-XXXX-XXXX-51ed985819dc

ServicePrincipalNames : {76f668b3-XXXX-XXXX-XXXX-1b3348c75e02, https://identity.azure.net/P86P8g6nt1QxfPJx22om8MOooMf/Ag0Qf/nnREppHkU=}
ApplicationId         : 76f668b3-XXXX-XXXX-XXXX-1b3348c75e02
DisplayName           : ADFV2DemoFactory
Id                    : 765ad4ab-XXXX-XXXX-XXXX-51ed985819dc
Type                  : ServicePrincipal

Recuperación de identidad administrada mediante la API de REST

Al obtener una instancia de servicio específica, se devuelven el identificador de identidad de seguridad y el de inquilino de la identidad administrada del modo siguiente.

Llame a la siguiente API en la solicitud:

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

Respuesta: obtendrá una respuesta como la que se muestra en el siguiente ejemplo. La sección "identity" se rellena en consecuencia.

{
    "name":"<dataFactoryName>",
    "identity":{
        "type":"SystemAssigned",
        "principalId":"554cff9e-XXXX-XXXX-XXXX-90c7d9ff2ead",
        "tenantId":"72f988bf-XXXX-XXXX-XXXX-2d7cd011db47"
    },
    "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":{

    }
}

Sugerencia

Para recuperar la identidad administrada de una plantilla de ARM, agregue una sección de salidas en el código JSON de ARM:

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

Identidad administrada asignada por el usuario

Puede crear, eliminar y administrar identidades administradas asignadas por el usuario en Microsoft Entra ID. Para más información, consulte Creación, enumeración, eliminación o asignación de un rol a una identidad administrada asignada por el usuario mediante Azure Portal.

Para usar una identidad administrada asignada por el usuario, primero debe crear credenciales en la instancia de servicio para UAMI.

Consulte los siguientes temas que presentan cuándo y cómo usar la identidad administrada:

Vea ¿Qué son las identidades administradas de recursos de Azure? para obtener más información sobre las identidades administradas para recursos de Azure, en las que se basa la identidad administrada de Data Factory.

Vea Limitaciones de las identidades administradas, que también se aplican a las identidades administradas en Azure Data Factory.