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
Een Azure Machine Learning-werkruimte. Zie Werkruimteresources maken voor meer informatie.
De Azure CLI-extensie voor Machine Learning Service
Belangrijk
Sommige Azure CLI-opdrachten in dit artikel gebruiken de
azure-cli-ml
extensie (of v1) voor Azure Machine Learning. Ondersteuning voor de v1-extensie eindigt op 30 september 2025. U kunt de v1-extensie tot die datum installeren en gebruiken.U wordt aangeraden vóór 30 september 2025 over te stappen op de
ml
extensie of v2. Zie de Azure Machine Learning CLI-extensie en Python SDK v2 voor meer informatie over de v2-extensie.Als u rollen wilt toewijzen, moet de aanmelding voor uw Azure-abonnement de rol Managed Identity Operator hebben of een andere rol die de vereiste acties (zoals Eigenaar) verleent.
U moet bekend zijn met het maken en werken met beheerde identiteiten.
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.
Een nieuwe werkruimte maken
az ml workspace show -n <my workspace> -g <my resource group>
Voer een actie uit waarvoor ACR is vereist. Bijvoorbeeld de zelfstudie over het trainen van een model.
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>
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.
Maak door de gebruiker toegewezen beheerde identiteit en verdeel de identiteit ACRPull toegang tot de persoonlijke ACR.
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.
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
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>
.
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>"})
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
- Meer informatie over bedrijfsbeveiliging in Azure Machine Learning
- Meer informatie over op identiteit gebaseerde gegevenstoegang
- Meer informatie over beheerde identiteiten in het rekencluster.