Freigeben über


Einrichten der Authentifizierung zwischen Azure Machine Learning und anderen Diensten

GILT FÜR:Azure CLI ml Erweiterung v2 (aktuell)Python SDK azure-ai-ml v2 (aktuell)

Azure Machine Learning setzt sich aus mehreren Azure-Diensten zusammen. Mehrere Methoden unterstützen die Authentifizierung zwischen Azure Machine Learning und den Diensten, auf denen sie basiert.

  • Der Azure Machine Learning-Arbeitsbereich verwendet eine verwaltete Identität für die Kommunikation mit anderen Diensten. Standardmäßig ist diese Identität eine vom System zugewiesene verwaltete Identität. Sie können stattdessen auch eine benutzerseitig zugewiesene verwaltete Identität verwenden.
  • Azure Machine Learning verwendet Azure Container Registry (ACR), um Docker-Images zu speichern, die zum Trainieren und Bereitstellen von Modellen verwendet werden. Wenn Sie zulassen, dass Azure Machine Learning automatisch ACR erstellt, wird das Administratorkonto aktiviert.
  • Der Azure Machine Learning-Computecluster verwendet eine verwaltete Identität, um Verbindungsinformationen für Datenspeicher aus Azure Key Vault abzurufen und Docker-Images aus ACR zu pullen. Sie können auch den identitätsbasierten Zugriff auf Datenspeicher konfigurieren, die die verwaltete Identität des Computeclusters verwendet.
  • Der Zugriff auf die Daten kann über mehrere Pfade erfolgen, je nach Datenspeicherdienst und Ihrer Konfiguration. Die Authentifizierung für den Datenspeicher kann z. B. einen Kontoschlüssel, ein Token, einen Sicherheitsprinzipal, eine verwaltete Identität oder eine Benutzeridentität verwenden.
  • Verwaltete Onlineendpunkte können eine verwaltete Identität verwenden, um auf Azure-Ressourcen zuzugreifen, wenn ein Rückschluss ausgeführt wird. Weitere Informationen finden Sie unter Zugreifen auf Azure-Ressourcen über einen Onlineendpunkt.

Voraussetzungen

  • Ein Azure Machine Learning-Arbeitsbereich. Anweisungen zum Erstellen eines Arbeitsbereichs finden Sie unter Erstellen des Arbeitsbereichs.

  • Die Azure CLI und die ml Erweiterung oder das Azure Machine Learning Python SDK v2:

    Informationen zum Installieren der Azure CLI und der ml Erweiterung finden Sie unter Installieren und Einrichten der CLI (v2).

    In den Beispielen in diesem Artikel wird davon ausgegangen, dass Sie eine Bash-Shell oder eine kompatible Shell verwenden. Sie können z. B. eine Shell auf einem Linux-System oder Windows-Subsystem für Linux verwenden.

  • Um Rollen zuzuweisen, muss die Anmeldung für Ihr Azure-Abonnement über die Rolle "Managed Identity Operator " oder eine andere Rolle verfügen, die die erforderlichen Aktionen gewährt (z. B. Besitzer).

  • Sie müssen mit dem Erstellen und Arbeiten mit verwalteten Identitäten vertraut sein.

Arbeitsbereichsidentitätstypen

Der Azure Machine Learning-Arbeitsbereich verwendet eine verwaltete Identität für die Kommunikation mit anderen Diensten. Azure Machine Learning unterstützt mehrere Identitätstypen.

Typ der verwalteten Identität Erstellung von Rollenzuweisungen Zweck
Vom System zugewiesen (SAI) Von Microsoft verwaltet Lebenszyklus, der an eine Ressource gebunden ist; Verwendung einzelner Ressourcen; einfacher Einstieg
Systemseitig zugewiesen+benutzerseitig zugewiesen (SAI+UAI) Von Ihnen verwaltet Unabhängiger Lebenszyklus für vom Benutzer zugewiesene Identität; Mehrressourcennutzung; steuert den geringsten privilegierten Zugriff; Zugreifen auf Daten in Trainings-Aufträgen.

Nachdem Sie einen Arbeitsbereich mit dem SAI-Identitätstyp erstellt haben, können Sie ihn auf SAI+UAI aktualisieren. Sie können einen Arbeitsbereich von SAI+UAI nicht auf SAI aktualisieren. Sie können demselben Arbeitsbereich mehrere vom Benutzer zugewiesene Identitäten zuweisen.

Benutzerseitig zugewiesene verwaltete Identität

Arbeitsbereich

Sie können beim Erstellen eines Azure Machine Learning-Arbeitsbereichs aus dem Azure-Portal eine benutzerseitig zugewiesene verwaltete Identität hinzufügen. Führen Sie beim Erstellen des Arbeitsbereichs die folgenden Schritte aus:

  1. Wählen Sie auf der Seite Grundlagen das Azure Storage-Konto sowie die Azure Container Registry- und Azure Key Vault-Instanz aus, die Sie mit dem Arbeitsbereich verwenden möchten.
  2. Wählen Sie auf der Seite Identität die Option Benutzerseitig zugewiesene Identität und dann die zu verwendende verwaltete Identität aus.

Die folgenden Azure RBAC-Rollenzuweisungen sind für Ihre benutzerseitig zugewiesene verwaltete Identität für Ihren Azure Machine Learning-Arbeitsbereich erforderlich, um auf Daten in den mit dem Arbeitsbereich verbundenen Ressourcen zuzugreifen.

