Auktorisering för batchslutpunkter

Batch-slutpunkter stöder Microsoft Entra-autentisering, eller aad_token. Det innebär att för att kunna anropa en batchslutpunkt måste användaren presentera en giltig Microsoft Entra-autentiseringstoken för batchslutpunktens URI. Auktorisering tillämpas på slutpunktsnivå. I följande artikel beskrivs hur du interagerar korrekt med batchslutpunkter och säkerhetskrav för den.

Så här fungerar auktorisering

Om du vill anropa en batchslutpunkt måste användaren visa en giltig Microsoft Entra-token som representerar ett säkerhetsobjekt. Det här huvudkontot kan vara användarens huvudnamn eller tjänstens huvudnamn. När en slutpunkt anropas skapas i vilket fall som helst ett batchdistributionsjobb under den identitet som är associerad med token. Identiteten behöver följande behörigheter för att kunna skapa ett jobb:

  • Läsa batchslutpunkter/distributioner.
  • Skapa jobb i slutpunkter/distribution av batchinferens.
  • Skapa experiment/körningar.
  • Läsa och skriva från/till datalager.
  • Visar en lista över datalagerhemligheter.

En detaljerad lista över RBAC-behörigheter finns i Konfigurera RBAC för batchslutpunktsanrop .

Viktigt!

Den identitet som används för att anropa en batchslutpunkt kanske inte används för att läsa underliggande data beroende på hur datalagret har konfigurerats. Mer information finns i Konfigurera beräkningskluster för dataåtkomst .

Så här kör du jobb med olika typer av autentiseringsuppgifter

I följande exempel visas olika sätt att starta batchdistributionsjobb med olika typer av autentiseringsuppgifter:

Viktigt!

När du arbetar på en privat länkaktiverad arbetsyta kan batchslutpunkter inte anropas från användargränssnittet i Azure Machine Learning-studio. Använd Azure Machine Learning CLI v2 i stället för att skapa jobb.

Förutsättningar

  • Det här exemplet förutsätter att du har en modell korrekt distribuerad som en batchslutpunkt. I synnerhet använder vi hjärttillståndsklassificeraren som skapats i självstudien Använda MLflow-modeller i batchdistributioner.

Köra jobb med användarens autentiseringsuppgifter

I det här fallet vill vi köra en batchslutpunkt med identiteten för den användare som för närvarande är inloggad. Följ de här stegen:

  1. Använd Azure CLI för att logga in med antingen interaktiv autentisering eller enhetskodautentisering:

    az login
    
  2. När du har autentiserats använder du följande kommando för att köra ett batchdistributionsjobb:

    az ml batch-endpoint invoke --name $ENDPOINT_NAME \
                                --input https://azuremlexampledata.blob.core.windows.net/data/heart-disease-uci
    

Köra jobb med tjänstens huvudnamn

I det här fallet vill vi köra en batchslutpunkt med hjälp av ett huvudnamn för tjänsten som redan har skapats i Microsoft Entra-ID. För att slutföra autentiseringen måste du skapa en hemlighet för att utföra autentiseringen. Följ de här stegen:

  1. Skapa en hemlighet som ska användas för autentisering enligt beskrivningen i Alternativ 3: Skapa en ny klienthemlighet.

  2. Om du vill autentisera med tjänstens huvudnamn använder du följande kommando. Mer information finns i Logga in med Azure CLI.

    az login --service-principal \
             --tenant <tenant> \
             -u <app-id> \
             -p <password-or-cert> 
    
  3. När du har autentiserats använder du följande kommando för att köra ett batchdistributionsjobb:

    az ml batch-endpoint invoke --name $ENDPOINT_NAME \
                                --input https://azuremlexampledata.blob.core.windows.net/data/heart-disease-uci/
    

Köra jobb med en hanterad identitet

