Conexión al almacenamiento mediante el acceso a los datos basado en la identidad con el SDK v1

En este artículo, aprenderá a conectarse a los servicios de almacenamiento de Azure con el acceso a datos basado en identidades y los almacenes de datos de Azure Machine Learning con el SDK de Azure Machine Learning para Python.

Normalmente, los almacenes de datos usan la autenticación basada en credenciales para confirmar que dispone de permiso para acceder al servicio de almacenamiento. Guardan la información de la conexión, como el identificador de la suscripción y la autorización del token, en el almacén de claves asociado al área de trabajo. Cuando cree un almacén de datos que utilice el acceso a datos basado en identidades, su cuenta de Azure (token de Azure Active Directory) se utilizará para confirmar que tiene permiso para acceder al servicio de almacenamiento. En el escenario de acceso a datos basado en identidades, no se guardarán las credenciales de autenticación. Lo único que se guardará en el almacén de datos será la información de la cuenta de almacenamiento.

Para crear almacenes de datos con el acceso a datos basado en identidades a través de la interfaz de usuario de Estudio de Azure Machine Learning, consulte Conexión a los datos con Estudio de Azure Machine Learning.

Para crear almacenes de datos que usen la autenticación basada en credenciales, como claves de acceso o entidades de servicio, consulte Conexión a los servicios de almacenamiento en Azure.

Acceso a datos basado en identidad en Azure Machine Learning

Hay dos escenarios en los que se puede aplicar el acceso a datos basado en identidades de Azure Machine Learning. Estos escenarios son una buena opción para utilizar el acceso basado en identidades cuando hay datos confidenciales de por medio y es preciso administrar el acceso a los datos de forma más pormenorizada:

Advertencia

El acceso a datos basado en identidad no es compatible con los experimentos de ML automatizado.

  • Acceso a servicios de almacenamiento
  • Entrenamiento de modelos de aprendizaje automático con datos privados

Acceso a servicios de almacenamiento

Puede conectarse a los servicios de almacenamiento mediante el acceso a datos basado en identidad con almacenes de datos de Azure Machine Learning o conjuntos de datos de Azure Machine Learning.

Las credenciales de autenticación se conservan en un almacén de datos, que se usa para asegurarse de que tiene permiso de acceso al servicio de almacenamiento. Cuando estas credenciales se registran utilizando almacenes de datos, cualquier usuario que tenga el rol Lector en el área de trabajo podrá recuperarlas. Ese nivel de acceso puede ser un problema de seguridad para algunas organizaciones. Consulte este artículo para más información sobre el rol Lector del área de trabajo.

Cuando se usa el acceso a datos basado en identidad, Azure Machine Learning le solicita su token de Azure Active Directory para la autenticación de acceso a datos, en lugar de mantener sus credenciales en el almacén de datos. Este enfoque permite administrar el acceso a los datos en el nivel de almacenamiento y preserva la confidencialidad de las credenciales.

Este mismo comportamiento se aplica al:

Nota

Las credenciales que se almacenan con la autenticación basada en credenciales incluyen: los identificadores de la suscripción, los tokens de firma de acceso compartido (SAS), las claves de acceso de almacenamiento y la información de la entidad de servicio, como los identificadores de cliente y los identificadores de inquilino.

Entrenamiento de modelos con datos privados

Algunos escenarios de aprendizaje automático implican el entrenamiento de modelos con datos privados. En estos casos, los científicos de datos deben ejecutar los flujos de trabajo de entrenamiento sin exponer los datos de entrada confidenciales. En este escenario, se usa una identidad administrada de la instancia de proceso de entrenamiento para la autenticación del acceso a datos. De este modo, los administradores del almacenamiento pueden conceder el acceso como Lector de datos de Storage Blob a la identidad administrada que la instancia de proceso de entrenamiento utiliza para ejecutar el trabajo de entrenamiento. No es necesario conceder acceso a cada científico de datos. Para más información, consulte ese artículo sobre la configuración de identidades administradas en un clúster de proceso.

Requisitos previos

Creación y registro de almacenes de datos

Cuando se registra un servicio de almacenamiento de Azure como almacén de datos, se crea y registra automáticamente ese almacén de datos en un área de trabajo específica. Consulte Permisos de acceso al almacenamiento para obtener instrucciones sobre los tipos de permisos necesarios. También puede crear manualmente el almacenamiento al que quiere conectarse sin ningún permiso especial y solo necesita el nombre.