Ressource Berechtigung
Azure Machine Learning-Arbeitsbereich Mitwirkender
Azure Storage Mitwirkender (Steuerungsebene) + Mitwirkender an Speicherblobdaten (Datenebene, optional, um die Datenvorschau in Azure Machine Learning Studio zu aktivieren)
Azure Key Vault (bei Verwendung des RBAC-Berechtigungsmodells) Mitwirkender (Steuerungsebene) + Key Vault-Administrator (Datenebene)
Azure Key Vault (bei Verwendung des Berechtigungsmodells für Zugriffsrichtlinien) Mitwirkender + alle Zugriffsrichtlinienberechtigungen außer Bereinigen
Azure Container Registry (Registrierungsdienst für Container von Azure) Mitwirkender
Azure Application Insights Mitwirkender

Für die automatisierte Erstellung von Rollenzuweisungen auf Ihrer vom Benutzer zugewiesenen verwalteten Identität können Sie diese ARM-Vorlage verwenden.

Tipp

Für einen Arbeitsbereich mit kundenseitig verwalteten Schlüsseln für die Verschlüsselung können Sie eine benutzerseitig zugewiesene verwaltete Identität zur Authentifizierung über den Speicher an Key Vault übergeben. Verwenden Sie die Parameter user-assigned-identity-for-cmk-encryption (CLI) oder user_assigned_identity_for_cmk_encryption (SDK), um die verwaltete Identität zu übergeben. Diese verwaltete Identität kann dieselbe oder eine andere sein als die primäre benutzerseitig zugewiesene verwaltete Identität des Arbeitsbereichs.

Verwenden Sie eine der folgenden Methoden, um einen Arbeitsbereich mit mehreren benutzerseitig zugewiesenen Identitäten zu erstellen:

GILT FÜR:Azure CLI ml-Erweiterung v2 (aktuell)

az ml workspace create -f workspace_creation_with_multiple_UAIs.yml --subscription <subscription ID> --resource-group <resource group name> --name <workspace name>

Das folgende Beispiel zeigt den Inhalt von workspace_creation_with_multiple_UAIs.yml:

location: <region name>
identity:
   type: user_assigned
   user_assigned_identities:
    '<UAI resource ID 1>': {}
    '<UAI resource ID 2>': {}
storage_account: <storage acccount resource ID>
key_vault: <key vault resource ID>
image_build_compute: <compute(virtual machine) resource ID>
primary_user_assigned_identity: <one of the UAI resource IDs in the above list>

Verwenden Sie eine der folgenden Methoden, um vom Benutzer zugewiesene Identitäten für einen Arbeitsbereich zu aktualisieren, einschließlich des Hinzufügens eines neuen oder Löschens der vorhandenen Identitäten:

GILT FÜR:Azure CLI ml-Erweiterung v2 (aktuell)

az ml workspace update -f workspace_update_with_multiple_UAIs.yml --subscription <subscription ID> --resource-group <resource group name> --name <workspace name>

Das folgende Beispiel zeigt die Inhalte der Datei workspace_update_with_multiple_UAIs.yml:

identity:
   type: user_assigned
   user_assigned_identities:
    '<UAI resource ID 1>': {}
    '<UAI resource ID 2>': {}
primary_user_assigned_identity: <one of the UAI resource IDs in the above list>

Tipp

Um eine neue UAI hinzuzufügen, geben Sie die neue UAI-ID zusammen mit den vorhandenen UAIs unter dem user_assigned_identities Abschnitt an. Sie müssen alle vorhandenen UAI-IDs übergeben.
Um eine oder mehrere vorhandene UAIs zu löschen, fügen Sie die UAI-IDs hinzu, die Sie unter dem user_assigned_identities Abschnitt beibehalten möchten. Die UAI-IDs, die Sie nicht einschließen, werden gelöscht.

Hinzufügen einer benutzerseitig zugewiesenen verwalteten Identität zu einem Arbeitsbereich zusätzlich zu einer vom System zugewiesenen Identität

In einigen Szenarien müssen Sie möglicherweise zusätzlich zur standardmäßigen systemseitig zugewiesenen Arbeitsbereichsidentität eine benutzerseitig zugewiesene verwaltete Identität verwenden. Führen Sie die folgenden Schritte aus, um eine vom Benutzer zugewiesene verwaltete Identität hinzuzufügen, ohne die vorhandene Arbeitsbereichsidentität zu ändern:

  1. Erstellen Sie eine benutzerseitig zugewiesene verwaltete Identität. Speichern Sie die ID für die verwaltete Identität, die Sie erstellen.

  2. Um die verwaltete Identität an Ihren Arbeitsbereich anzufügen, erstellen Sie eine YAML-Datei, die die Identität angibt. Das folgende Beispiel zeigt den Inhalt der YAML-Datei. Ersetzen Sie die <TENANT_ID>, <RESOURCE_GROUP> und <USER_MANAGED_ID> Platzhalter durch Ihre Werte.

    identity:
        type: system_assigned,user_assigned
        tenant_id: <TENANT_ID>
        user_assigned_identities:
            '/subscriptions/<SUBSCRIPTION_ID/resourceGroups/<RESOURCE_GROUP>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<USER_MANAGED_ID>':
            {}
    
  3. Verwenden Sie den Azure CLI-Befehl az ml workspace update, um Ihren Arbeitsbereich zu aktualisieren. Geben Sie die YAML-Datei aus dem vorherigen Schritt mithilfe des --file Parameters an. Das folgende Beispiel zeigt, wie dieser Befehl aussieht:

    az ml workspace update --resource-group <RESOURCE_GROUP> --name <WORKSPACE_NAME> --file <YAML_FILE_NAME>.yaml
    

Datenisolation für freigegebene Ressourcen

