Delen via


Beheerde identiteiten gebruiken met Azure Machine Learning CLI v1

VAN TOEPASSING OP: Python SDK azureml v1

VAN TOEPASSING OP: Azure CLI ml-extensie v1

Met beheerde identiteiten kunt u uw werkruimte configureren met de minimaal vereiste machtigingen voor toegang tot resources.

Wanneer u azure Machine Learning-werkruimte op betrouwbare wijze configureert, is het belangrijk om ervoor te zorgen dat verschillende services die aan de werkruimte zijn gekoppeld, het juiste toegangsniveau hebben. Tijdens de machine learning-werkstroom heeft de werkruimte bijvoorbeeld toegang nodig tot Azure Container Registry (ACR) voor Docker-installatiekopieën en opslagaccounts voor trainingsgegevens.

Bovendien bieden beheerde identiteiten gedetailleerde controle over machtigingen, bijvoorbeeld u kunt toegang verlenen of intrekken van specifieke rekenresources naar een specifieke ACR.

In dit artikel leert u hoe u beheerde identiteiten gebruikt voor het volgende:

  • Configureer en gebruik ACR voor uw Azure Machine Learning-werkruimte zonder dat u beheerderstoegang tot ACR hoeft in te schakelen.
  • Open een persoonlijke ACR buiten uw werkruimte om basisinstallatiekopieën op te halen voor training of deductie.
  • Maak een werkruimte met door de gebruiker toegewezen beheerde identiteit voor toegang tot gekoppelde resources.

Vereisten

Beheerde identiteiten configureren

In sommige situaties is het nodig om de toegang van beheerdersgebruikers tot Azure Container Registry niet toe te laten. De ACR kan bijvoorbeeld worden gedeeld en u moet beheerderstoegang door andere gebruikers niet toestaan. Of het maken van ACR waarvoor beheerdersgebruiker is ingeschakeld, is niet toegestaan door een beleid op abonnementsniveau.

Belangrijk

Wanneer u Azure Machine Learning gebruikt voor deductie in Azure Container Instance (ACI), is beheerderstoegang voor ACR vereist. Schakel dit niet uit als u van plan bent om modellen te implementeren in ACI voor de deductie.

Wanneer u ACR maakt zonder beheerderstoegang tot gebruikers in te schakelen, worden beheerde identiteiten gebruikt om toegang te krijgen tot de ACR om Docker-installatiekopieën te bouwen en op te halen.

U kunt uw eigen ACR meenemen met beheerdersgebruiker uitgeschakeld wanneer u de werkruimte maakt. U kunt ook Azure Machine Learning werkruimte-ACR laten maken en daarna de gebruiker met beheerdersrechten uitschakelen.

Bring your own ACR

Als de ACR-beheerdergebruiker niet is toegestaan op basis van abonnementsbeleid, moet u eerst ACR zonder beheerdersgebruiker maken en deze vervolgens koppelen aan de werkruimte. Als u een bestaande ACR met een gebruiker met beheerdersrechten hebt uitgeschakeld, kunt u deze koppelen aan de werkruimte.

Maak ACR vanuit Azure CLI zonder argument in te stellen --admin-enabled of vanuit De Azure-portal zonder beheerdersgebruiker in te schakelen. Wanneer u vervolgens een Azure Machine Learning-werkruimte maakt, geeft u de Azure-resource-id van de ACR op. In het volgende voorbeeld ziet u hoe u een nieuwe Azure Machine Learning-werkruimte maakt die gebruikmaakt van een bestaande ACR:

Tip

Als u de waarde voor de --container-registry parameter wilt ophalen, gebruikt u de opdracht az acr show om informatie voor uw ACR weer te geven. Het id veld bevat de resource-id voor uw 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>

Azure Machine Learning Service werkruimte laten maken met ACR

Als u uw eigen ACR niet gebruikt, maakt Azure Machine Learning Service er een voor u wanneer u een bewerking uitvoert die er een nodig heeft. Verzend bijvoorbeeld een trainingsuitvoering naar Machine Learning Compute, bouw een omgeving of implementeer een webservice-eindpunt. De ACR die door de werkruimte is gemaakt, heeft de gebruiker met beheerdersrechten ingeschakeld en u moet de gebruiker met beheerdersrechten handmatig uitschakelen.

  1. Een nieuwe werkruimte maken

    az ml workspace show -n <my workspace> -g <my resource group>
    
  2. Voer een actie uit waarvoor ACR is vereist. Bijvoorbeeld de zelfstudie over het trainen van een model.

  3. Haal de ACR-naam op die door het cluster is gemaakt:

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

    Met deze opdracht wordt een waarde geretourneerd die vergelijkbaar is met de volgende tekst. U wilt alleen het laatste gedeelte van de tekst. Dit is de naam van het ACR-exemplaar:

    /subscriptions/<subscription id>/resourceGroups/<my resource group>/providers/MicrosoftContainerReggistry/registries/<ACR instance name>
    
  4. Werk de ACR bij om de gebruiker met beheerdersrechten uit te schakelen:

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