Consulte este artículo sobre el uso de las redes virtuales para obtener más detalles acerca de cómo conectarse a los almacenamientos de datos que están detrás de redes virtuales.

En el código siguiente, observe que faltan los parámetros de autenticación, como sas_token, account_key y subscription_id, y la entidad de servicio client_id. Esta omisión indica que Azure Machine Learning utiliza el acceso a datos basado en identidades para realizar la autenticación. Normalmente, los almacenes de datos se crean de forma interactiva en un cuaderno o mediante Studio. Por tanto, se utiliza el token de Azure Active Directory para autenticar el acceso a los datos.

Nota

Los nombres de los almacenes de datos solo pueden contener letras minúsculas, números y caracteres de subrayado.

Contenedor de blobs de Azure

Para registrar un almacén de datos de un contenedor de blobs de Azure, use register_azure_blob_container().

El código siguiente crea el almacén de datos credentialless_blob, lo registra en el área de trabajo ws y lo asigna a la variable blob_datastore. Este almacén de datos accede al contenedor de blobs my_container_name de la cuenta de almacenamiento my-account-name.

# Create blob datastore without credentials.
blob_datastore = Datastore.register_azure_blob_container(workspace=ws,
                                                      datastore_name='credentialless_blob',
                                                      container_name='my_container_name',
                                                      account_name='my_account_name')

Azure Data Lake Storage Gen1

Utilice register_azure_data_lake() para registrar un almacén de datos que se conecte a Azure Data Lake Storage Gen1.

El código siguiente crea el almacén de datos credentialless_adls1, lo registra en el área de trabajo workspace y lo asigna a la variable adls_dstore. Este almacén de datos accede a la cuenta adls_storage de Azure Data Lake Storage.

# Create Azure Data Lake Storage Gen1 datastore without credentials.
adls_dstore = Datastore.register_azure_data_lake(workspace = workspace,
                                                 datastore_name='credentialless_adls1',
                                                 store_name='adls_storage')

Azure Data Lake Storage Gen2

Utilice register_azure_data_lake_gen2() para registrar un almacén de datos que se conecte a Azure Data Lake Storage Gen2.

El código siguiente crea el almacén de datos credentialless_adls2, lo registra en el área de trabajo ws y lo asigna a la variable adls2_dstore. Este almacén de datos accede al sistema de archivos tabular de la cuenta de almacenamiento myadls2.

# Create Azure Data Lake Storage Gen2 datastore without credentials.
adls2_dstore = Datastore.register_azure_data_lake_gen2(workspace=ws, 
                                                       datastore_name='credentialless_adls2', 
                                                       filesystem='tabular', 
                                                       account_name='myadls2')

Azure SQL Database

Para una base de datos de Azure SQL, use register_azure_sql_database() para registrar un almacén de datos que se conecte a un almacenamiento de base de datos SQL Azure.

El código siguiente crea y registra el almacén de datos credentialless_sqldb en el área de trabajo ws y lo asigna a la variable sqldb_dstore. Este almacén de datos accede a la base de datos mydb en el servidor de base de datos de SQL myserver.

# Create a sqldatabase datastore without credentials
                                                       
sqldb_dstore = Datastore.register_azure_sql_database(workspace=ws,
                                                       datastore_name='credentialless_sqldb',
                                                       server_name='myserver',
                                                       database_name='mydb')                                                       
                                                   

Permisos de acceso al almacenamiento

Para ayudar a garantizar la seguridad al conectarse al servicio de almacenamiento de Azure, en Azure Machine Learning es obligatorio tener permiso para poder acceder al almacenamiento de datos correspondiente.

Advertencia

No se admite el acceso entre inquilinos a las cuentas de almacenamiento. Si el acceso entre inquilinos es necesario para su escenario, póngase en contacto con el alias de equipo de soporte técnico de datos de Azure Machine Learning en amldatasupport@microsoft.com para obtener ayuda con una solución de código personalizada.

El acceso a datos basado en identidades solo permite conectarse a los siguientes servicios de almacenamiento.

  • Azure Blob Storage
  • Azure Data Lake Storage Gen1
  • Azure Data Lake Storage Gen2
  • Azure SQL Database

Para poder acceder a estos servicios de almacenamiento, debe tener como mínimo acceso de Lector de datos de Storage Blob a la cuenta de almacenamiento. Solo los propietarios de la cuenta de almacenamiento pueden cambiar el nivel de acceso mediante Azure Portal.