Wenn mehrere Arbeitsbereiche dieselben zugeordneten Ressourcen (Speicherkonto, Schlüsseltresor oder Containerregistrierung) gemeinsam nutzen, aktivieren Sie die Datenisolation, um Namenskonflikte zu verhindern und sicherzustellen, dass jeder Arbeitsbereich nur auf seine eigenen Daten zugreifen kann. Das enableDataIsolation Flag konfiguriert, wie Arbeitsbereichsartefakte in freigegebenen Ressourcen gespeichert und darauf zugegriffen werden.

Wichtig

Sie können die Datenisolationsoption nur beim Erstellen eines Arbeitsbereichs festlegen. Sie können sie nach dem Erstellen des Arbeitsbereichs nicht aktivieren oder deaktivieren.

Auswirkungen der Aktivierung der Datenisolation

Wenn Sie die Datenisolation aktivieren, wendet der Arbeitsbereich die folgenden Konfigurationen an:

Ressource Verhalten
Speicherkonto Containernamen werden der Arbeitsbereichs-GUID vorangestellt (z. B {workspaceGUID}-azureml-blobstore. ). Die verwaltete Identität des Arbeitsbereichs empfängt eine Datenebenenrollenzuweisung mit einer Azure-attributbasierten Zugriffssteuerungsbedingung (ABAC), die den Zugriff nur auf die spezifischen Container des Arbeitsbereichs beschränkt.
Schlüsseltresor Geheime Namen werden der Arbeitsbereich-GUID vorangestellt, um geheime Schlüssel zwischen Arbeitsbereichen zu isolieren, die denselben Schlüsseltresor verwenden.
Containerregistrierung Docker-Imagenamen werden der Arbeitsbereichs-GUID vorangestellt, um Bilder zwischen Arbeitsbereichen zu isolieren, die dieselbe Registrierung verwenden.

Standardverhalten nach Arbeitsbereichsart

Der Standardwert für die Datenisolation hängt von der Arbeitsbereichsart ab:

Arbeitsbereichsart Standardmäßige Datenisolation
hub Enabled
project Aktiviert (geerbt vom Hub)
default Disabled

Wann soll die Datenisolation aktiviert werden?

Datenisolation aktivieren, wenn:

  • Mehrere Arbeitsbereiche verwenden dasselbe Speicherkonto, den Schlüsseltresor oder die Containerregistrierung.
  • Sie müssen Benennungskonflikte für Artefakte (z. B. Docker-Images oder Geheimnisse) verhindern, die mit demselben Namen in Workspaces erstellt werden.
  • Sie benötigen eine strengere Zugriffssteuerung, um sicherzustellen, dass Arbeitsbereichsidentitäten nur auf ihre eigenen Daten zugreifen können.

Für Hub- und Projektarbeitsbereiche ist die Datenisolation standardmäßig aktiviert, um das Modell gemeinsamer Ressourcen zu unterstützen. Weitere Informationen finden Sie unter Was ist ein Azure Machine Learning Hub-Arbeitsbereich?

Aktivieren der Datenisolation beim Erstellen eines Arbeitsbereichs

GILT FÜR:Azure CLI ml-Erweiterung v2 (aktuell)

az ml workspace create --name <WORKSPACE_NAME> \
    --resource-group <RESOURCE_GROUP> \
    --enable-data-isolation

Alternativ können Sie die Datenisolation in einer YAML-Konfigurationsdatei angeben:

$schema: https://azuremlschemas.azureedge.net/latest/workspace.schema.json
name: my-workspace
location: eastus
enable_data_isolation: true
storage_account: /subscriptions/<SUBSCRIPTION_ID>/resourceGroups/<RESOURCE_GROUP>/providers/Microsoft.Storage/storageAccounts/<STORAGE_ACCOUNT>
key_vault: /subscriptions/<SUBSCRIPTION_ID>/resourceGroups/<RESOURCE_GROUP>/providers/Microsoft.KeyVault/vaults/<KEY_VAULT>
container_registry: /subscriptions/<SUBSCRIPTION_ID>/resourceGroups/<RESOURCE_GROUP>/providers/Microsoft.ContainerRegistry/registries/<CONTAINER_REGISTRY>

Erstellen Sie dann den Arbeitsbereich:

az ml workspace create --file workspace.yml --resource-group <RESOURCE_GROUP>

Computecluster

Hinweis

Azure Machine Learning-Computecluster unterstützen nur eine systemseitig zugewiesene Identität oder mehrere benutzerseitig zugewiesene Identitäten, nicht beides gleichzeitig.

Bei der standardmäßigen verwalteten Identität handelt es sich um die systemseitig zugewiesene verwaltete Identität oder die erste benutzerseitig zugewiesene verwaltete Identität.

Während einer Prozessausführung verfügt eine Identität über zwei Anwendungen:

  1. Das System verwendet eine Identität zum Einrichten der Speichereinbindungen, der Containerregistrierung und der Datenspeicher des Benutzers.

    • In diesem Fall verwendet das System die standardmäßig verwaltete Identität.
  2. Sie wenden eine Identität an, um aus dem Code heraus für einen übermittelten Auftrag auf Ressourcen zuzugreifen:

    • Geben Sie in diesem Fall den Wert für client_id entsprechend der verwalteten Identität an, die Sie zum Abrufen von Anmeldeinformationen verwenden möchten.
    • Alternativ können Sie die Client-ID der benutzerseitig zugewiesenen Identität über die Umgebungsvariable DEFAULT_IDENTITY_CLIENT_ID abrufen.

    So rufen Sie beispielsweise ein Token für einen Datenspeicher mit der standardmäßig verwalteten Identität ab:

    client_id = os.environ.get('DEFAULT_IDENTITY_CLIENT_ID')
    credential = ManagedIdentityCredential(client_id=client_id)
    token = credential.get_token('https://storage.azure.com/')
    