Compute maken met beheerde identiteit voor toegang tot Docker-installatiekopieën voor training

Als u toegang wilt krijgen tot de werkruimte ACR, maakt u een machine learning-rekencluster met door het systeem toegewezen beheerde identiteit ingeschakeld. U kunt de identiteit inschakelen vanuit Azure Portal of Studio bij het maken van rekenkracht of vanuit Azure CLI met behulp van de onderstaande stappen. Zie het gebruik van beheerde identiteiten met rekenclusters voor meer informatie.

Wanneer u een rekencluster maakt met de AmlComputeProvisioningConfiguration, gebruikt u de identity_type parameter om het beheerde identiteitstype in te stellen.

Aan een beheerde identiteit wordt automatisch de ACRPull-rol in werkruimte ACR verleend om Docker-installatiekopieën voor training in te schakelen.

Notitie

Als u eerst compute maakt, moet u de ACR-rol handmatig toewijzen voordat de werkruimte ACRCR is gemaakt.

Toegang tot basisinstallatiekopieën van een persoonlijke ACR

Azure Machine Learning maakt standaard gebruik van Docker-basisinstallatiekopieën die afkomstig zijn van een openbare opslagplaats die wordt beheerd door Microsoft. Vervolgens wordt uw trainings- of deductieomgeving op deze afbeeldingen gebouwd. Zie Wat zijn ML-omgevingen? voor meer informatie.

Als u een aangepaste basisinstallatiekopieën intern voor uw onderneming wilt gebruiken, kunt u beheerde identiteiten gebruiken voor toegang tot uw persoonlijke ACR. Er zijn twee use cases:

  • Gebruik de basisinstallatiekopieën voor het trainen zoals u dat wilt.
  • Bouw een door Azure Machine Learning beheerde installatiekopieën met aangepaste installatiekopieën als basis.

Docker-basisinstallatiekopie naar machine learning-rekencluster ophalen voor training zoals is

Maak een machine learning-rekencluster met door het systeem toegewezen beheerde identiteit ingeschakeld, zoals eerder beschreven. Bepaal vervolgens de principal-id van de beheerde identiteit.

VAN TOEPASSING OP: Azure CLI ml-extensie v1

az ml computetarget amlcompute identity show --name <cluster name> -w <workspace> -g <resource group>

U kunt het rekencluster desgewenst bijwerken om een door de gebruiker toegewezen beheerde identiteit toe te wijzen:

VAN TOEPASSING OP: Azure CLI ml-extensie v1

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

Als u wilt toestaan dat het rekencluster de basisinstallatiekopieën ophaalt, verleent u de ACRPull-rol van de beheerde service-id op de persoonlijke 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>"

Geef ten slotte bij het indienen van een trainingsuitvoering de locatie van de basisinstallatiekopieën op in de omgevingsdefinitie.

VAN TOEPASSING OP: 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

Belangrijk

Om ervoor te zorgen dat de basisinstallatiekopie rechtstreeks naar de rekenresource wordt opgehaald, stelt u een user_managed_dependencies = True Dockerfile in en geeft u deze niet op. Anders probeert Azure Machine Learning Service een nieuwe Docker-installatiekopie te bouwen en te mislukken, omdat alleen het rekencluster toegang heeft om de basisinstallatiekopie op te halen uit ACR.

Een door Azure Machine Learning beheerde omgeving bouwen in de basisinstallatiekopie van een persoonlijke ACR voor training of deductie

VAN TOEPASSING OP: Azure CLI ml-extensie v1

