Se connecter au stockage en utilisant un accès aux données en fonction de l’identité avec le Kit de développement logiciel (SDK) v1

Dans cet article, vous allez apprendre à vous connecter aux services de stockage sur Azure avec l’accès aux données basé sur l’identité et aux magasins de données Azure Machine Learning via le Kit de développement logiciel (SDK) Azure Machine Learning pour Python.

En règle générale, les magasins de données utilisent l’authentification basée sur les informations d’identification pour vérifier que vous avez l’autorisation d’accéder au service de stockage. Les magasins de données conservent les informations de connexion, comme votre ID d’abonnement et votre autorisation de jeton, dans le coffre de clés associé à l’espace de travail. Quand vous créez un magasin de données qui utilise l’accès aux données basé sur l’identité, votre compte Azure (jeton Microsoft Entra) est utilisé pour confirmer que vous avez l’autorisation d’accéder au service de stockage. Dans le scénario d’accès aux données basé sur l’identité, aucune information d’authentification n’est enregistrée. Seules les informations du compte de stockage sont stockées dans le magasin de données.

Pour créer des magasins de données avec un accès aux données basé sur l’identité via l’interface utilisateur d’Azure Machine Learning Studio, consultez Se connecter aux données avec Azure Machine Learning Studio.

Pour créer des magasins de données qui utilisent l’authentification basée sur des informations d’identification, par exemple avec des clés d’accès ou des principaux de service, consultez Se connecter aux services de stockage sur Azure.

Accès aux données basé sur l’identité dans Azure Machine Learning

Vous pouvez appliquer l’accès aux données basé sur l’identité dans Azure Machine Learning dans deux scénarios. Ces scénarios sont adaptés à l’accès basé sur l’identité lorsque vous utilisez des données confidentielles et que vous avez besoin d’une gestion plus granulaire de l’accès aux données :

Avertissement

L’accès aux données basé sur l’identité n’est pas pris en charge pour les expériences de ML automatisé.

  • Accès aux services de stockage
  • Entraînement des modèles Machine Learning avec des données privées

Accès aux services de stockage

Vous pouvez connecter des services de stockage par le biais de l’accès aux données basé sur l’identité à des magasins de données Azure Machine Learning ou à des jeux de données Azure Machine Learning.

Vos informations d’authentification sont conservées dans un magasin de données, ce qui garantit que vous avez l’autorisation d’accéder au service de stockage. Lorsque ces informations d’identification sont inscrites via des magasins de données, tout utilisateur disposant du rôle Lecteur d’espace de travail peut les récupérer. Cette échelle d’accès peut être un problème de sécurité pour certaines organisations. Apprenez-en davantage sur le rôle de Lecteur d’espace de travail.

Quand vous utilisez l’accès aux données basé sur l’identité, Azure Machine Learning vous invite à indiquer votre jeton Microsoft Entra pour authentifier l’accès aux données, plutôt que de conserver vos informations d’identification dans le magasin de données. Avec cette approche, la gestion de l’accès aux données se fait au niveau du stockage et les informations d’identification demeurent sécurisées.

Le même comportement s’applique lorsque vous :

Notes

Les informations d’identification stockées à l’aide de l’authentification basée sur des informations d’identification comprennent les éléments suivants : un ID d’abonnement, des jetons de signature d’accès partagé (SAS), des clés d’accès de stockage et des informations de principal de service, comme un ID client et un ID de locataire.

Entraînement de modèles sur des données privées

Certains scénarios Machine Learning supposent des modèles d’entraînement avec des données privées. Dans ces cas précis, les chercheurs de données doivent exécuter des workflows d’entraînement sans exposition des données d’entrée confidentielles. Dans ce scénario, une identité managée du calcul de formation authentifie l’accès aux données. De cette façon, les administrateurs du stockage peuvent accorder l’accès Lecteur de données blob du stockage à l’identité managée que le calcul d’entraînement utilise pour exécuter le travail d’entraînement. Il n’est pas nécessaire d’accorder l’accès à des scientifiques de données individuels. Pour plus d’informations, visitez Configurer une identité managée sur un cluster de calcul.