Um einen Computecluster mit verwalteter Identität zu konfigurieren, verwenden Sie eine der folgenden Methoden:

GILT FÜR:Azure CLI ml-Erweiterung v2 (aktuell)

az ml compute create -f create-cluster.yml

Das folgende Beispiel zeigt den Inhalt von create-cluster.yml:

$schema: https://azuremlschemas.azureedge.net/latest/amlCompute.schema.json 
name: basic-example
type: amlcompute
size: STANDARD_DS3_v2
min_instances: 0
max_instances: 2
idle_time_before_scale_down: 120
identity:
  type: user_assigned
  user_assigned_identities: 
    - resource_id: "identity_resource_id"

Zum Vergleich: Das folgende Beispiel stammt aus einer YAML-Datei, die einen Cluster erstellt, der eine systemseitig zugewiesene verwaltete Identität verwendet:

$schema: https://azuremlschemas.azureedge.net/latest/amlCompute.schema.json 
name: basic-example
type: amlcompute
size: STANDARD_DS3_v2
min_instances: 0
max_instances: 2
idle_time_before_scale_down: 120
identity:
  type: system_assigned

Wenn Sie über einen vorhandenen Computecluster verfügen, können Sie zwischen vom Benutzer verwalteter und systemverwalteter Identität wechseln. In den folgenden Beispielen wird veranschaulicht, wie Sie die Konfiguration ändern:

Benutzerseitig zugewiesene verwaltete Identität

export MSI_NAME=my-cluster-identity
export COMPUTE_NAME=mycluster-msi

does_compute_exist()
{
  if [ -z $(az ml compute show -n $COMPUTE_NAME --query name) ]; then
    echo false
  else
    echo true
  fi
}

echo "Creating MSI $MSI_NAME"
# Get the resource id of the identity
IDENTITY_ID=$(az identity show --name "$MSI_NAME" --query id -o tsv | tail -n1 | tr -d "[:cntrl:]" || true)
if [[ -z $IDENTITY_ID ]]; then
    IDENTITY_ID=$(az identity create -n "$MSI_NAME" --query id -o tsv | tail -n1 | tr -d "[:cntrl:]")
fi
echo "MSI created: $MSI_NAME"
sleep 15 # Let the previous command finish: https://github.com/Azure/azure-cli/issues/8530


echo "Checking if compute $COMPUTE_NAME already exists"
if [ "$(does_compute_exist)" == "true" ]; then
  echo "Skipping, compute: $COMPUTE_NAME exists"
else
  echo "Provisioning compute: $COMPUTE_NAME"
  az ml compute create --name "$COMPUTE_NAME" --type amlcompute --identity-type user_assigned --user-assigned-identities "$IDENTITY_ID"
fi
az ml compute update --name "$COMPUTE_NAME" --identity-type user_assigned --user-assigned-identities "$IDENTITY_ID"

Systemseitig zugewiesene verwaltete Identität

export COMPUTE_NAME=mycluster-sa

does_compute_exist()
{
  if [ -z $(az ml compute show -n $COMPUTE_NAME --query name) ]; then
    echo false
  else
    echo true
  fi
}

echo "Checking if compute $COMPUTE_NAME already exists"
if [ "$(does_compute_exist)" == "true" ]; then
  echo "Skipping, compute: $COMPUTE_NAME exists"
else
  echo "Provisioning compute: $COMPUTE_NAME"
  az ml compute create --name "$COMPUTE_NAME" --type amlcompute
fi

az ml compute update --name "$COMPUTE_NAME" --identity-type system_assigned

Kubernetes-Clusterberechnung

Hinweis

Azure Machine Learning Kubernetes-Cluster unterstützen nur eine vom System zugewiesene Identität oder eine vom Benutzer zugewiesene Identität, nicht beide gleichzeitig.

Bei der standardmäßigen verwalteten Identität handelt es sich um die systemseitig zugewiesene verwaltete Identität oder die erste benutzerseitig zugewiesene verwaltete Identität.

Während einer Prozessausführung verfügt eine Identität über zwei Anwendungen:

  • Das System verwendet eine Identität zum Einrichten der Speichereinbindungen, der Containerregistrierung und der Datenspeicher des Benutzers.

    • In diesem Fall verwendet das System die standardmäßig verwaltete Identität.
  • Sie wenden eine Identität an, um aus dem Code heraus für einen übermittelten Auftrag auf Ressourcen zuzugreifen:

    • Bei der Berechnung des Kubernetes-Clusters sollte das ManagedIdentityCredential-Objekt ohne client_id bereitgestellt werden.

    So rufen Sie beispielsweise ein Token für einen Datenspeicher mit der standardmäßig verwalteten Identität ab:

    credential = ManagedIdentityCredential()
    token = credential.get_token('https://storage.azure.com/')
    

Um einen Kubernetes-Cluster compute zu konfigurieren, stellen Sie sicher, dass die erforderliche AML-Erweiterung darin bereitgestellt ist, und befolgen Sie die Dokumentation zum Anfügen des Kubernetes-Cluster-Computes an ihren AML-Arbeitsbereich.

Wichtig

Verwenden Sie für Schulungszwecke (Machine Learning Jobs) die dem Kubernetes-Cluster-Compute zugewiesene Identität. Verwenden Sie für die Ableitung (verwaltete Onlineendpunkte) jedoch die dem Endpunkt zugewiesene Identität. Weitere Informationen finden Sie unter How to Access Azure Resources from an Online Endpoint.