Du kan använda hanterade identiteter för att anropa batchslutpunkter och distributioner. Observera att den här hanteringsidentiteten inte tillhör batchslutpunkten, men det är den identitet som används för att köra slutpunkten och därmed skapa ett batchjobb. Både användartilldelade och systemtilldelade identiteter kan användas i det här scenariot.

Du kan logga in med den hanterade identiteten på resurser som konfigurerats för hanterade identiteter för Azure-resurser. Du loggar in med resursidentiteten via flaggan --identity. Mer information finns i Logga in med Azure CLI.

az login --identity

När du har autentiserats använder du följande kommando för att köra ett batchdistributionsjobb:

az ml batch-endpoint invoke --name $ENDPOINT_NAME \
                            --input https://azuremlexampledata.blob.core.windows.net/data/heart-disease-uci

Konfigurera RBAC för batchslutpunkter som anropas

Batch-slutpunkter exponerar ett varaktigt API som konsumenter kan använda för att generera jobb. Anroparen begär rätt behörighet för att kunna generera dessa jobb. Du kan antingen använda en av de inbyggda säkerhetsrollerna eller skapa en anpassad roll för ändamålen.

För att kunna anropa en batchslutpunkt behöver du följande explicita åtgärder som beviljats till den identitet som används för att anropa slutpunkterna. Se Steg för att tilldela en Azure-roll för instruktioner för att tilldela dem.

"actions": [
    "Microsoft.MachineLearningServices/workspaces/read",
    "Microsoft.MachineLearningServices/workspaces/data/versions/write",
    "Microsoft.MachineLearningServices/workspaces/datasets/registered/read",
    "Microsoft.MachineLearningServices/workspaces/datasets/registered/write",
    "Microsoft.MachineLearningServices/workspaces/datasets/unregistered/read",
    "Microsoft.MachineLearningServices/workspaces/datasets/unregistered/write",
    "Microsoft.MachineLearningServices/workspaces/datastores/read",
    "Microsoft.MachineLearningServices/workspaces/datastores/write",
    "Microsoft.MachineLearningServices/workspaces/datastores/listsecrets/action",
    "Microsoft.MachineLearningServices/workspaces/listStorageAccountKeys/action",
    "Microsoft.MachineLearningServices/workspaces/batchEndpoints/read",
    "Microsoft.MachineLearningServices/workspaces/batchEndpoints/write",
    "Microsoft.MachineLearningServices/workspaces/batchEndpoints/deployments/read",
    "Microsoft.MachineLearningServices/workspaces/batchEndpoints/deployments/write",
    "Microsoft.MachineLearningServices/workspaces/batchEndpoints/deployments/jobs/write",
    "Microsoft.MachineLearningServices/workspaces/batchEndpoints/jobs/write",
    "Microsoft.MachineLearningServices/workspaces/computes/read",
    "Microsoft.MachineLearningServices/workspaces/computes/listKeys/action",
    "Microsoft.MachineLearningServices/workspaces/metadata/secrets/read",
    "Microsoft.MachineLearningServices/workspaces/metadata/snapshots/read",
    "Microsoft.MachineLearningServices/workspaces/metadata/artifacts/read",
    "Microsoft.MachineLearningServices/workspaces/metadata/artifacts/write",
    "Microsoft.MachineLearningServices/workspaces/experiments/read",
    "Microsoft.MachineLearningServices/workspaces/experiments/runs/submit/action",
    "Microsoft.MachineLearningServices/workspaces/experiments/runs/read",
    "Microsoft.MachineLearningServices/workspaces/experiments/runs/write",
    "Microsoft.MachineLearningServices/workspaces/metrics/resource/write",
    "Microsoft.MachineLearningServices/workspaces/modules/read",
    "Microsoft.MachineLearningServices/workspaces/models/read",
    "Microsoft.MachineLearningServices/workspaces/endpoints/pipelines/read",
    "Microsoft.MachineLearningServices/workspaces/endpoints/pipelines/write",
    "Microsoft.MachineLearningServices/workspaces/environments/read",
    "Microsoft.MachineLearningServices/workspaces/environments/write",
    "Microsoft.MachineLearningServices/workspaces/environments/build/action",
    "Microsoft.MachineLearningServices/workspaces/environments/readSecrets/action"
]

