Freigeben über


Verwenden von verwalteten Identitäten mit Azure Machine Learning CLI v1

GILT FÜR:Python SDK azureml v1

GILT FÜR:Azure CLI ML-Erweiterung v1

Verwaltete Identitäten gestatten es Ihnen, Ihren Arbeitsbereich mit den minimal erforderlichen Berechtigungen für den Zugriff auf Ressourcen zu konfigurieren.

Bei der vertrauenswürdigen Konfiguration des Azure Machine Learning-Arbeitsbereichs ist es wichtig, sicherzustellen, dass die verschiedenen Dienste, die mit dem Arbeitsbereich verbunden sind, die richtige Zugriffsebene aufweisen. Der Arbeitsbereich benötigt z. B. während des Machine Learning-Workflows Zugriff auf Azure Container Registry (ACR) für Docker-Images und Speicherkonten für Trainingsdaten.

Darüber hinaus ermöglichen verwaltete Identitäten eine differenzierte Berechtigungssteuerung. Sie können z. B. bestimmten Computeressourcen Zugriff auf eine bestimmte ACR gewähren oder diesen Zugriff widerrufen.

In diesem Artikel erfahren Sie, wie Sie verwaltete Identitäten für Folgendes verwenden:

  • Konfigurieren und Verwenden von ACR für Ihren Azure Machine Learning-Arbeitsbereich, ohne dass Sie den Zugriff für Administratorbenutzer für ACR aktivieren müssen.
  • Zugreifen auf eine private ACR außerhalb Ihres Arbeitsbereichs, um Basisimages für Training oder Rückschlüsse zu pullen.
  • Erstellen eines Arbeitsbereichs mit einer vom Benutzer zugewiesenen verwalteten Identität für den Zugriff auf zugeordnete Ressourcen.

Voraussetzungen

Konfigurieren von verwalteten Identitäten

In einigen Situationen ist es notwendig, Administratorbenutzern den Zugriff auf Azure Container Registry zu verweigern. Beispielsweise kann die ACR freigegeben werden, und Sie müssen den Administratorzugriff für andere Benutzer sperren. Oder das Erstellen der ACR mit aktiviertem Administratorbenutzer wird durch eine Richtlinie für die Abonnementebene untersagt.

Wichtig

Wenn Azure Machine Learning für Rückschlüsse auf Azure Container Instances (ACI) verwendet wird, ist der Administratorbenutzerzugriff auf ACR erforderlich. Deaktivieren Sie ihn nicht, wenn Sie vorhaben, Modelle zum Rückschließen für ACI bereitzustellen.

Wenn Sie ACR erstellen, ohne den Administratorbenutzerzugriff zu aktivieren, werden verwaltete Identitäten für den Zugriff auf die ACR verwendet, um Docker-Images zu erstellen und zu pullen.

Sie können Ihre eigene ACR mit deaktiviertem Administratorbenutzer bereitstellen, wenn Sie den Arbeitsbereich erstellen. Alternativ können Sie Azure Machine Learning die ACR für den Arbeitsbereich erstellen lassen und anschließend den Administratorbenutzer deaktivieren.

Nutzung der eigenen ACR

Wenn der ACR-Administratorbenutzer durch die Abonnementrichtlinie nicht zugelassen ist, sollten Sie zuerst ACR ohne Administratorbenutzer erstellen und es dann dem Arbeitsbereich zuordnen. Wenn Sie über eine vorhandene ACR mit deaktiviertem Administratorbenutzer verfügen, können Sie diese auch an den Arbeitsbereich anfügen.

Erstellen Sie ACR über die Azure CLI, ohne das Argument --admin-enabled festzulegen, oder über das Azure-Portal, ohne den Administratorbenutzer zu aktivieren. Geben Sie dann beim Erstellen des Azure Machine Learning-Arbeitsbereichs die Azure-Ressourcen-ID der ACR an. Das folgende Beispiel veranschaulicht das Erstellen eines neuen Azure Machine Learning-Arbeitsbereichs unter Verwendung einer vorhandenen ACR-Instanz:

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.

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

Erstellen der ACR des Arbeitsbereichs durch den Azure Machine Learning Service