Datenspeicher

Wenn Sie einen Datenspeicher erstellen, der identitätsbasierten Datenzugriff verwendet, verwenden Sie Ihr Azure-Konto (Microsoft Entra-Token), um zu bestätigen, dass Sie über die Berechtigung zum Zugriff auf den Speicherdienst verfügen. Im Identitätsbasierten Datenzugriffsszenario speichern Sie keine Authentifizierungsanmeldeinformationen. Im Datenspeicher speichern Sie nur die Speicherkontoinformationen.

Im Gegensatz dazu speichern Datenspeicher, die eine auf Anmeldeinformationen basierende Authentifizierung verwenden, Verbindungsinformationen wie Ihren Speicherkontoschlüssel oder Ihr SAS-Token im Schlüsseltresor zwischen, der dem Arbeitsbereich zugeordnet ist. Dieser Ansatz hat die Einschränkung, dass andere Arbeitsbereichsbenutzer mit ausreichenden Berechtigungen diese Anmeldeinformationen abrufen können, was möglicherweise ein Sicherheitsproblem für einige Organisationen darstellt.

Weitere Informationen zur Authentifizierung des Zugriffs auf die Daten finden Sie im Artikel Datenverwaltung. Informationen zum Konfigurieren des identitätsbasierten Zugriffs auf Daten finden Sie unter Erstellen von Datenspeichern.

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:

  • Zugreifen auf Speicherdienste
  • Machine Learning-Trainingsmodelle

Mithilfe des identitätsbasierten Zugriffs können Sie rollenbasierte Zugriffssteuerungen (RBAC) verwenden, um einzuschränken, welche Identitäten, z. B. Benutzer oder Computeressourcen, Zugriff auf die Daten haben.

Zugreifen auf Speicherdienste

Sie können eine Verbindung mit Speicherdiensten herstellen, indem Sie identitätsbasierten Datenzugriff mit Azure Machine Learning-Datenspeichern verwenden.

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, anstatt Ihre Anmeldeinformationen im Datenspeicher zu speichern. Dieser Ansatz ermöglicht die Datenzugriffsverwaltung auf Speicherebene und hält Anmeldeinformationen vertraulich.

Das gleiche Verhalten gilt, wenn Sie interaktiv mit Daten über ein Jupyter Notebook auf Ihrem lokalen Computer oder einer Compute-Instanz arbeiten.

Hinweis

Anmeldeinformationen, die über die anmeldeinformationsbasierte Authentifizierung gespeichert werden, umfassen Abonnement-IDs, SAS-Token (Shared Access Signature), Speicherzugriffsschlüssel und Dienstprinzipalinformationen wie Client-IDs und Mandanten-IDs.

Um eine sichere Verbindung mit Ihrem Speicherdienst in Azure herzustellen, erfordert Azure Machine Learning, dass Sie über die Berechtigung zum Zugriff auf den entsprechenden Datenspeicher verfügen.

Warnung

Der mandantenübergreifende Zugriff auf Speicherkonten wird nicht unterstützt. Wenn für Ihr Szenario mandantenübergreifender Zugriff erforderlich ist, wenden Sie sich für Unterstützung bei einer benutzerdefinierten Codelösung an das Azure Machine Learning Data Support-Team unter amldatasupport@microsoft.com.

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

  • Azure Blob Storage (Speicherdienst von Azure für unstrukturierte Daten)
  • Azure Data Lake Storage Gen1
  • Azure Data Lake Storage Gen2

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.

Zugreifen auf Daten für Trainingsaufträge auf einer Compute-Instanz mithilfe einer verwalteten Identität

Bestimmte Machine Learning-Szenarien umfassen die Arbeit mit privaten Daten. In solchen Fällen haben Datenwissenschaftler möglicherweise keinen direkten Zugriff auf Daten als Microsoft Entra-Benutzer. Verwenden Sie in diesem Szenario die verwaltete Identität einer Berechnung für die Datenzugriffsauthentifizierung. Sie können nur auf die Daten aus einer Computeinstanz oder einem Computerlern-Computecluster zugreifen, der einen Schulungsauftrag ausführt. Mit diesem Ansatz gewährt der Administrator der Computeinstanz oder dem Computecluster der verwalteten Identität Storage Blob Data Reader-Berechtigungen für den Speicher. Den einzelnen wissenschaftlichen Fachkräften für Daten muss kein Zugriff gewährt werden.

So aktivieren Sie die Authentifizierung mit der verwalteten Identität der Compute-Instanz

  • Erstellen Sie eine Compute-Instanz mit aktivierter verwalteter Identität. Weitere Informationen finden Sie im Abschnitt Computecluster oder für Compute-Instanzen im Abschnitt Zuweisen einer verwalteten Identität.

    Wichtig

    Wenn Sie die Computeinstanz für das Herunterfahren im Leerlauf konfigurieren, wird die Computeinstanz aufgrund von Inaktivität nicht heruntergefahren, es sei denn, die verwaltete Identität besitzt die Rolle Mitwirkender im Azure Machine Learning-Arbeitsbereich. Weitere Informationen zu Zugriffsberechtigungen finden Sie unter Verwalten des Zugriffs auf einen Azure Machine Learning-Arbeitsbereich.

  • Weisen Sie der verwalteten Identität der Compute-Instanz mindestens die Rolle „Leser von Speicherblobdaten“ für das Speicherkonto zu.

  • Erstellen Sie alle Datenspeicher mit aktivierter identitätsbasierter Authentifizierung. Weitere Informationen finden Sie unter Erstellen von Datenspeichern.

Hinweis