Prérequis

Créer et inscrire des magasins de données

Quand vous inscrivez un service de stockage Azure en tant que magasin de données, vous créez et inscrivez automatiquement ce magasin dans un espace de travail spécifique. Pour obtenir des conseils sur les types d’autorisation requis, consultez Autorisations d’accès au stockage. Vous pouvez aussi créer manuellement le stockage auquel vous souhaitez vous connecter sans autorisations spéciales (vous avez simplement besoin du nom).

Pour plus d’informations sur la façon de se connecter à un stockage de données derrière des réseaux virtuels, consultez Utiliser les réseaux virtuels.

Dans le code suivant, notez l’absence de paramètres d’authentification, comme sas_token, account_keysubscription_id ou le principal de service client_id. Cette omission indique qu’Azure Machine Learning utilise l’accès aux données basé sur l’identité pour l’authentification. La création de magasins de données se produit généralement de manière interactive dans un notebook ou via le studio. L’authentification de l’accès aux données utilise votre jeton Microsoft Entra.

Remarque

Les noms des magasins de données doivent contenir uniquement des lettres minuscules, des chiffres et des traits de soulignement.

Conteneur d’objets blob Azure

Pour inscrire un conteneur d’objets blob Azure comme magasin de données, utilisez register_azure_blob_container().

Le code suivant crée le magasin de données credentialless_blob, l’inscrit dans l’espace de travail ws et l’affecte à la variable blob_datastore. Ce magasin de données accède au conteneur d’objets blob my_container_name sur le compte de stockage 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

Utilisez register_azure_data_lake() pour inscrire un magasin de données qui se connecte à Azure Data Lake Storage Gen1.

Le code suivant crée le magasin de données credentialless_adls1, l’inscrit dans l’espace de travail workspace et l’affecte à la variable adls_dstore. Ce magasin de données accède au compte Azure Data Lake Storage adls_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

Utilisez register_azure_data_lake_gen2() pour inscrire un magasin de données qui se connecte à Azure Data Lake Storage Gen2.

Le code suivant crée le magasin de données credentialless_adls2, l’inscrit dans l’espace de travail ws et l’affecte à la variable adls2_dstore. Ce magasin de données accède au système de fichiers tabular dans le compte de stockage 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')

Base de données Azure SQL

Pour une base de données Azure SQL, utilisez register_azure_sql_database() afin d’inscrire un magasin de données qui se connecte à un stockage de base de données Azure SQL.

Le code suivant crée et inscrit le magasin de données credentialless_sqldb dans l’espace de travail ws et l’affecte à la variable sqldb_dstore. Ce magasin de données accède à la base de données mydb sur le serveur de base de données 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')                                                       
                                                   

Autorisations d’accès au stockage

Pour garantir une connexion sécurisée à votre service de stockage sur Azure, Azure Machine Learning exige que vous disposiez de l’autorisation d’accéder au stockage de données correspondant.

Avertissement

L’accès inter-clients aux comptes de stockage n’est pas pris en charge. Si vous avez besoin d’un accès inter-clients pour votre scénario, contactez l’alias de l’équipe de support des données Azure Machine Learning à l’adresse amldatasupport@microsoft.com pour obtenir de l’aide sur une solution de code personnalisée.

L’accès aux données basé sur l’identité prend uniquement en charge les connexions aux services de stockage suivants.

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

Pour accéder à ces services de stockage, vous devez disposer au minimum de l’accès Lecteur des données blob de stockage au compte de stockage. Seuls les propriétaires de comptes de stockage peuvent modifier votre niveau d’accès via le portail Azure.

Si vous préférez ne pas utiliser votre identité d’utilisateur (Microsoft Entra ID), vous pouvez également accorder à l’espace de travail une autorisation MSI (identité gérée par le système) pour créer le magasin de données. Pour ce faire, vous devez disposer d’autorisations de propriétaire sur le compte de stockage et ajouter le paramètre grant_workspace_access= True à votre méthode d’inscription de données.