Si prefiere no usar su identidad de usuario (Azure Active Directory), también puede conceder a un área de trabajo permiso de identidad del sistema administrada (MSI) para crear el almacén de datos. Para ello, debe tener permisos de propietario en la cuenta de almacenamiento y agregar el parámetro grant_workspace_access= True al método de registro de datos.

Si va a entrenar un modelo en un destino de proceso remoto y desea obtener acceso a los datos para su entrenamiento, es necesario conceder a la identidad de proceso al menos el rol Lector de datos de Storage Blob en el servicio de almacenamiento. Aprenda a configurar la identidad administrada en un clúster de proceso.

Trabajo con redes virtuales

De forma predeterminada, Azure Machine Learning no puede comunicarse con una cuenta de almacenamiento que esté detrás de un firewall o en una red virtual.

Puede configurar las cuentas de almacenamiento para permitir el acceso exclusivamente desde redes virtuales específicas. Esta configuración requiere más pasos, a fin de evitar que los datos se filtren fuera de la red. Este comportamiento es igual en el acceso a datos basado en credenciales. Para más información, consulte este artículo sobre la configuración de escenarios de red virtual.

Si la cuenta de almacenamiento tiene una configuración de red virtual, esta determina qué tipo de identidad y acceso a los permisos es necesario. Por ejemplo, en el caso de la vista previa de datos y el perfil de datos, la configuración de red virtual determina qué tipo de identidad se usa para autenticar el acceso a los datos.

  • En aquellos escenarios en los que solo determinadas direcciones IP y subredes pueden tener acceso al almacenamiento, Azure Machine Learning usa la MSI del área de trabajo para realizar perfiles y vistas previas de datos.

  • Si el almacenamiento es ADLS Gen 2 o Blob y tiene una configuración de red virtual, los clientes pueden usar la MSI del área de trabajo y la identidad del usuario dependiendo de la configuración del almacén de datos definida durante la creación.

  • Si la configuración de red virtual es "Permitir que los servicios de Azure de la lista de servicios de confianza accedan a esta cuenta de almacenamiento", se usa la MSI del área de trabajo.

Uso de los datos del almacenamiento

Le recomendamos que utilice conjuntos de datos de Azure Machine Learning cuando interactúe con los datos de almacenamiento en Azure Machine Learning.

Importante

Los conjuntos de datos que usan el acceso a datos basado en identidad no son compatibles con los experimentos de ML automatizado.

Los conjuntos de datos empaquetan los datos en un objeto consumible que se evalúa de forma diferida para tareas de aprendizaje automático, como el entrenamiento. Además, con los conjuntos de datos, se pueden descargar o montar archivos con cualquier formato desde los servicios de almacenamiento de Azure, como Azure Blob Storage y Azure Data Lake Storage, en un destino de proceso.

Para crear un conjunto de datos, puede hacer referencia a rutas de acceso de los almacenes de datos que también usan el acceso a datos basado en identidad.

  • Si el tipo de cuenta de almacenamiento subyacente es Blob o ADLS Gen 2, la identidad del usuario necesita el rol Lector de Blob.
  • Si el almacenamiento subyacente es ADLS Gen 1, los permisos necesarios se pueden establecer a través de la lista de control de acceso (ACL) del almacenamiento.

En el ejemplo siguiente, blob_datastore ya existe y usa el acceso a datos basado en identidades.

blob_dataset = Dataset.Tabular.from_delimited_files(blob_datastore,'test.csv') 

Otra opción es omitir la creación del almacén de datos y crear conjuntos de datos directamente desde las direcciones URL de almacenamiento. Actualmente, esta funcionalidad solo permite utilizar blobs de Azure, así como Azure Data Lake Storage Gen1 y Gen2. Para la creación basada en la dirección URL de almacenamiento, solo se necesita la identidad del usuario para autenticarse.

blob_dset = Dataset.File.from_files('https://myblob.blob.core.windows.net/may/keras-mnist-fashion/')

Sin embargo, cuando se envía un trabajo de entrenamiento que consume un conjunto de datos creado con el acceso a datos basado en identidades, se utiliza la identidad administrada de la instancia de proceso de entrenamiento para autenticar el acceso a datos. No se utiliza el token de Azure Active Directory. En este escenario, asegúrese de que la identidad administrada de la instancia de proceso recibe al menos el rol Lector de datos de Storage Blob en el servicio de almacenamiento. Para más información, consulte este artículo sobre la configuración de identidades administradas en el clúster de proceso.

Pasos siguientes