Der Name der erstellten vom System verwalteten Identität für die Computeinstanz oder den Cluster hat das Format /workspace-name/computes/compute-name in Ihrer Microsoft Entra-ID.

Nachdem Sie die identitätsbasierte Authentifizierung aktiviert haben, wird die berechnete verwaltete Identität standardmäßig verwendet, wenn Sie auf Daten in Ihren Schulungsaufträgen zugreifen. Optional können Sie sich mithilfe der Benutzeridentität authentifizieren, indem Sie die im nächsten Abschnitt beschriebenen Schritte ausführen.

Informationen zum Konfigurieren von Azure RBAC für den Speicher finden Sie unter rollenbasierte Zugriffssteuerungen.

Zugreifen auf Daten für Schulungsaufträge auf Computeclustern mithilfe der Benutzeridentität

GILT FÜR:Azure CLI ml-Erweiterung v2 (aktuell)

Wenn Sie auf Azure Machine Learning-Compute-Cluster trainieren, können Sie sich mit Ihrem Microsoft Entra-Benutzer-Token bei dem Speicher authentifizieren.

Dieser Authentifizierungsmodus ermöglicht Folgendes:

  • Richten Sie differenzierte Berechtigungen ein, bei denen unterschiedliche Arbeitsbereichsbenutzer auf unterschiedliche Speicherkonten oder Ordner in Speicherkonten zugreifen können.
  • Ermöglichen Sie es wissenschaftlichen Fachkräften für Daten, bestehende Zugriffsrechte auf Speichersysteme zu verwenden.
  • Überwachen des Speicherzugriffs, da die Speicherprotokolle zeigen, welche Identitäten zum Zugriff auf Daten verwendet wurden.

Wichtig

Diese Funktionalität hat die folgenden Einschränkungen:

  • Experimente, die über die Azure Machine Learning CLI und python SDK V2 übermittelt wurden, unterstützen dieses Feature, ml Studio jedoch nicht.
  • Sie können keine Benutzeridentität und Compute-verwaltete Identität für die Authentifizierung im selben Auftrag verwenden.
  • Legen Sie für einen Pipeline-Auftrag die Benutzeridentität auf der Ebene einzelner Schritte fest, die auf einem Rechner ausgeführt werden, und nicht auf der Ebene der Stammpipeline. Obwohl die Identitätseinstellung sowohl auf der Stamm-Pipeline als auch auf der Schritt-Ebene unterstützt wird, hat die Einstellung auf der Schritt-Ebene Vorrang, wenn beide konfiguriert sind. Für Pipelines, die Pipeline-Komponenten enthalten, muss die Identität jedoch für einzelne Schritte festgelegt werden, die ausgeführt werden. Die auf der Stammpipeline- oder Pipelinekomponentenebene festgelegte Identität funktioniert nicht. Legen Sie daher die Identität auf der Ebene der einzelnen Schritte der Einfachheit halber fest.

Führen Sie die folgenden Schritte aus, um den Datenzugriff mithilfe der Benutzeridentität für Schulungsaufträge auf Computeclustern von CLI einzurichten:

  1. Erteilen von Zugriff auf Speicherressourcen für eine Benutzeridentität. Erteilen Sie beispielsweise StorageBlobReader Zugriff auf das bestimmte Speicherkonto, das Sie verwenden möchten, oder erteilen Sie ACL-basierte Berechtigungen für bestimmte Ordner oder Dateien in Azure Data Lake Gen 2-Speicher.

  2. Erstellen Sie einen Azure Machine Learning-Datenspeicher ohne zwischengespeicherte Anmeldeinformationen für das Speicherkonto. Wenn ein Datenspeicher Anmeldeinformationen zwischengespeichert hat, etwa den Speicherkontoschlüssel, werden diese Anmeldeinformationen anstelle der Benutzeridentität verwendet.

  3. Senden Sie einen Trainingsauftrag mit auf type: user_identity festgelegter Eigenschaft identity, wie in der folgenden Auftragsspezifikation dargestellt. Während des Trainingsauftrags erfolgt die Authentifizierung beim Speicher über die Identität des Benutzers, der den Auftrag sendet.

    Hinweis

    Wenn Sie die Identitätseigenschaft nicht angeben und der Datenspeicher keine zwischengespeicherten Anmeldeinformationen enthält, verwendet das System die berechnete verwaltete Identität als Fallback.

    command: |
    echo "--census-csv: ${{inputs.census_csv}}"
    python hello-census.py --census-csv ${{inputs.census_csv}}
    code: src
    inputs:
    census_csv:
        type: uri_file 
        path: azureml://datastores/mydata/paths/census.csv
    environment: azureml:AzureML-sklearn-1.0-ubuntu20.04-py38-cpu@latest
    compute: azureml:cpu-cluster
    identity:
    type: user_identity
    

Führen Sie die folgenden Schritte aus, um den Datenzugriff mithilfe der Benutzeridentität für Schulungsaufträge auf Computeclustern aus dem Python SDK einzurichten:

  1. Gewähren des Datenzugriffs und Erstellen eines Datenspeichers, wie zuvor für CLI beschrieben.

  2. Übermitteln Sie einen Trainingsauftrag, bei dem der Identitätsparameter auf azure.ai.ml.UserIdentityConfiguration festgelegt ist. Diese Parametereinstellung ermöglicht dem Auftrag den Zugriff auf Daten im Auftrag des Benutzers, der den Auftrag übermittelt.

    from azure.ai.ml import command
    from azure.ai.ml.entities import Data, UriReference
    from azure.ai.ml import Input
    from azure.ai.ml.constants import AssetTypes
    from azure.ai.ml import UserIdentityConfiguration
    
    # Specify the data location
    my_job_inputs = {
        "input_data": Input(type=AssetTypes.URI_FILE, path="<path-to-my-data>")
    }
    
    # Define the job
    job = command(
        code="<my-local-code-location>", 
        command="python <my-script>.py --input_data ${{inputs.input_data}}",
        inputs=my_job_inputs,
        environment="AzureML-sklearn-0.24-ubuntu18.04-py37-cpu:9",
        compute="<my-compute-cluster-name>",
        identity= UserIdentityConfiguration() 
    )
    # submit the command
    returned_job = ml_client.jobs.create_or_update(job)
    

