Verbindung zum Datenspeicher über identitätsbasierten Datenzugriff mit SDK v1

In diesem Artikel erfahren Sie, wie Sie eine Verbindung mit Speicherdiensten in Azure mit identitätsbasiertem Datenzugriff und Azure Machine Learning-Datenspeicher über das Azure Machine Learning SDK für Python herstellen.

Für Datenspeicher wird normalerweise die auf Anmeldeinformationen basierende Authentifizierung genutzt, um zu verifizieren, dass Sie über die Berechtigung zum Zugreifen auf den Speicherdienst verfügen. Verbindungsinformationen, z. B. Ihre Abonnement-ID und Tokenautorisierung, werden im Schlüsseltresor gespeichert, der dem Arbeitsbereich zugeordnet ist. Wenn Sie einen Datenspeicher erstellen, für den der identitätsbasierte Datenzugriff verwendet wird, wird anhand Ihres Azure-Kontos (Azure Active Directory-Token) überprüft, ob Sie über die Berechtigung für den Zugriff auf den Speicherdienst verfügen. Im Szenario mit identitätsbasiertem Datenzugriff werden keine Anmeldeinformationen für die Authentifizierung gespeichert. Nur die Speicherkontoinformationen werden im Datenspeicher gespeichert.

Informationen zum Erstellen von Datenspeichern mit identitätsbasiertem Datenzugriff über die Azure Machine Learning Studio-Benutzeroberfläche finden Sie unter Herstellen einer Verbindung mit Daten in Azure Machine Learning Studio.

Informationen zum Erstellen von Datenspeichern, für die die Authentifizierung mit Anmeldeinformationen genutzt wird, z. B. Zugriffsschlüssel oder Dienstprinzipale, finden Sie unter Herstellen einer Verbindung mit Speicherdiensten in Azure.

Identitätsbasierter Datenzugriff in Azure Machine Learning

Es gibt zwei Szenarien, in denen Sie den identitätsbasierten Datenzugriff in Azure Machine Learning anwenden können. Diese Szenarien eignen sich gut für den identitätsbasierten Zugriff, wenn Sie mit vertraulichen Daten arbeiten und eine präzisere Datenzugriffsverwaltung benötigen:

Warnung

Identitätsbasierter Datenzugriff wird für automatisierte ML-Experimente nicht unterstützt.

  • Zugreifen auf Speicherdienste
  • Trainieren von Machine Learning-Modellen mit privaten Daten

Zugreifen auf Speicherdienste

Sie können eine Verbindung mit Speicherdiensten per identitätsbasiertem Zugriff herstellen, indem Sie Azure Machine Learning-Datenspeicher oder Azure Machine Learning-Datasets nutzen.

Ihre Anmeldeinformationen für die Authentifizierung werden in einem Datenspeicher aufbewahrt, mit dem sichergestellt wird, dass Sie über die Berechtigung für den Zugriff auf den Speicherdienst verfügen. Wenn diese Anmeldeinformationen über Datenspeicher registriert sind, kann jeder Benutzer mit der Arbeitsbereichsrolle „Leser“ sie abrufen. Dieser Umfang des Zugriffs kann für einige Organisationen ein Sicherheitsproblem darstellen. Erfahren Sie mehr zur Rolle „Leser“ für Arbeitsbereiche.

Wenn Sie den identitätsbasierten Datenzugriff nutzen, werden Sie von Azure Machine Learning zum Eingeben Ihres Azure Active Directory-Tokens für die Authentifizierung für den Datenzugriff aufgefordert, und Ihre Anmeldeinformationen werden nicht im Datenspeicher aufbewahrt. Dieser Ansatz ermöglicht die Verwaltung des Datenzugriffs auf Speicherebene und sorgt für die Vertraulichkeit der Anmeldeinformationen.

Dieses Verhalten gilt auch für Folgendes:

Hinweis

Bei der Authentifizierung mit Anmeldeinformationen wird Folgendes gespeichert: Abonnement-ID, SAS-Token (Shared Access Signature) und Speicherzugriffsschlüssel sowie Dienstprinzipalinformationen, z. B. Client-IDs und Mandanten-IDs.

Modelltraining für private Daten

Bei bestimmten Machine Learning-Szenarien werden Modelle auch mit privaten Daten trainiert. In diesen Fällen müssen wissenschaftliche Fachkräfte für Daten (Data Scientists) Trainingsworkflows ausführen, ohne dass sie die vertraulichen Eingabedaten zu Gesicht bekommen. Bei diesem Szenario wird eine verwaltete Identität der Trainingscomputeressource für die Authentifizierung des Datenzugriffs verwendet. Mit diesem Ansatz können Speicheradministratoren dem Leser von Speicherblobdaten Zugriff auf die verwaltete Identität gewähren, die die Computeressource für Training verwendet, um den Trainingsauftrag auszuführen. Den einzelnen wissenschaftlichen Fachkräften für Daten muss kein Zugriff gewährt werden. Weitere Informationen finden Sie unter Einrichten der verwalteten Identität für einen Computecluster.