In dit scenario bouwt Azure Machine Learning Service de trainings- of deductieomgeving op basis van een basisinstallatiekopie die u opgeeft vanuit een persoonlijke ACR. Omdat de build-taak van de installatiekopieën plaatsvindt in de werkruimte ACR met behulp van ACR Tasks, moet u meer stappen uitvoeren om toegang toe te staan.

  1. Maak door de gebruiker toegewezen beheerde identiteit en verdeel de identiteit ACRPull toegang tot de persoonlijke ACR.

  2. Verwijs de door het werkruimtesysteem toegewezen beheerde identiteit een rol van een beheerde identiteitsoperator voor de door de gebruiker toegewezen beheerde identiteit uit de vorige stap. Met deze rol kan de werkruimte de door de gebruiker toegewezen beheerde identiteit toewijzen aan ACR-taak voor het bouwen van de beheerde omgeving.

    1. Haal de principal-id op van de door het systeem toegewezen beheerde identiteit van de werkruimte:

      az ml workspace show -w <workspace name> -g <resource group> --query identityPrincipalId
      
    2. Verdeel de rol Managed Identity Operator:

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

      De resource-id van de door de gebruiker toegewezen beheerde identiteit is een Azure-resource-id van de door de gebruiker toegewezen identiteit, in de indeling /subscriptions/<subscription ID>/resourceGroups/<resource group>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<user-assigned managed identity name>.

  3. Geef de externe ACR- en client-id op van de door de gebruiker toegewezen beheerde identiteit in werkruimteverbindingen met behulp van Workspace.set_connection methode:

    VAN TOEPASSING OP: 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. Zodra de configuratie is voltooid, kunt u de basisinstallatiekopieën van privé-ACR gebruiken bij het bouwen van omgevingen voor training of deductie. In het volgende codefragment ziet u hoe u de basisinstallatiekopieën ACR en de naam van de installatiekopieën in een omgevingsdefinitie opgeeft:

    VAN TOEPASSING OP: 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"
    

    U kunt eventueel de resource-URL en client-id van de beheerde identiteit opgeven in de omgevingsdefinitie zelf met behulp van RegistryIdentity. Als u registeridentiteit expliciet gebruikt, worden alle eerder opgegeven werkruimteverbindingen overschreven:

    VAN TOEPASSING OP: 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"
    

Docker-installatiekopieën gebruiken voor deductie

Nadat u ACR hebt geconfigureerd zonder beheerdersgebruiker zoals eerder beschreven, hebt u toegang tot Docker-installatiekopieën voor deductie zonder beheerderssleutels van uw Azure Kubernetes-service (AKS). Wanneer u AKS maakt of koppelt aan de werkruimte, wordt de service-principal van het cluster automatisch ACRPull-toegang tot werkruimte ACR toegewezen.

Notitie

Als u uw eigen AKS-cluster gebruikt, moet voor het cluster een service-principal zijn ingeschakeld in plaats van een beheerde identiteit.

Werkruimte maken met door de gebruiker toegewezen beheerde identiteit

Wanneer u een werkruimte maakt, kunt u uw eigen door de gebruiker toegewezen beheerde identiteit meenemen die wordt gebruikt voor toegang tot de bijbehorende resources: ACR, KeyVault, Storage en App Insights.

Belangrijk

Wanneer u een werkruimte maakt met een door de gebruiker toegewezen beheerde identiteit, moet u de gekoppelde resources zelf maken en de beheerde identiteitrollen toewijzen aan deze resources. Gebruik de ARM-sjabloon voor roltoewijzing om de toewijzingen te maken.

Gebruik Azure CLI of Python SDK om de werkruimte te maken. Wanneer u de CLI gebruikt, geeft u de id op met behulp van de --primary-user-assigned-identity parameter. Wanneer u de SDK gebruikt, gebruikt u primary_user_assigned_identity. Hier volgen enkele voorbeelden van het gebruik van de Azure CLI en Python om een nieuwe werkruimte te maken met behulp van deze parameters:

Azure-CLI

VAN TOEPASSING OP: Azure CLI ml-extensie v1

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

Python

VAN TOEPASSING OP: 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")

U kunt ook een ARM-sjabloon gebruiken om een werkruimte te maken met een door de gebruiker toegewezen beheerde identiteit.

Voor een werkruimte met door de klant beheerde sleutels voor versleuteling kunt u een door de gebruiker toegewezen beheerde identiteit doorgeven om te verifiëren van opslag naar Key Vault. Gebruik argument user-assigned-identity-for-cmk-encryption (CLI) of user_assigned_identity_for_cmk_encryption (SDK) om de beheerde identiteit door te geven. Deze beheerde identiteit kan hetzelfde of verschillend zijn als de primaire door de gebruiker toegewezen beheerde identiteit van de werkruimte.

Volgende stappen