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. Datenspeicher speichern Verbindungsinformationen, z. B. Ihre Abonnement-ID und Tokenautorisierung, im Schlüsseltresor, der dem Arbeitsbereich zugeordnet ist. Wenn Sie einen Datenspeicher erstellen, für den der identitätsbasierte Datenzugriff verwendet wird, wird anhand Ihres Azure-Kontos (Microsoft Entra-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
Sie können den identitätsbasierten Datenzugriff in Azure Machine Learning in zwei Szenarien anwenden. 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, der sicherstellt, 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 Microsoft Entra-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 gewährleistet die Sicherheit der Anmeldeinformationen.
Dieses Verhalten gilt auch für Folgendes:
- Erstellen eines Datasets direkt aus Speicher-URLs.
- Nutzen Sie Daten interaktiv über ein Jupyter Notebook auf Ihrem lokalen Computer bzw. Ihrer Compute-Instanz.
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 vertrauliche Eingabedaten verfügbar gemacht werden. Bei diesem Szenario authentifiziert eine verwaltete Identität der Trainingscomputeressource den Datenzugriff. 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
Ein Azure-Abonnement. Wenn Sie nicht über ein Azure-Abonnement verfügen, können Sie ein kostenloses Konto erstellen, bevor Sie beginnen. Probieren Sie die kostenlose oder kostenpflichtige Version von Azure Machine Learning aus.
Ein Azure Storage-Konto mit einem unterstützten Speichertyp. Diese Speichertypen werden unterstützt:
Ein Azure Machine Learning-Arbeitsbereich.
Sie können wahlweise einen Azure Machine Learning-Arbeitsbereich erstellen oder mithilfe des Python SDKs einen vorhandenen Arbeitsbereich verwenden.
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 verwendet. Das Erstellen von Datenspeichern erfolgt typischerweise interaktiv in einem Notebook oder über das Studio. Die Datenzugriffsauthentifizierung verwendet Ihr Microsoft Entra-Token.
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 (Microsoft Entra ID) 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 Sie die Berechtigungen über die Zugriffssteuerungsliste (Access Control List, ACL) des Speichers festlegen.
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')
Sie können die Datenspeichererstellung auch überspringen und Datasets direkt aus Speicher-URLs 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 Microsoft Entra-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.