Voraussetzungen

Erstellen und Registrieren von Datenspeichern

Wenn Sie einen Speicherdienst in Azure als Datenspeicher registrieren, erstellen Sie diesen Datenspeicher automatisch und registrieren ihn in einem bestimmten Arbeitsbereich. Einen Leitfaden zu erforderlichen Berechtigungstypen finden Sie unter Berechtigungen für den Speicherzugriff. Sie können den Speicher, mit dem Sie eine Verbindung herstellen möchten, auch ohne besondere Berechtigungen manuell erstellen. Sie benötigen nur den Namen.

Unter Arbeiten mit virtuellen Netzwerken erfahren Sie, wie Sie eine Verbindung mit dem Datenspeicher hinter virtuellen Netzwerken herstellen können.

Beachten Sie im folgenden Code das Fehlen der Authentifizierungsparameter, z. B. sas_token, account_key, subscription_id und der Dienstprinzipal client_id. Das Fehlen dieser Parameter ist ein Hinweis darauf, dass Azure Machine Learning den identitätsbasierten Datenzugriff für die Authentifizierung verwenden wird. Das Erstellen von Datenspeichern erfolgt typischerweise interaktiv in einem Notebook oder über das Studio. Daher wird Ihr Azure Active Directory-Token für die Datenzugriffsauthentifizierung verwendet.

Hinweis

Datenspeichernamen dürfen nur Kleinbuchstaben, Zahlen und Unterstriche enthalten.

Azure-Blobcontainer

Um einen Azure-Blobcontainer als Datenspeicher zu registrieren, verwenden Sie register_azure_blob_container().

Mit dem folgenden Code wird der Datenspeicher credentialless_blob erstellt, beim Arbeitsbereich ws registriert und anschließend der Variablen blob_datastore zugewiesen. Dieser Datenspeicher greift auf den Blobcontainer my_container_name unter dem Speicherkonto my-account-name zu.

# 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

Verwenden Sie register_azure_data_lake(), um einen Datenspeicher zu registrieren, der eine Verbindung mit Azure Data Lake Storage Gen1 herstellt.

Mit dem folgenden Code wird der Datenspeicher credentialless_adls1 erstellt, beim Arbeitsbereich workspace registriert und anschließend der Variablen adls_dstore zugewiesen. Dieser Datenspeicher greift auf das Azure Data Lake Storage-Konto adls_storage zu.

# 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

Verwenden Sie register_azure_data_lake_gen2(), um einen Datenspeicher zu registrieren, der eine Verbindung mit Azure Data Lake Storage Gen2 herstellt.

Mit dem folgenden Code wird der Datenspeicher credentialless_adls2 erstellt, beim Arbeitsbereich ws registriert und anschließend der Variablen adls2_dstore zugewiesen. Dieser Datenspeicher greift auf das Dateisystem tabular unter dem Speicherkonto myadls2 zu.

# 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-Datenbank

Für eine Azure SQL-Datenbank verwenden Sie register_azure_sql_database(), um einen Datenspeicher zu registrieren, der mit einem Azure SQL-Datenbankspeicher verbunden ist.

Mit dem folgenden Code wird der Datenspeicher credentialless_sqldb erstellt und beim Arbeitsbereich ws registriert. Anschließend wird er der Variablen sqldb_dstore zugewiesen. Dieser Datenspeicher greift auf die Datenbank mydb im myserver SQL DB-Server zu.

# 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')                                                       
                                                   

Berechtigungen für den Speicherzugriff

Um sicherzustellen, dass eine sichere Verbindung mit Ihrem Speicherdienst in Azure hergestellt wird, müssen Sie für Azure Machine Learning über die Berechtigung zum Zugreifen auf den entsprechenden Datenspeicher verfügen.

Warnung

Mandantenübergreifender Zugriff auf Speicherkonten wird nicht unterstützt. Wenn für Ihr Szenario mandantenübergreifender Zugriff erforderlich ist, wenden Sie sich unter dem Alias amldatasupport@microsoft.com an das Azure Machine Learning-Datensupportteam, um Unterstützung bei einer Lösung mit benutzerdefiniertem Code zu erhalten.

Beim identitätsbasierten Datenzugriff werden nur Verbindungen mit den folgenden Speicherdiensten unterstützt:

  • Azure Blob Storage
  • Azure Data Lake Storage Gen1
  • Azure Data Lake Storage Gen2
  • Azure SQL-Datenbank

Für den Zugriff auf diese Speicherdienste benötigen Sie mindestens die Zugriffsberechtigung Leser von Speicherblobdaten für das Speicherkonto. Nur Speicherkontobesitzer können Ihre Zugriffsebene über das Azure-Portal ändern.

Wenn Sie nicht Ihre Benutzeridentität (Azure Active Directory) verwenden möchten, haben Sie auch die Möglichkeit, einer vom Arbeitsbereich verwalteten Systemidentität (Managed-System Identity, MSI) die Berechtigung zum Erstellen des Datenspeichers zu erteilen. Dafür müssen Sie über Besitzerberechtigungen für das Speicherkonto verfügen und der Datenregistermethode den Parameter grant_workspace_access= True hinzufügen.