Wichtig

Wenn Sie einen Auftrag mit Authentifizierung unter Verwendung der Benutzeridentität übermitteln, schützt die Prüfsummenvalidierung die Code-Snapshots vor Manipulationen. Wenn Sie über vorhandene Pipelinekomponenten verfügen und diese mit Benutzeridentität zur Authentifizierung verwenden möchten, müssen Sie sie möglicherweise erneut hochladen. Andernfalls könnte der Auftrag während der Überprüfung der Prüfsumme fehlschlagen.

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 keine Daten außerhalb des Netzwerks kompromittiert wurden. Dieses Verhalten gilt auch für den auf Anmeldeinformationen basierenden Datenzugriff. Weitere Informationen finden Sie unter Verhindern der Datenexfiltration.

Wenn Ihr Speicherkonto über virtuelle Netzwerkeinstellungen verfügt, bestimmen diese Einstellungen, welcher Identitätstyp und welcher Berechtigungszugriff erforderlich ist. Beispielsweise bestimmen die Einstellungen für virtuelle Netzwerke für die Datenvorschau und das Datenprofil, welche Art von Identität zum Authentifizieren des Datenzugriffs verwendet wird.

  • In Szenarien, in denen nur bestimmte IPs und Subnetze auf den Speicher zugreifen dürfen, verwendet Azure Machine Learning die Arbeitsbereichs-MSI, um Datenvorschauen und Profile auszuführen.

  • Wenn Ihr Speicher ADLS Gen 2 oder Blob ist und über virtuelle Netzwerkeinstellungen verfügt, können Sie je nach den während der Erstellung definierten Datenspeichereinstellungen entweder Benutzeridentität oder Arbeitsbereichs-MSI verwenden.

  • Wenn die Einstellung für virtuelle Netzwerke auf Azure-Dienste in der Liste der vertrauenswürdigen Dienste für den Zugriff auf dieses Speicherkonto zugelassen eingestellt ist, wird Workspace MSI verwendet.

Szenario: Azure Container Registry ohne Administratorbenutzer

Wenn Sie den Administratorbenutzer für ACR deaktivieren, verwendet Azure Machine Learning eine verwaltete Identität, um Docker-Images zu erstellen und zu pullen. Es gibt zwei Workflows zum Konfigurieren von Azure Machine Learning für die Verwendung von ACR mit deaktiviertem Administratorbenutzer:

  • Gestatten Sie Azure Machine Learning die Erstellung der ACR-Instanz deaktivieren Sie anschließend den Administratorbenutzer.
  • Eine vorhandene ACR-Instanz bereitstellen, bei der der Administratorbenutzer bereits deaktiviert ist.

Azure Machine Learning mit automatisch erstellter ACR-Instanz

  1. Erstellen Sie einen neuen Azure Machine Learning-Arbeitsbereich.

  2. Führen Sie eine Aktion aus, die Azure Container Registry erfordert. Sehen Sie sich beispielsweise das Lernprogramm an: Trainieren Ihres ersten Modells.

  3. Rufen Sie den Namen der vom Cluster erstellten ACR-Instanz ab.

    GILT FÜR:Azure CLI ml-Erweiterung v2 (aktuell)

    az ml workspace show --name <my workspace name> \
    --resource-group <my resource group> \
    --subscription <my subscription id> \
    --query container_registry
    

    Dieser Befehl gibt einen Wert zurück, der in etwa wie folgt aussieht. Sie benötigen nur den letzten Teil des Texts, d. h. den Namen der ACR-Instanz:

    /subscriptions/<subscription id>/resourceGroups/<my resource group>/providers/MicrosoftContainerReggistry/registries/<ACR instance name>
    
  4. Aktualisieren Sie die ACR, um den Administratorbenutzer zu deaktivieren:

    az acr update --name <ACR instance name> --admin-enabled false
    

Nutzung der eigenen ACR

Wenn die Abonnementrichtlinie den ACR-Administratorbenutzer verbietet, erstellen Sie zuerst ACR ohne Administratorbenutzer, und ordnen Sie sie dem Arbeitsbereich zu. Erstellen Sie ACR aus Azure CLI , ohne das Argument festzulegen, oder über das --admin-enabled Azure-Portal, ohne administratorbenutzer zu aktivieren. Geben Sie beim Erstellen des Azure Machine Learning-Arbeitsbereichs die Azure-Ressourcen-ID des ACR an. Das folgende Beispiel veranschaulicht das Erstellen eines neuen Azure Machine Learning-Arbeitsbereichs unter Verwendung einer vorhandenen ACR-Instanz:

GILT FÜR:Azure CLI ml-Erweiterung v2 (aktuell)

az ml workspace create -n <workspace name> \
-g <workspace resource group> \
-l <region> \
--container-registry /subscriptions/<subscription id>/resourceGroups/<acr resource group>/providers/Microsoft.ContainerRegistry/registries/<acr name>

Tipp