Wenn Sie keine eigene ACR bereitstellen, wird der Azure Machine Learning Service eine ACR für Sie erstellen, wenn Sie einen Vorgang durchführen, der eine benötigt. Übermitteln Sie z. B. eine Trainingsausführung an Machine Learning Compute, erstellen Sie eine Umgebung oder stellen Sie einen Webdienstendpunkt bereit. Für die vom Arbeitsbereich erstellte ACR ist der Administratorbenutzer aktiviert, und Sie müssen den Administratorbenutzer manuell deaktivieren.

  1. Erstellen eines neuen Arbeitsbereichs

    az ml workspace show -n <my workspace> -g <my resource group>
    
  2. Führen Sie eine Aktion aus, die ACR erfordert. Beispiel: Tutorial zum Trainieren eines Modells.

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

    az ml workspace show -w <my workspace> \
    -g <my resource group>
    --query containerRegistry
    

    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
    

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 beim Erstellen der Compute-Instanz über das Azure-Portal oder per Studio aktivieren oder die Azure CLI verwenden, wie im Anschluss gezeigt. Weitere Informationen finden Sie unter Verwenden der verwalteten Identität mit Compute-Clustern.

Wenn Sie einen Computecluster mit AmlComputeProvisioningConfiguration erstellen, legen Sie den verwalteten Identitätstyp mit dem Parameter identity_type fest.

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

Hinweis

Wenn Sie zuerst den Compute erstellen, bevor die ACR des Arbeitsbereichs erstellt wurde, müssen Sie die Rolle „ACRPull“ manuell zuweisen.

Zugreifen auf Basisimages von einer privaten ACR

Azure Machine Learning verwendet standardmäßig Docker-Basisimages, die aus einem von Microsoft verwalteten öffentlichen Repository stammen. Anschließend wird Ihre Trainings- oder Rückschlussumgebung auf diesen Images erstellt. Weitere Informationen finden Sie unter Was sind ML-Umgebungen?

Um ein benutzerdefiniertes Basisimage intern in Ihrem Unternehmen zu verwenden, können Sie verwaltete Identitäten verwenden, um auf Ihre private ACR zuzugreifen. Es gibt zwei Anwendungsfälle:

  • Verwenden Sie das Basisimage für das Training wie besehen.
  • Erstellen Sie ein von Azure Machine Learning verwaltetes Image mit einem benutzerdefinierten Image als Basis.

Pullen Sie das Docker-Basisimage auf den Computecluster für maschinelles Lernen für das Training wie besehen.

Erstellen Sie einen Computecluster für maschinelles Lernen 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 v1

az ml computetarget amlcompute identity show --name <cluster name> -w <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 v1

az ml computetarget amlcompute identity assign --name <cluster name> \
-w $mlws -g $mlrg --identities <my-identity-id>

Damit der Computecluster die Basisimages pullen kann, gewähren Sie der verwalteten Dienstidentität die Rolle „ACRPull“ für die private ACR.

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>"

Wenn Sie schließlich eine Trainingsausführung übermitteln, geben Sie die Position des Basisimages in der Umgebungsdefinition an.

GILT FÜR:Python SDK azureml v1

from azureml.core import Environment
env = Environment(name="private-acr")
env.docker.base_image = "<ACR name>.azurecr.io/<base image repository>/<base image version>"
env.python.user_managed_dependencies = True

Wichtig

Um sicherzustellen, dass das Basisimage direkt auf die Computeressource gepullt wird, legen Sie user_managed_dependencies = True fest, und geben Sie keine Dockerfile an. Andernfalls versucht Azure Machine Learning Service, ein neues Docker-Image zu erstellen und scheitert, da nur der Computecluster Zugriff hat, um das Basisimage aus der ACR zu pullen.

Erstellen einer von Azure Machine Learning verwalteten Umgebung in das Basisimage von der privaten ACR für Training oder Rückschluss

GILT FÜR:Azure CLI ML-Erweiterung v1

