Konfigurera autentisering mellan Azure Machine Learning och andra tjänster
GÄLLER FÖR:Azure CLI ml extension v2 (current)Python SDK azure-ai-ml v2 (aktuell)
Azure Machine Learning består av flera Azure-tjänster. Det finns flera sätt att autentisering kan ske mellan Azure Machine Learning och de tjänster som den förlitar sig på.
- Azure Machine Learning-arbetsytan använder en hanterad identitet för att kommunicera med andra tjänster. Som standard är detta en systemtilldelad hanterad identitet. Du kan också använda en användartilldelad hanterad identitet i stället.
- Azure Machine Learning använder Azure Container Registry (ACR) för att lagra Docker-avbildningar som används för att träna och distribuera modeller. Om du tillåter att Azure Machine Learning automatiskt skapar ACR aktiveras administratörskontot.
- Azure Machine Learning-beräkningsklustret använder en hanterad identitet för att hämta anslutningsinformation för datalager från Azure Key Vault och för att hämta Docker-avbildningar från ACR. Du kan också konfigurera identitetsbaserad åtkomst till datalager, som i stället använder beräkningsklustrets hanterade identitet.
- Dataåtkomst kan ske längs flera sökvägar beroende på datalagringstjänsten och din konfiguration. Autentisering till dataarkivet kan till exempel använda en kontonyckel, token, säkerhetsobjekt, hanterad identitet eller användaridentitet.
- Hanterade onlineslutpunkter kan använda en hanterad identitet för att komma åt Azure-resurser när de utför slutsatsdragning. Mer information finns i Åtkomst till Azure-resurser från en onlineslutpunkt.
Förutsättningar
Innan du följer stegen i den här artikeln kontrollerar du att du har följande förutsättningar:
En Azure Machine Learning-arbetsyta. Om du inte har någon använder du stegen i artikeln Snabbstart: Skapa arbetsyteresurser för att skapa en.
Azure CLI och
ml
tillägget eller Azure Machine Learning Python SDK v2:Information om hur du installerar Azure CLI och tillägget finns i Installera, konfigurera och använda CLI (v2).
Viktigt!
CLI-exemplen i den här artikeln förutsätter att du använder Bash-gränssnittet (eller det kompatibla). Till exempel från ett Linux-system eller Windows-undersystem för Linux.
Om du vill installera Python SDK v2 använder du följande kommando:
pip install azure-ai-ml azure-identity
Om du vill uppdatera en befintlig installation av SDK:et till den senaste versionen använder du följande kommando:
pip install --upgrade azure-ai-ml azure-identity
Mer information finns i Installera Python SDK v2 för Azure Machine Learning.
För att tilldela roller måste inloggningen för din Azure-prenumeration ha rollen Hanterad identitetsoperatör eller annan roll som beviljar nödvändiga åtgärder (till exempel Ägare).
Du måste vara bekant med att skapa och arbeta med hanterade identiteter.
Identitetstyper för arbetsyta
Azure Machine Learning-arbetsytan använder en hanterad identitet för att kommunicera med andra tjänster. Flera identitetstyper stöds för Azure Machine Learning.
Hanterad identitetstyp | Skapa rolltilldelning | Syfte |
---|---|---|
Systemtilldelad (SAI) | Hanteras av Microsoft | Livscykel som är kopplad till resursen. enskild resursanvändning. enkelt att komma igång |
Systemtilldelad+användartilldelad (SAI+UAI) | Hanteras av dig | Oberoende livscykel för användartilldelad identitet, användning av flera resurser, styr minst privilegierad åtkomst. Få åtkomst till data i träningsjobb. |
När en arbetsyta har skapats med SAI-identitetstyp kan den uppdateras till SAI+UAI, men inte tillbaka från SAI+UAI till SAI. Du kan tilldela flera användartilldelade identiteter till samma arbetsyta.
Azure Container Registry och identitetstyper
Den här tabellen visar stödmatrisen när du autentiserar till Azure Container Registry, beroende på autentiseringsmetoden och Azure Container Registrys konfiguration för offentlig nätverksåtkomst.
Autentiseringsmetod | Åtkomst till offentligt nätverk har inaktiverats |
Offentlig nätverksåtkomst i Azure Container Registry är aktiverad |
---|---|---|
Administratörsanvändare | ✓ | ✓ |
Systemtilldelad hanterad identitet för arbetsyta | ✓ | ✓ |
Användartilldelad hanterad identitet för arbetsyta med ACRPull-rollen tilldelad till identiteten |
✓ |
Användartilldelad hanterad identitet
Arbetsyta
Du kan lägga till en användartilldelad hanterad identitet när du skapar en Azure Machine Learning-arbetsyta från Azure Portal. Använd följande steg när du skapar arbetsytan:
- På sidan Grundläggande väljer du det Azure Storage-konto, Azure Container Registry och Azure Key Vault som du vill använda med arbetsytan.
- På sidan Identitet väljer du Användartilldelad identitet och sedan den hanterade identitet som ska användas.
Följande Azure RBAC-rolltilldelningar krävs på din användartilldelade hanterade identitet för din Azure Machine Learning-arbetsyta för att få åtkomst till data på de arbetsyteassocierade resurserna.
Resurs | Behörighet |
---|---|
Azure Machine Learning-arbetsyta | Deltagare |
Azure Storage | Deltagare (kontrollplan) + Storage Blob Data Contributor (dataplan, valfritt, för att aktivera förhandsversion av data i Azure Machine Learning-studio) |
Azure Key Vault (när du använder RBAC-behörighetsmodell) | Deltagare (kontrollplan) + Key Vault-administratör (dataplan) |
Azure Key Vault (när du använder behörighetsmodellen åtkomstprinciper) | Deltagare + eventuella behörigheter för åtkomstprinciper förutom rensningsåtgärder |
Azure Container Registry | Deltagare |
Azure Application Insights | Deltagare |
Om du vill skapa rolltilldelningar automatiskt på din användartilldelade hanterade identitet kan du använda den här ARM-mallen.
Dricks
För en arbetsyta med kundhanterade nycklar för kryptering kan du skicka in en användartilldelad hanterad identitet för att autentisera från lagring till Key Vault. Använd parametrarna user-assigned-identity-for-cmk-encryption
(CLI) eller user_assigned_identity_for_cmk_encryption
(SDK) för att skicka in den hanterade identiteten. Den här hanterade identiteten kan vara samma eller annorlunda som den primära arbetsytans användartilldelade hanterade identitet.
Om du vill skapa en arbetsyta med flera användartilldelade identiteter använder du någon av följande metoder:
GÄLLER FÖR: Azure CLI ml-tillägget v2 (aktuellt)
az ml workspace create -f workspace_creation_with_multiple_UAIs.yml --subscription <subscription ID> --resource-group <resource group name> --name <workspace name>
Om innehållet i workspace_creation_with_multiple_UAIs.yml är följande:
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>
Om du vill uppdatera användartilldelade identiteter för en arbetsyta, inklusive att lägga till en ny eller ta bort befintliga, använder du någon av följande metoder:
GÄLLER FÖR: Azure CLI ml-tillägget v2 (aktuellt)
az ml workspace update -f workspace_update_with_multiple_UAIs.yml --subscription <subscription ID> --resource-group <resource group name> --name <workspace name>
Om innehållet i workspace_update_with_multiple_UAIs.yml är följande:
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>
Dricks
Om du vill lägga till en ny UAI kan du ange det nya UAI-ID:t under avsnittet user_assigned_identities utöver befintliga UAIs krävs för att skicka alla befintliga UAI-ID:n.
Om du vill ta bort en eller flera befintliga UAIs kan du placera UAI-ID:erna som måste bevaras under avsnittet user_assigned_identities, resten av UAI-ID:na tas bort.
Lägg till en användartilldelad hanterad identitet till en arbetsyta utöver en systemtilldelad identitet
I vissa scenarier kan du behöva använda en användartilldelad hanterad identitet utöver standardidentiteten för systemtilldelade arbetsytor. Om du vill lägga till en användartilldelad hanterad identitet, utan att ändra den befintliga arbetsyteidentiteten, använder du följande steg:
Skapa en användartilldelad hanterad identitet. Spara ID:t för den hanterade identitet som du skapar.
Om du vill koppla den hanterade identiteten till din arbetsyta behöver du en YAML-fil som anger identiteten. Följande är ett exempel på YAML-filinnehållet.
<TENANT_ID>
Ersätt ,<RESOURCE_GROUP>
och<USER_MANAGED_ID>
med dina värden.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>': {}
Använd Azure CLI-kommandot
az ml workspace update
för att uppdatera din arbetsyta. Ange YAML-filen från föregående steg med hjälp av parametern--file
. I följande exempel visas hur det här kommandot ser ut:az ml workspace update --resource-group <RESOURCE_GROUP> --name <WORKSPACE_NAME> --file <YAML_FILE_NAME>.yaml
Beräkningskluster
Kommentar
Azure Machine Learning-beräkningskluster stöder endast en systemtilldelad identitet eller flera användartilldelade identiteter, inte båda samtidigt.
Standardhanterad identitet är den systemtilldelade hanterade identiteten eller den första användartilldelade hanterade identiteten.
Under en körning finns det två program med en identitet:
Systemet använder en identitet för att konfigurera användarens lagringsmonteringar, containerregister och datalager.
- I det här fallet använder systemet den standardhanterade identiteten.
Du använder en identitet för att komma åt resurser inifrån koden för ett skickat jobb:
- I det här fallet anger du den client_id som motsvarar den hanterade identitet som du vill använda för att hämta en autentiseringsuppgift.
- Du kan också hämta den användartilldelade identitetens klient-ID via DEFAULT_IDENTITY_CLIENT_ID miljövariabeln.
Om du till exempel vill hämta en token för ett datalager med den standardhanterade identiteten:
client_id = os.environ.get('DEFAULT_IDENTITY_CLIENT_ID') credential = ManagedIdentityCredential(client_id=client_id) token = credential.get_token('https://storage.azure.com/')
Om du vill konfigurera ett beräkningskluster med hanterad identitet använder du någon av följande metoder:
GÄLLER FÖR: Azure CLI ml-tillägget v2 (aktuellt)
az ml compute create -f create-cluster.yml
Om innehållet i create-cluster.yml är följande:
$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"
Som jämförelse är följande exempel från en YAML-fil som skapar ett kluster som använder en systemtilldelad hanterad identitet:
$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
Om du har ett befintligt beräkningskluster kan du ändra mellan användarhanterad och systemhanterad identitet. Följande exempel visar hur du ändrar konfigurationen:
Användartilldelad hanterad identitet
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"
Systemtilldelad hanterad identitet
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
Datalagring
När du skapar ett datalager som använder identitetsbaserad dataåtkomst används ditt Azure-konto (Microsoft Entra-token) för att bekräfta att du har behörighet att komma åt lagringstjänsten. I scenariot för identitetsbaserad dataåtkomst sparas inga autentiseringsuppgifter. Endast lagringskontoinformationen lagras i datalagringen.
Däremot finns datalager som använder anslutningsinformation för autentiseringsbaserad autentiseringscache , t.ex. din lagringskontonyckel eller SAS-token, i nyckelvalvet som är associerat med arbetsytan. Den här metoden har begränsningen att andra arbetsyteanvändare med tillräcklig behörighet kan hämta dessa autentiseringsuppgifter, vilket kan vara ett säkerhetsproblem för vissa organisationer.
Mer information om hur dataåtkomst autentiseras finns i artikeln Dataadministration . Information om hur du konfigurerar identitetsbaserad åtkomst till data finns i Skapa datalager.
Det finns två scenarier där du kan använda identitetsbaserad dataåtkomst i Azure Machine Learning. Dessa scenarier passar bra för identitetsbaserad åtkomst när du arbetar med konfidentiella data och behöver mer detaljerad dataåtkomsthantering:
- Åtkomst till lagringstjänster
- Träna maskininlärningsmodeller
Med identitetsbaserad åtkomst kan du använda rollbaserade åtkomstkontroller (RBAC) för att begränsa vilka identiteter, till exempel användare eller beräkningsresurser, som har åtkomst till data.
Åtkomst till lagringstjänster
Du kan ansluta till lagringstjänster via identitetsbaserad dataåtkomst med Azure Machine Learning-datalager.
När du använder identitetsbaserad dataåtkomst uppmanar Azure Machine Learning dig att ange din Microsoft Entra-token för dataåtkomstautentisering i stället för att behålla dina autentiseringsuppgifter i dataarkivet. Den här metoden möjliggör hantering av dataåtkomst på lagringsnivå och håller autentiseringsuppgifterna konfidentiella.
Samma beteende gäller när du arbetar med data interaktivt via en Jupyter Notebook på din lokala dator eller beräkningsinstans.
Kommentar
Autentiseringsuppgifter som lagras via autentiseringsbaserad autentisering omfattar prenumerations-ID: er, SAS-token (signatur för delad åtkomst) och information om lagringsåtkomstnyckel och tjänstens huvudnamn, till exempel klient-ID:t och klient-ID:t.
För att säkerställa att du på ett säkert sätt ansluter till din lagringstjänst i Azure kräver Azure Machine Learning att du har behörighet att komma åt motsvarande datalagring.
Varning
Åtkomst mellan klientorganisationer till lagringskonton stöds inte. Om åtkomst mellan klientorganisationer behövs för ditt scenario kontaktar du Azure Machine Learning Data Support-teamets alias för amldatasupport@microsoft.com att få hjälp med en anpassad kodlösning.
Identitetsbaserad dataåtkomst stöder endast anslutningar till följande lagringstjänster.
- Azure Blob Storage
- Azure Data Lake Storage Gen1
- Azure Data Lake Storage Gen2
För att få åtkomst till dessa lagringstjänster måste du minst ha åtkomst till lagringskontot för Blob Data Reader . Endast lagringskontoägare kan ändra åtkomstnivån via Azure Portal.
Få åtkomst till data för träningsjobb vid beräkning med hjälp av hanterad identitet
Vissa maskininlärningsscenarier omfattar arbete med privata data. I sådana fall kanske dataexperter inte har direkt åtkomst till data som Microsoft Entra-användare. I det här scenariot kan den hanterade identiteten för en beräkning användas för autentisering med dataåtkomst. I det här scenariot kan data endast nås från en beräkningsinstans eller ett datorinlärningskluster som kör ett träningsjobb. Med den här metoden ger administratören behörigheten för beräkningsinstansen eller beräkningsklustrets hanterade identitet Storage Blob Data Reader för lagringen. De enskilda dataexperterna behöver inte beviljas åtkomst.
Så här aktiverar du autentisering med beräkningshanterad identitet:
Skapa beräkning med hanterad identitet aktiverad. Se avsnittet beräkningskluster, eller för beräkningsinstansen, avsnittet Tilldela hanterad identitet.
Viktigt!
Om beräkningsinstansen också har konfigurerats för inaktiv avstängning stängs inte beräkningsinstansen av på grund av inaktivitet om inte den hanterade identiteten har deltagaråtkomst till Azure Machine Learning-arbetsytan. Mer information om hur du tilldelar behörigheter finns i Hantera åtkomst till Azure Machine Learning-arbetsytor.
Bevilja beräkningshanterad identitet minst rollen Storage Blob Data Reader på lagringskontot.
Skapa alla datalager med identitetsbaserad autentisering aktiverad. Se Skapa datalager.
Kommentar
Namnet på den skapade systemhanterade identiteten för beräkningsinstansen eller klustret kommer att vara i formatet /workspace-name/computes/compute-name i ditt Microsoft Entra-ID.
När den identitetsbaserade autentiseringen har aktiverats används den beräkningshanterade identiteten som standard vid åtkomst till data i dina träningsjobb. Du kan också autentisera med användaridentitet med hjälp av stegen som beskrivs i nästa avsnitt.
Information om hur du konfigurerar Azure RBAC för lagringen finns i rollbaserade åtkomstkontroller.
Få åtkomst till data för träningsjobb i beräkningskluster med hjälp av användaridentitet
GÄLLER FÖR: Azure CLI ml-tillägget v2 (aktuellt)
När du tränar på Azure Machine Learning-beräkningskluster kan du autentisera till lagring med din Microsoft Entra-token.
Med det här autentiseringsläget kan du:
- Konfigurera detaljerade behörigheter, där olika arbetsyteanvändare kan ha åtkomst till olika lagringskonton eller mappar i lagringskonton.
- Låt dataexperter återanvända befintliga behörigheter för lagringssystem.
- Granska lagringsåtkomsten eftersom lagringsloggarna visar vilka identiteter som användes för att komma åt data.
Viktigt!
Den här funktionen har följande begränsningar
- Funktionen stöds för experiment som skickas via Azure Machine Learning CLI och Python SDK V2, men inte via ML Studio.
- Användaridentitet och beräkningshanterad identitet kan inte användas för autentisering i samma jobb.
- För pipelinejobb rekommenderar vi att du anger användaridentitet på den enskilda stegnivå som ska köras på en beräkning i stället för på rotpipelinenivån. ( Identitetsinställningen stöds på både rot-pipeline- och stegnivåer, men inställningen för stegnivå har företräde om båda anges. För pipelines som innehåller pipelinekomponenter måste identiteten dock anges för enskilda steg som ska köras. Identiteten som anges på komponentnivån för rotpipelinen eller pipelinen fungerar inte. Därför föreslår vi att du anger identitet på den enskilda stegnivån för enkelhetens skull.)
Följande steg beskriver hur du konfigurerar dataåtkomst med användaridentitet för träningsjobb i beräkningskluster från CLI.
Ge användaridentiteten åtkomst till lagringsresurser. Ge till exempel StorageBlobReader åtkomst till det specifika lagringskonto som du vill använda eller ge ACL-baserad behörighet till specifika mappar eller filer i Azure Data Lake Gen 2-lagring.
Skapa ett Azure Machine Learning-datalager utan cachelagrade autentiseringsuppgifter för lagringskontot. Om ett datalager har cachelagrade autentiseringsuppgifter, till exempel lagringskontonyckel, används dessa autentiseringsuppgifter i stället för användaridentitet.
Skicka ett träningsjobb med egenskapsidentiteten inställd på typ: user_identity, enligt följande jobbspecifikation. Under träningsjobbet sker autentiseringen till lagring via identiteten för den användare som skickar jobbet.
Kommentar
Om identitetsegenskapen lämnas ospecificerad och datalagret inte har cachelagrade autentiseringsuppgifter blir beräkningshanterad identitet alternativet återställning.
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öljande steg beskriver hur du konfigurerar dataåtkomst med användaridentitet för träningsjobb i beräkningskluster från Python SDK.
Bevilja dataåtkomst och skapa datalager enligt beskrivningen ovan för CLI.
Skicka ett träningsjobb med identitetsparametern inställd på azure.ai.ml.UserIdentityConfiguration. Med den här parameterinställningen kan jobbet komma åt data åt användaren som skickar jobbet.
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)
Viktigt!
Under jobböverföring med autentisering med användaridentitet aktiverad skyddas kodögonblicksbilderna mot manipulering av kontrollsummaverifiering. Om du har befintliga pipelinekomponenter och tänker använda dem med autentisering med användaridentitet aktiverad kan du behöva ladda upp dem igen. Annars kan jobbet misslyckas under verifieringen av kontrollsumman.
Arbeta med virtuella nätverk
Som standard kan Azure Machine Learning inte kommunicera med ett lagringskonto som finns bakom en brandvägg eller i ett virtuellt nätverk.
Du kan konfigurera lagringskonton för att endast tillåta åtkomst inifrån specifika virtuella nätverk. Den här konfigurationen kräver extra steg för att säkerställa att data inte läcker ut utanför nätverket. Det här beteendet är detsamma för autentiseringsbaserad dataåtkomst. Mer information finns i Så här förhindrar du dataexfiltrering.
Om ditt lagringskonto har inställningar för virtuellt nätverk avgör det vilken identitetstyp och behörigheter som krävs. För dataförhandsgranskning och dataprofil avgör till exempel inställningarna för det virtuella nätverket vilken typ av identitet som används för att autentisera dataåtkomst.
I scenarier där endast vissa IP-adresser och undernät får åtkomst till lagringen använder Azure Machine Learning arbetsytans MSI för att utföra dataförhandsgranskningar och profiler.
Om din lagring är ADLS Gen 2 eller Blob och har inställningar för virtuellt nätverk kan kunderna använda antingen användaridentitet eller arbetsytans MSI beroende på de datalagerinställningar som definierades när de skapades.
Om inställningen för virtuellt nätverk är "Tillåt att Azure-tjänster i listan över betrodda tjänster får åtkomst till det här lagringskontot" används MSI för arbetsyta.
Scenario: Azure Container Registry utan administratörsanvändare
När du inaktiverar administratörsanvändaren för ACR använder Azure Machine Learning en hanterad identitet för att skapa och hämta Docker-avbildningar. Det finns två arbetsflöden när du konfigurerar Azure Machine Learning för att använda en ACR med administratörsanvändaren inaktiverad:
- Låt Azure Machine Learning skapa ACR-instansen och inaktivera sedan administratörsanvändaren efteråt.
- Ta med en befintlig ACR med administratörsanvändaren redan inaktiverad.
Azure Machine Learning med automatiskt skapad ACR-instans
Skapa en ny Azure Machine Learning-arbetsyta.
Utför en åtgärd som kräver Azure Container Registry. Till exempel Självstudie: Träna din första modell.
Hämta namnet på den ACR som skapats av klustret.
GÄLLER FÖR: Azure CLI ml-tillägget v2 (aktuellt)
az ml workspace show --name <my workspace name> \ --resource-group <my resource group> \ --subscription <my subscription id> \ --query container_registry
Det här kommandot returnerar ett värde som liknar följande text. Du vill bara ha den sista delen av texten, som är namnet på ACR-instansen:
/subscriptions/<subscription id>/resourceGroups/<my resource group>/providers/MicrosoftContainerReggistry/registries/<ACR instance name>
Uppdatera ACR för att inaktivera administratörsanvändaren:
az acr update --name <ACR instance name> --admin-enabled false
Ta med din egen ACR
Om ACR-administratörsanvändare inte tillåts av prenumerationsprincipen bör du först skapa ACR utan administratörsanvändare och sedan associera den med arbetsytan.
Skapa ACR från Azure CLI utan att ange --admin-enabled
argument eller från Azure Portal utan att aktivera administratörsanvändare. När du sedan skapar En Azure Machine Learning-arbetsyta anger du Azure-resurs-ID för ACR. I följande exempel visas hur du skapar en ny Azure Machine Learning-arbetsyta som använder en befintlig ACR:
GÄLLER FÖR: Azure CLI ml-tillägget v2 (aktuellt)
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>
Dricks
Om du vill hämta värdet för parametern --container-registry
använder du kommandot az acr show för att visa information för din ACR. Fältet id
innehåller resurs-ID:t för din ACR.
Om du redan har en befintlig ACR med administratörsanvändaren inaktiverad kan du också koppla den till arbetsytan genom att uppdatera den. I följande exempel visas hur du uppdaterar en Azure Machine Learning-arbetsyta för att använda en befintlig ACR:
GÄLLER FÖR: Azure CLI ml-tillägget v2 (aktuellt)
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>
Skapa beräkning med hanterad identitet för att få åtkomst till Docker-avbildningar för träning
Om du vill komma åt arbetsytans ACR skapar du beräkningskluster för maskininlärning med systemtilldelad hanterad identitet aktiverad. Du kan aktivera identiteten från Azure Portal eller Studio när du skapar beräkning eller från Azure CLI med hjälp av nedanstående. Mer information finns i använda hanterad identitet med beräkningskluster.
GÄLLER FÖR: Azure CLI ml-tillägget v2 (aktuellt)
az ml compute create --name cpu-cluster --type <cluster name> --identity-type systemassigned
En hanterad identitet beviljas automatiskt ACRPull-roll på arbetsytans ACR för att aktivera hämtar Docker-avbildningar för träning.
Kommentar
Om du skapar beräkning först, innan arbetsytans ACR har skapats, måste du tilldela ACRPull-rollen manuellt.
Använda Docker-avbildningar för slutsatsdragning
När du har konfigurerat ACR utan administratörsanvändare enligt beskrivningen tidigare kan du komma åt Docker-avbildningar för slutsatsdragning utan administratörsnycklar från din Azure Kubernetes-tjänst (AKS). När du skapar eller kopplar AKS till arbetsytan tilldelas klustrets tjänsthuvudnamn automatiskt ACRPull-åtkomst till arbetsytanS ACR.
Kommentar
Om du tar med ditt eget AKS-kluster måste klustret ha tjänstens huvudnamn aktiverat i stället för hanterad identitet.
Scenario: Använda ett privat Azure Container Registry
Som standard använder Azure Machine Learning Docker-basavbildningar som kommer från en offentlig lagringsplats som hanteras av Microsoft. Den skapar sedan din tränings- eller slutsatsdragningsmiljö på dessa avbildningar. Mer information finns i Vad är ML-miljöer?.
Om du vill använda en anpassad basavbildning som är intern för företaget kan du använda hanterade identiteter för att komma åt din privata ACR. Det finns två användningsfall:
- Använd basavbildningen för träning som den är.
- Skapa en hanterad Azure Machine Learning-avbildning med en anpassad avbildning som bas.
Hämta Docker-basavbildningen till datorinlärningsberäkningsklustret för träning som är
Skapa beräkningskluster för maskininlärning med systemtilldelad hanterad identitet aktiverad enligt beskrivningen tidigare. Bestäm sedan huvud-ID:t för den hanterade identiteten.
GÄLLER FÖR: Azure CLI ml-tillägget v2 (aktuellt)
az ml compute show --name <cluster name> -n <workspace> -g <resource group>
Du kan också uppdatera beräkningsklustret för att tilldela en användartilldelad hanterad identitet:
GÄLLER FÖR: Azure CLI ml-tillägget v2 (aktuellt)
az ml compute update --name <cluster name> --user-assigned-identities <my-identity-id>
Om du vill tillåta att beräkningsklustret hämtar basavbildningarna beviljar du den hanterade tjänstidentiteten ACRPull-rollen på den privata ACR
GÄLLER FÖR: Azure CLI ml-tillägget v2 (aktuellt)
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>"
Skapa slutligen en miljö och ange basavbildningsplatsen i yaml-miljöns fil.
GÄLLER FÖR: Azure CLI ml-tillägget v2 (aktuellt)
$schema: https://azuremlschemas.azureedge.net/latest/environment.schema.json
name: docker-image-example
image: pytorch/pytorch:latest
description: Environment created from a Docker image.
az ml environment create --file <yaml file>
Nu kan du använda miljön i ett träningsjobb.
Skapa en hanterad Azure Machine Learning-miljö till en basavbildning från en privat ACR för träning eller slutsatsdragning
Kommentar
För närvarande stöds inte anslutning till en privat ACR med användartilldelad hanterad identitet. Administratörsnyckeln är den enda autentiseringstyp som stöds för privat ACR.
Nästa steg
- Läs mer om företagssäkerhet i Azure Machine Learning
- Läs mer om dataadministration
- Lär dig mer om hanterade identiteter i beräkningskluster.