Si vous effectuez l’apprentissage d’un modèle sur une cible de calcul distante et souhaitez accéder aux données pour la formation, l’identité de calcul doit se voir attribuer au moins le rôle Lecteur des données Blob du stockage du service de stockage. Découvrez comment configurer une identité managée sur une instance de cluster de calcul.

Utiliser les réseaux virtuels

Par défaut, Azure Machine Learning ne peut pas communiquer avec un compte de stockage situé derrière un pare-feu ou dans un réseau virtuel.

Vous pouvez configurer des comptes de stockage pour autoriser l’accès uniquement dans des réseaux virtuels spécifiques. Cette configuration nécessite des étapes en plus pour garantir que les données ne sont pas divulguées en dehors du réseau. Ce comportement est le même pour l’accès aux données basé sur les informations d’identification. Pour plus d’informations, consultez les Scénarios de configuration d’un réseau virtuel.

Si votre compte de stockage possède des paramètres de réseau virtuel, ils déterminent le type d’identité et l’accès aux autorisations nécessaires. Par exemple, pour l’aperçu des données et le profil de données, les paramètres de réseau virtuel déterminent le type d’identité utilisé pour authentifier l’accès aux données.

  • Dans les scénarios où seuls des sous-réseaux et IP spécifiques peuvent accéder au stockage, Azure Machine Learning utilise la MSI de l’espace de travail pour obtenir des aperçus et des profils de données.

  • Si votre stockage est ADLS Gen 2 ou Blob et a des paramètres de réseau virtuel, les clients peuvent utiliser l’identité de l’utilisateur ou la MSI de l’espace de travail en fonction des paramètres de magasin de stockage définis lors de la création.

  • Si le paramètre de réseau virtuel est « Autoriser les services Azure dans la liste des services approuvés à accéder à ce compte de stockage », la MSI de l’espace de travail est utilisée.

Utiliser les données dans le stockage

Les jeux de données Azure Machine Learning sont le moyen conseillé pour interagir avec vos données dans le stockage à l’aide d’Azure Machine Learning.

Important

Les jeux de données utilisant l’accès aux données basé sur l’identité ne sont pas pris en charge pour les expériences de ML automatisé.

Les jeux de données intègrent vos données dans un objet consommable évalué tardivement pour les tâches de Machine Learning, comme la formation. Avec les jeux de données, vous pouvez également télécharger ou monter sur une cible de calcul des fichiers de n’importe quel format, depuis des services de stockage Azure, tels que le stockage d’objets blob Azure et Azure Data Lake Storage.

Pour créer un jeu de données, vous pouvez référencer des chemins de magasins de données qui utilisent également l’accès aux données basé sur l’identité.

  • Si le type de compte de stockage sous-jacent est Blob ou ADLS Gen 2, votre identité d’utilisateur a besoin du rôle Lecteur d’objets blob.
  • Si votre stockage sous-jacent est ADLS Gen 1, vous pouvez définir des autorisations via la liste de contrôle d’accès (ACL) du stockage.

Dans l’exemple suivant, blob_datastore existe déjà et utilise l’accès aux données basé sur l’identité.

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

Vous pouvez également ignorer la création du magasin de données et créer des jeux de données directement à partir des URL de stockage. Cette fonctionnalité prend actuellement en charge uniquement les objets blob Azure et Azure Data Lake Storage Gen1 et Gen2. Pour la création basée sur l’URL de stockage, seule l’identité de l’utilisateur est nécessaire pour l’authentification.

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

Quand vous soumettez un travail de formation qui consomme un jeu de données créé avec un accès aux données basé sur l’identité, l’identité managée du calcul de formation est utilisée pour l’authentification de l’accès aux données. Votre jeton Microsoft Entra n’est pas utilisé. Pour ce scénario, assurez-vous que l’identité managée du calcul est accordée avec au moins le rôle de Lecteur des données blob de stockage à partir du service de stockage. Pour plus d’informations, consultez Configurer une identité managée pour des clusters de calcul.

Étapes suivantes