In diesem Szenario erstellt Azure Machine Learning Service die Trainings- oder Rückschlussumgebung auf einem Basisimage, das Sie von einer privaten ACR zur Verfügung stellen. Da die Imageerstellungsaufgabe mithilfe von ACR-Aufgaben in der ACR des Arbeitsbereichs erfolgt, müssen Sie weitere Schritte durchführen, um den Zugriff zu ermöglichen.

  1. Erstellen Sie eine benutzerseitig zugewiesene verwaltete Identität, und erteilen Sie der Identität den ACRPull-Zugriff auf die private ACR.

  2. Gewähren Sie der systemseitig zugewiesenen verwalteten Identität des Arbeitsbereichs die Rolle „Operator für verwaltete Identität“ für die benutzerseitig zugewiesene verwaltete Identität aus dem vorherigen Schritt. Diese Rolle ermöglicht es dem Arbeitsbereich, die benutzerseitig zugewiesene verwaltete Identität der ACR-Aufgabe zum Erstellen der verwalteten Umgebung zuzuweisen.

    1. Abrufen der Prinzipal-ID der systemseitig zugewiesenen verwalteten Identität des Arbeitsbereichs:

      az ml workspace show -w <workspace name> -g <resource group> --query identityPrincipalId
      
    2. Erteilen Sie die Rolle des Operators für verwaltete Identität:

      az role assignment create --assignee <principal ID> --role managedidentityoperator --scope <user-assigned managed identity resource ID>
      

      Die benutzerseitig zugewiesene verwaltete Identitätsressourcen-ID ist die Azure-Ressourcen-ID der zugewiesenen Identität des Benutzers im Format /subscriptions/<subscription ID>/resourceGroups/<resource group>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<user-assigned managed identity name>.

  3. Geben Sie die externe ACR- und Client-ID der benutzerseitig zugewiesenen verwalteten Identität in Arbeitsbereichsverbindungen mithilfe der Methode Workspace.set_connection an:

    GILT FÜR:Python SDK azureml v1

    workspace.set_connection(
        name="privateAcr", 
        category="ACR", 
        target = "<acr url>", 
        authType = "RegistryConnection", 
        value={"ResourceId": "<user-assigned managed identity resource id>", "ClientId": "<user-assigned managed identity client ID>"})
    
  4. Nachdem die Konfiguration abgeschlossen ist, können Sie die Basisimages aus der privaten ACR beim Erstellen von Umgebungen für Training oder Rückschlüsse verwenden. Der folgende Codeausschnitt zeigt, wie die Basisimage-ACR und der Imagename in einer Umgebungsdefinition angegeben werden können:

    GILT FÜR:Python SDK azureml v1

    from azureml.core import Environment
    
    env = Environment(name="my-env")
    env.docker.base_image = "<acr url>/my-repo/my-image:latest"
    

    Optional können Sie die URL der verwalteten Identitätsressource und die Client-ID in der Umgebungsdefinition selbst angeben, indem Sie RegistryIdentity verwenden. Wenn Sie die Registrierungsidentität explizit verwenden, überschreibt sie alle zuvor angegebenen Arbeitsbereichsverbindungen:

    GILT FÜR:Python SDK azureml v1

    from azureml.core.container_registry import RegistryIdentity
    
    identity = RegistryIdentity()
    identity.resource_id= "<user-assigned managed identity resource ID>"
    identity.client_id="<user-assigned managed identity client ID>"
    env.docker.base_image_registry.registry_identity=identity
    env.docker.base_image = "my-acr.azurecr.io/my-repo/my-image:latest"
    

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

Nachdem Sie ACR ohne Administratorbenutzer (wie oben beschrieben) konfiguriert haben, können Sie ohne Administratorschlüssel von Ihrem Azure Kubernetes-Dienst (AKS) aus auf Docker-Images für Rückschlüsse zugreifen. Wenn Sie AKS erstellen oder an den Arbeitsbereich anhängen, wird dem Dienstprinzipal des Clusters automatisch „ACRPull“-Zugriff auf die ACR des Arbeitsbereichs zugewiesen.

Hinweis

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

Erstellen eines Arbeitsbereichs mit benutzerseitig zugewiesene verwalteter Identität

Beim Erstellen eines Arbeitsbereichs können Sie eine eigene benutzerseitig zugewiesene verwaltete Identität nutzen, die für den Zugriff auf die zugehörigen Ressourcen verwendet werden soll: ACR, KeyVault, Storage und App Insights.

Wichtig

Beim Erstellen des Arbeitsbereichs mit der benutzerseitig zugewiesenen verwalteten Identität müssen Sie die zugeordneten Ressourcen selbst erstellen und der verwalteten Identität entsprechende Rollen für diese Ressourcen gewähren. Verwenden Sie die ARM-Vorlage für die Rollenzuweisung, um die Zuweisungen vorzunehmen.

Verwenden Sie die Azure CLI oder das Python SDK zum Erstellen des Arbeitsbereichs. Wenn Sie die CLI verwenden, geben Sie die ID mithilfe des Parameters --primary-user-assigned-identity an. Verwenden Sie primary_user_assigned_identity, wenn Sie das SDK verwenden. Im Folgenden finden Sie Beispiele für die Verwendung der Azure CLI und von Python, um mithilfe dieser Parameter einen neuen Arbeitsbereich zu erstellen:

Azure-Befehlszeilenschnittstelle

GILT FÜR:Azure CLI ML-Erweiterung v1

az ml workspace create -w <workspace name> -g <resource group> --primary-user-assigned-identity <managed identity ARM ID>

Python

GILT FÜR:Python SDK azureml v1

from azureml.core import Workspace

ws = Workspace.create(name="workspace name", 
    subscription_id="subscription id", 
    resource_group="resource group name",
    primary_user_assigned_identity="managed identity ARM ID")

Sie können auch eine ARM-Vorlage verwenden, um einen Arbeitsbereich mit einer benutzerseitig zugewiesenen verwalteten Identität zu erstellen.

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 das Argument 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.

Nächste Schritte