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:

Azure Container Registry och identitetstyper

I följande tabell visas stödmatrisen när du autentiserar till Azure Container Registry, beroende på autentiseringsmetoden och Azure Container Registryskonfiguration 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-portalen. Använd följande steg när du skapar arbetsytan:

  1. 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.
  2. 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 extension v2 (aktuell)

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 extension v2 (aktuell)

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.
Så här uppdaterar du identitetstypen från SAI till UAI|SAI kan du ändra typ från "user_assigned" till "system_assigned, user_assigned".

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:

  1. 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.
  2. 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 extension v2 (aktuell)

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-portalen.

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:

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 extension v2 (aktuell)

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.

  1. 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.

  2. 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.

  3. 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.

  1. Bevilja dataåtkomst och skapa datalager enligt beskrivningen ovan för CLI.

  2. 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

  1. Skapa en ny Azure Machine Learning-arbetsyta.

  2. Utför en åtgärd som kräver Azure Container Registry. Till exempel Självstudie: Träna din första modell.

  3. Hämta namnet på den ACR som skapats av klustret.

    GÄLLER FÖR:Azure CLI ml extension v2 (aktuell)

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

    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>
    
  4. 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. Om du har en befintlig ACR med administratörsanvändaren inaktiverad kan du också koppla den till arbetsytan.

Skapa ACR från Azure CLI utan att ange --admin-enabled argument eller från Azure-portalen 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:

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.

GÄLLER FÖR:Azure CLI ml extension v2 (aktuell)

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>

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-portalen 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 extension v2 (aktuell)

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 extension v2 (aktuell)

az ml compute show --name <cluster name> -w <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 extension v2 (aktuell)

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

Skapa slutligen en miljö och ange basavbildningsplatsen i yaml-miljöns fil.

GÄLLER FÖR:Azure CLI ml extension v2 (aktuell)

$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

GÄLLER FÖR:Azure CLI ml extension v2 (aktuell)

I det här scenariot bygger Azure Machine Learning-tjänsten tränings- eller slutsatsdragningsmiljön ovanpå en basavbildning som du tillhandahåller från en privat ACR. Eftersom avbildningsgenereringsaktiviteten sker på arbetsytans ACR med hjälp av ACR-uppgifter måste du utföra fler steg för att tillåta åtkomst.

  1. Skapa användartilldelad hanterad identitet och ge identiteten ACRPull åtkomst till den privata ACR.

  2. Ge arbetsytans hanterade identitet en hanterad identitetsoperatorroll för den användartilldelade hanterade identiteten från föregående steg. Med den här rollen kan arbetsytan tilldela den användartilldelade hanterade identiteten till ACR Task för att skapa den hanterade miljön.

    1. Hämta huvud-ID:t för arbetsytans systemtilldelade hanterade identitet:

      GÄLLER FÖR:Azure CLI ml extension v2 (aktuell)

      az ml workspace show -w <workspace name> -g <resource group> --query identityPrincipalId
      
    2. Bevilja rollen Hanterad identitetsoperator:

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

      Resurs-ID för användartilldelade hanterade identiteter är Azure-resurs-ID för den användartilldelade identiteten i formatet /subscriptions/<subscription ID>/resourceGroups/<resource group>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<user-assigned managed identity name>.

  3. Ange det externa ACR- och klient-ID:t för den användartilldelade hanterade identiteten i arbetsyteanslutningar med hjälp az ml connection av kommandot . Det här kommandot accepterar en YAML-fil som innehåller information om anslutningen. I följande exempel visas formatet för att ange en hanterad identitet. client_id Ersätt värdena och resource_id med värdena för din hanterade identitet:

    GÄLLER FÖR:Azure CLI ml extension v2 (aktuell)

    name: test_ws_conn_cr_managed
    type: container_registry
    target: https://test-feed.com
    credentials:
      type: managed_identity
      client_id: client_id
      resource_id: resource_id
    

    Följande kommando visar hur du använder YAML-filen för att skapa en anslutning till din arbetsyta. Ersätt <yaml file>, <workspace name>och <resource group> med värdena för konfigurationen:

    az ml connection create --file <yml file> --resource-group <resource group> --workspace-name <workspace>
    
  4. När konfigurationen är klar kan du använda basavbildningarna från privata ACR när du skapar miljöer för träning eller slutsatsdragning. Följande kodfragment visar hur du anger basavbildningens ACR och bildnamn i en miljödefinition:

    GÄLLER FÖR: Python SDK azure-ai-ml v2 (aktuell)

    $schema: https://azuremlschemas.azureedge.net/latest/environment.schema.json
    name: private-acr-example
    image: <acr url>/pytorch/pytorch:latest
    description: Environment created from private ACR.
    

Nästa steg