Konfigurera beräkningskluster för dataåtkomst

Batch-slutpunkter säkerställer att endast behöriga användare kan anropa batchdistributioner och generera jobb. Beroende på hur indata konfigureras kan dock andra autentiseringsuppgifter användas för att läsa underliggande data. Använd följande tabell för att förstå vilka autentiseringsuppgifter som används:

Datainmatningstyp Autentiseringsuppgifter i arkivet Autentiseringsuppgifter som används Åtkomst som beviljats av
Datalager Ja Autentiseringsuppgifter för datalagret på arbetsytan Åtkomstnyckel eller SAS
Datatillgång Ja Autentiseringsuppgifter för datalagret på arbetsytan Åtkomstnyckel eller SAS
Datalager Nej Identitet för jobbet + hanterad identitet för beräkningsklustret RBAC
Datatillgång Nej Identitet för jobbet + hanterad identitet för beräkningsklustret RBAC
Azure Blob Storage Gäller inte Identitet för jobbet + hanterad identitet för beräkningsklustret RBAC
Azure Data Lake Storage Gen1 Gäller inte Identitet för jobbet + hanterad identitet för beräkningsklustret POSIX
Azure Data Lake Storage Gen2 Gäller inte Identitet för jobbet + hanterad identitet för beräkningsklustret POSIX och RBAC

För de objekt i tabellen där identiteten för jobbet + den hanterade identiteten för beräkningsklustret visas används beräkningsklustrets hanterade identitet för montering och konfigurering av lagringskonton. Jobbets identitet används dock fortfarande för att läsa underliggande data så att du kan uppnå detaljerad åtkomstkontroll. Det innebär att för att kunna läsa data från lagringen måste den hanterade identiteten för beräkningsklustret där distributionen körs ha minst åtkomst till Lagringsblobdataläsaren till lagringskontot.

Följ dessa steg för att konfigurera beräkningsklustret för dataåtkomst:

  1. Gå till Azure Machine Learning-studio.

  2. Gå till Beräkning, sedan Beräkningskluster och välj det beräkningskluster som distributionen använder.

  3. Tilldela en hanterad identitet till beräkningsklustret:

    1. I avsnittet Hanterad identitet kontrollerar du om beräkningen har en tilldelad hanterad identitet. Om inte väljer du alternativet Redigera.

    2. Välj Tilldela en hanterad identitet och konfigurera den efter behov. Du kan använda en systemtilldelad hanterad identitet eller en användartilldelad hanterad identitet. Om du använder en systemtilldelad hanterad identitet namnges den som "[arbetsytenamn]/computes/[beräkningsklusternamn]".

    3. Spara ändringarna.

    Animation showing the steps to assign a managed identity to a cluster.

  4. Gå till Azure-portalen och gå till det associerade lagringskontot där data finns. Om dina dataindata är en datatillgång eller ett datalager letar du efter lagringskontot där dessa tillgångar placeras.

  5. Tilldela åtkomstnivå för Storage Blob Data Reader i lagringskontot:

    1. Gå till avsnittet Åtkomstkontroll (IAM).

    2. Välj fliken Rolltilldelning och klicka sedan på Lägg till>rolltilldelning.

    3. Leta efter rollen med namnet Storage Blob Data Reader, välj den och klicka på Nästa.

    4. Klicka på Välj medlemmar.

    5. Leta efter den hanterade identitet som du har skapat. Om du använder en systemtilldelad hanterad identitet namnges den som "[arbetsytenamn]/computes/[beräkningsklusternamn]".

    6. Lägg till kontot och slutför guiden.

    Animation showing the steps to assign the created managed identity to the storage account.

  6. Slutpunkten är redo att ta emot jobb och mata in data från det valda lagringskontot.

Nästa steg