Um den Wert für den Parameter --container-registry abzurufen, verwenden Sie den Befehl az acr show, um Informationen für Ihre ACR anzuzeigen. Das Feld id enthält die Ressourcen-ID für Ihre ACR.

Wenn Sie bereits über eine vorhandene ACR mit deaktiviertem Administratorbenutzer verfügen, können Sie diese auch an den Arbeitsbereich anfügen, indem Sie sie aktualisieren. Das folgende Beispiel veranschaulicht das Aktualisieren eines Azure Machine Learning-Arbeitsbereichs zur Verwendung einer vorhandenen ACR-Instanz:

GILT FÜR:Azure CLI ml-Erweiterung v2 (aktuell)

az ml workspace update --update-dependent-resources \
--name <workspace name> \
--resource-group <workspace resource group> \
--container-registry /subscriptions/<subscription id>/resourceGroups/<acr resource group>/providers/Microsoft.ContainerRegistry/registries/<acr name>

Erstellen von Compute mit verwalteter Identität für den Zugriff auf Docker-Images für das Training

Erstellen Sie für den Zugriff auf die ACR des Arbeitsbereichs einen Computecluster für maschinelles Lernen mit aktivierter, vom System zugewiesener verwalteter Identität. Sie können die Identität über das Azure-Portal oder Studio beim Erstellen von Compute oder über azure CLI mithilfe des folgenden Befehls aktivieren. Weitere Informationen finden Sie unter Verwenden der verwalteten Identität mit Compute-Clustern.

GILT FÜR:Azure CLI ml-Erweiterung v2 (aktuell)

az ml compute create --name cpu-cluster --type <cluster name>  --identity-type systemassigned

Einer verwalteten Identität erhält automatisch die Rolle „ACRPull“ für die ACR des Arbeitsbereichs, um das Pullen von Docker-Images für das Training zu ermöglichen.

Hinweis

Wenn Sie Compute zuerst erstellen, bevor der Arbeitsbereich ACR existiert, müssen Sie die ACRPull-Rolle manuell zuweisen.

Verwenden von Docker-Images für Rückschlüsse

Nachdem Sie ACR wie zuvor beschrieben ohne Administratorbenutzer konfiguriert haben, können Sie von Ihrem Azure Kubernetes-Dienst (AKS) auf Docker-Images für Inferenz zugreifen, ohne Administratorschlüssel zu benötigen. Wenn Sie AKS erstellen oder an den Arbeitsbereich anhängen, erhält der Dienstprinzipal des Clusters automatisch „ACRPull“-Zugriff auf die ACR des Arbeitsbereichs.

Hinweis

Wenn Sie Ihren eigenen AKS-Cluster bereitstellen, muss für den Cluster anstelle der verwalteten Identität ein Dienstprinzipal aktiviert sein.

Szenario: Verwenden einer privaten Azure Container Registry-Instanz

Standardmäßig verwendet Azure Machine Learning Docker-Basisimages aus einem öffentlichen Repository, das Microsoft verwaltet. Sie erstellt Ihre Schulungs- oder Rückschlussumgebung auf diesen Bildern. Weitere Informationen finden Sie unter Was sind ML-Umgebungen?

Um ein benutzerdefiniertes Basisimage intern für Ihr Unternehmen zu verwenden, verwenden Sie verwaltete Identitäten, um auf Ihr privates ACR zuzugreifen.

  1. Erstellen Sie einen Computerlern-Computecluster mit aktivierter vom System zugewiesener verwalteter Identität, wie zuvor beschrieben. Bestimmen Sie dann die Prinzipal-ID der verwalteten Identität.

    GILT FÜR:Azure CLI ml-Erweiterung v2 (aktuell)

    az ml compute show --name <cluster name> -n <workspace> -g <resource group>
    

    Optional können Sie den Computecluster aktualisieren, um eine vom Benutzer zugewiesene, verwaltete Identität zuzuweisen:

    GILT FÜR:Azure CLI ml-Erweiterung v2 (aktuell)

    az ml compute update --name <cluster name> --user-assigned-identities <my-identity-id>
    
  2. Um dem Computecluster das Abrufen der Basisimages zu ermöglichen, erteilen Sie die verwaltete Dienstidentität (für den Arbeitsbereich oder die Berechnung) ACRPull-Rolle für die private ACR

    GILT FÜR:Azure CLI ml-Erweiterung v2 (aktuell)

    az role assignment create --assignee <principal ID> \
    --role acrpull \
    --scope "/subscriptions/<subscription ID>/resourceGroups/<private ACR resource group>/providers/Microsoft.ContainerRegistry/registries/<private ACR name>"
    
  3. Erstellen Sie eine Umgebung, und geben Sie den Basisimage-Speicherort in der Umgebungsdatei im YAML-Format an. Die folgende YAML-Datei veranschaulicht, wie eine Umgebung definiert wird, die auf den privaten ACR verweist. Ersetzen Sie <acr-url> durch die URL Ihres privaten ACR, z. B. myregistry.azurecr.io. Ersetzen Sie <image-path> durch den Pfad zu Ihrem Bild in der privaten ACR, z. B. pytorch/pytorch:latest:

    $schema: https://azuremlschemas.azureedge.net/latest/environment.schema.json
    name: docker-image-example
    image: <acr-url>/<image-path>:latest
    description: Environment created from a Docker image.
    
  4. Der folgende Befehl veranschaulicht, wie Die Umgebung aus der YAML-Datei erstellt wird. Ersetzen Sie <yaml file> mit dem Pfad zu Ihrer YAML-Datei:

    az ml environment create --file <yaml file>
    

    Sie können jetzt die Umgebung in einem Trainingsauftrag verwenden.