Wenn Sie ein Modell auf einem Remotecomputeziel trainieren und zu Trainingszwecken auf die Daten zugreifen möchten, muss der Computeidentität vom Speicherdienst mindestens die Rolle „Storage-Blobdatenleser“ gewährt werden. Informieren Sie sich über das Einrichten einer verwalteten Identität auf einem Computecluster.

Verwenden von virtuellen Netzwerken

Standardmäßig kann Azure Machine Learning nicht mit einem Speicherkonto kommunizieren, das sich hinter einer Firewall oder in einem virtuellen Netzwerk befindet.

Sie können Speicherkonten so konfigurieren, dass der Zugriff nur in bestimmten virtuellen Netzwerken gestattet ist. Diese Konfiguration erfordert zusätzliche Schritte, um sicherzustellen, dass die Daten innerhalb des Netzwerks bleiben. Dieses Verhalten gilt auch für den auf Anmeldeinformationen basierenden Datenzugriff. Weitere Informationen finden Sie unter Konfigurieren virtueller Netzwerkszenarien.

Wenn für Ihr Speicherkonto Einstellungen für virtuelle Netzwerke festgelegt wurden, bestimmen diese den erforderlichen Identitätstyp und die benötigten Berechtigungen für den Zugriff. Beispielsweise legen die Einstellungen des virtuellen Netzwerks für die Datenvorschau und das Datenprofil fest, welcher Identitätstyp zum Authentifizieren des Datenzugriffs verwendet wird.

  • In Szenarien, in denen nur bestimmte IP-Adressen und Subnetze auf den Speicher zugreifen dürfen, verwendet Azure Machine Learning die Arbeitsbereichs-MSI, um Datenvorschauen und -profile zu erstellen.

  • Wenn Sie ADLS Gen 2 oder Blob als Speicher verwenden und dafür Einstellungen für virtuelle Netzwerke festgelegt sind, können Kunden je nach den während der Erstellung definierten Datenspeichereinstellungen entweder die Benutzeridentität oder die Arbeitsbereichs-MSI verwenden.

  • Wenn die Einstellung für das virtuelle Netzwerk „Erlauben Sie Azure-Diensten auf der Liste der vertrauenswürdigen Dienste den Zugriff auf dieses Speicherkonto.“ lautet, wird die Arbeitsbereichs-MSI verwendet.

Verwenden von Daten im Speicher

Es wird empfohlen, dass Sie Azure Machine Learning-Datasets verwenden, wenn Sie mit Ihren Daten im Speicher mit Azure Machine Learning interagieren.

Wichtig

Datasets mit identitätsbasiertem Datenzugriff werden für automatisierte ML-Experimente nicht unterstützt.

Datasets packen Ihre Daten in ein selten ausgewertetes Objekt für Aufgaben des maschinellen Lernens wie das Training. Mithilfe von Datasets können Sie zudem Dateien in allen Formaten aus Azure-Speicherdiensten, z. B. Azure Blob Storage und Azure Data Lake Storage, auf ein Computeziel herunterladen oder darin einbinden.

Zum Erstellen eines Dataset können Sie auf Pfade aus Datenspeichern verweisen, für die auch der identitätsbasierte Datenzugriff verwendet wird.

  • Wenn der zugrunde liegende Speicherkontotyp „Blob“ oder „ADLS Gen 2“ lautet, benötigt Ihre Benutzeridentität die Rolle „Blobleser“.
  • Wenn als zugrunde liegender Speicher ADLS Gen 1 verwendet wird, können Berechtigungen über die Zugriffssteuerungsliste (Access Control List, ACL) des Speichers festgelegt werden.

Im folgenden Beispiel ist blob_datastore bereits vorhanden und verwendet den identitätsbasierten Datenzugriff.

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

Eine andere Option besteht darin, die Datenspeichererstellung zu überspringen und Datasets direkt aus Speicher-URLs zu erstellen. Diese Funktionalität unterstützt derzeit nur Azure-Blobs und Azure Data Lake Storage Gen1 und Gen2. Für die Erstellung auf der Grundlage der Speicher-URL wird nur die Benutzeridentität für die Authentifizierung benötigt.

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

Wenn Sie einen Trainingsauftrag übermitteln, für den ein Dataset genutzt wird, das per identitätsbasiertem Datenzugriff erstellt wurde, wird die verwaltete Identität der Trainingscomputeressource für die Authentifizierung des Datenzugriffs verwendet. Ihr Azure Active Directory-Token wird nicht verwendet. Stellen Sie bei diesem Szenario sicher, dass der verwalteten Identität der Computeressource vom Speicherdienst mindestens die Rolle „Leser von Speicherblobdaten“ gewährt wird. Weitere Informationen finden Sie unter Einrichten der verwalteten Identität für Computecluster.

Nächste Schritte