Sdílet prostřednictvím


Ověřování klientů pro online koncové body

PLATÍ PRO:Rozšíření Azure CLI ml v2 (aktuální)Python SDK azure-ai-ml v2 (aktuální)

Tento článek popisuje, jak ověřovat klienty za účelem provádění operací roviny řízení a roviny dat na online koncových bodech.

Operace řídicí roviny řídí koncový bod a mění ho. Operace řídicí roviny zahrnují operace vytvoření, čtení, aktualizace a odstranění (CRUD) u online koncových bodů a online nasazení.

Operace roviny dat používá data k interakci s online koncovým bodem beze změny koncového bodu. Operace roviny dat se například může skládat z odeslání žádosti o bodování do online koncového bodu a získání odpovědi.

Požadavky

Než budete postupovat podle kroků v tomto článku, ujistěte se, že máte následující požadavky:

  • Pracovní prostor služby Azure Machine Learning. Pokud ho nemáte, vytvořte ho pomocí kroků v rychlém startu : Vytvoření článku o prostředcích pracovního prostoru.

  • Azure CLI a ml rozšíření nebo sada Azure Machine Learning Python SDK v2:

Příprava identity uživatele

Potřebujete identitu uživatele k provádění operací řídicí roviny (tj. operací CRUD) a operací roviny dat (tj. odesílání žádostí o bodování) na online koncovém bodu. Pro operace řídicí roviny a roviny dat můžete použít stejnou identitu uživatele nebo různé identity uživatelů. V tomto článku použijete stejnou identitu uživatele pro operace řídicí roviny i roviny dat.

Pokud chcete vytvořit identitu uživatele v rámci ID Microsoft Entra, přečtěte si téma Nastavení ověřování. ID identity budete potřebovat později.

Přiřazení oprávnění k identitě

V této části přiřadíte oprávnění identitě uživatele, kterou používáte pro interakci s koncovým bodem. Začnete buď použitím předdefinované role, nebo vytvořením vlastní role. Potom přiřadíte roli identitě uživatele.

Použití předdefinované role

Předdefinovaná AzureML Data Scientist role se dá použít ke správě a používání koncových bodů a nasazení a k zahrnutí následujících akcí RBAC řídicí roviny používá zástupné cardy:

  • Microsoft.MachineLearningServices/workspaces/onlineEndpoints/write
  • Microsoft.MachineLearningServices/workspaces/onlineEndpoints/delete
  • Microsoft.MachineLearningServices/workspaces/onlineEndpoints/read
  • Microsoft.MachineLearningServices/workspaces/onlineEndpoints/token/action
  • Microsoft.MachineLearningServices/workspaces/onlineEndpoints/listKeys/action
  • Microsoft.MachineLearningServices/workspaces/onlineEndpoints/regenerateKeys/action

a zahrnout následující akci RBAC roviny dat:

  • Microsoft.MachineLearningServices/workspaces/onlineEndpoints/score/action

Azure Machine Learning Workspace Connection Secrets Reader Volitelně můžete předdefinované role použít pro přístup k tajným kódům z připojení pracovního prostoru a zahrnují následující akce RBAC řídicí roviny:

  • Microsoft.MachineLearningServices/workspaces/connections/listsecrets/action
  • Microsoft.MachineLearningServices/workspaces/metadata/secrets/read

Pokud použijete tyto předdefinované role, není v tomto kroku potřeba žádná akce.

(Volitelné) Vytvoření vlastní role

Tento krok můžete přeskočit, pokud používáte předdefinované role nebo jiné předpřipravené vlastní role.

  1. Definujte obor a akce pro vlastní role vytvořením definic JSON rolí. Například následující definice role umožňuje uživateli provést CRUD online koncový bod v rámci zadaného pracovního prostoru.

    custom-role-for-control-plane.json:

    {
        "Name": "Custom role for control plane operations - online endpoint",
        "IsCustom": true,
        "Description": "Can CRUD against online endpoints.",
        "Actions": [
            "Microsoft.MachineLearningServices/workspaces/onlineEndpoints/write",
            "Microsoft.MachineLearningServices/workspaces/onlineEndpoints/delete",
            "Microsoft.MachineLearningServices/workspaces/onlineEndpoints/read",
            "Microsoft.MachineLearningServices/workspaces/onlineEndpoints/token/action",
            "Microsoft.MachineLearningServices/workspaces/onlineEndpoints/listKeys/action",
            "Microsoft.MachineLearningServices/workspaces/onlineEndpoints/regenerateKeys/action"
        ],
        "NotActions": [
        ],
        "AssignableScopes": [
            "/subscriptions/<subscriptionId>/resourcegroups/<resourceGroupName>"
        ]
    }
    

    Následující definice role uživateli umožňuje odesílat žádosti o bodování do online koncového bodu v rámci zadaného pracovního prostoru.

    custom-role-for-scoring.json:

    {
        "Name": "Custom role for scoring - online endpoint",
        "IsCustom": true,
        "Description": "Can score against online endpoints.",
        "Actions": [
            "Microsoft.MachineLearningServices/workspaces/onlineEndpoints/*/action"
        ],
        "NotActions": [
        ],
        "AssignableScopes": [
            "/subscriptions/<subscriptionId>/resourcegroups/<resourceGroupName>"
        ]
    }
    
  2. K vytvoření vlastních rolí použijte definice JSON:

    az role definition create --role-definition custom-role-for-control-plane.json --subscription <subscriptionId>
    
    az role definition create --role-definition custom-role-for-scoring.json --subscription <subscriptionId>
    

    Poznámka:

    K vytváření vlastních rolí potřebujete jednu ze tří rolí:

    • vlastník
    • správce uživatelských přístupů
    • vlastní role s oprávněním Microsoft.Authorization/roleDefinitions/write (k vytvoření, aktualizaci nebo odstranění vlastních rolí) a Microsoft.Authorization/roleDefinitions/read oprávnění (k zobrazení vlastních rolí).

    Další informace o vytváření vlastních rolí najdete v tématu Vlastní role Azure.

  3. Ověřte definici role:

    az role definition list --custom-role-only -o table
    
    az role definition list -n "Custom role for control plane operations - online endpoint"
    az role definition list -n "Custom role for scoring - online endpoint"
    
    export role_definition_id1=`(az role definition list -n "Custom role for control plane operations - online endpoint" --query "[0].id" | tr -d '"')`
    
    export role_definition_id2=`(az role definition list -n "Custom role for scoring - online endpoint" --query "[0].id" | tr -d '"')`
    

Přiřazení role k identitě

  1. Pokud používáte AzureML Data Scientist předdefinované role, přiřaďte roli identitě uživatele pomocí následujícího kódu.

    az role assignment create --assignee <identityId> --role "AzureML Data Scientist" --scope /subscriptions/<subscriptionId>/resourcegroups/<resourceGroupName>/providers/Microsoft.MachineLearningServices/workspaces/<workspaceName>
    
  2. Pokud používáte Azure Machine Learning Workspace Connection Secrets Reader předdefinované role, můžete k přiřazení role k identitě uživatele použít následující kód.

    az role assignment create --assignee <identityId> --role "Azure Machine Learning Workspace Connection Secrets Reader" --scope /subscriptions/<subscriptionId>/resourcegroups/<resourceGroupName>/providers/Microsoft.MachineLearningServices/workspaces/<workspaceName>
    
  3. Pokud používáte vlastní roli, přiřaďte k identitě uživatele následující kód.

    az role assignment create --assignee <identityId> --role "Custom role for control plane operations - online endpoint" --scope /subscriptions/<subscriptionId>/resourcegroups/<resourceGroupName>/providers/Microsoft.MachineLearningServices/workspaces/<workspaceName>
    
    az role assignment create --assignee <identityId> --role "Custom role for scoring - online endpoint" --scope /subscriptions/<subscriptionId>/resourcegroups/<resourceGroupName>/providers/Microsoft.MachineLearningServices/workspaces/<workspaceName>
    

    Poznámka:

    Pokud chcete přiřadit vlastní role identitě uživatele, potřebujete jednu ze tří rolí:

    • vlastník
    • správce uživatelských přístupů
    • vlastní role, která umožňuje Microsoft.Authorization/roleAssignments/write oprávnění (přiřazení vlastních rolí) a Microsoft.Authorization/roleAssignments/read (zobrazení přiřazení rolí).

    Další informace o různých rolích Azure a jejich oprávněních najdete v tématu Role Azure a Přiřazení rolí Azure pomocí webu Azure Portal.

  4. Potvrďte přiřazení role:

    az role assignment list --scope /subscriptions/<subscriptionId>/resourcegroups/<resourceGroupName>/providers/Microsoft.MachineLearningServices/workspaces/<workspaceName>
    

Získání tokenu Microsoft Entra pro operace řídicí roviny

Tento krok proveďte, pokud plánujete provádět operace řídicí roviny s rozhraním REST API, které bude token používat přímo.

Pokud plánujete používat jiné způsoby, jako je Azure Machine Learning CLI (v2), Python SDK (v2) nebo studio Azure Machine Learning, nemusíte token Microsoft Entra získat ručně. Při přihlašování by se už vaše identita uživatele ověřila a token se automaticky načte a předá se vám.

Token Microsoft Entra pro operace řídicí roviny můžete načíst z koncového bodu prostředku Azure: https://management.azure.com.

  1. Přihlaste se do Azure.

    az login
    
  2. Pokud chcete použít konkrétní identitu, přihlaste se pomocí následujícího kódu:

    az login --identity --username <identityId>
    
  3. Tento kontext použijte k získání tokenu.

    export CONTROL_PLANE_TOKEN=`(az account get-access-token --resource https://management.azure.com --query accessToken | tr -d '"')`
    

(Volitelné) Ověření koncového bodu prostředku a ID klienta pro token Microsoft Entra

Po načtení tokenu Microsoft Entra můžete ověřit, že je token pro správný koncový bod management.azure.com prostředku Azure a správné ID klienta dekódováním tokenu prostřednictvím jwt.ms, který vrátí odpověď JSON s následujícími informacemi:

{
    "aud": "https://management.azure.com",
    "oid": "<your-object-id>"
}

Vytvoření koncového bodu

Následující příklad vytvoří koncový bod s identitou přiřazenou systémem (SAI) jako identitou koncového bodu. Sai je výchozí typ identity spravované identity pro koncové body. Některé základní role se automaticky přiřazují pro sai. Další informace o přiřazení role pro identitu přiřazenou systémem najdete v tématu Automatické přiřazení role pro identitu koncového bodu.

Rozhraní příkazového řádku nevyžaduje explicitní zadání tokenu řídicí roviny. Místo toho vás rozhraní příkazového řádku az login ověří během přihlašování a token se automaticky načte a předá vám.

  1. Vytvořte soubor YAML definice koncového bodu.

    endpoint.yml:

    $schema: https://azuremlschemas.azureedge.net/latest/managedOnlineEndpoint.schema.json
    name: my-endpoint
    auth_mode: aad_token
    
  2. Můžete nahradit auth_mode ověřením klíče nebo aml_token ověřováním key tokenů služby Azure Machine Learning. V tomto příkladu použijete aad_token pro ověřování tokenů Microsoft Entra.

    az ml online-endpoint create -f endpoint.yml
    
  3. Zkontrolujte stav koncového bodu:

    az ml online-endpoint show -n my-endpoint
    
  4. Pokud chcete při vytváření koncového bodu přepsat auth_mode (například na aad_token) následující kód:

    az ml online-endpoint create -n my-endpoint --auth_mode aad_token
    
  5. Pokud chcete aktualizovat existující koncový bod a zadat auth_mode (například na), aad_tokenspusťte následující kód:

    az ml online-endpoint update -n my-endpoint --set auth_mode=aad_token
    

Vytvoření nasazení

Pokud chcete vytvořit nasazení, přečtěte si téma Nasazení modelu ML s online koncovým bodem nebo použití REST k nasazení modelu jako online koncového bodu. V tom, jak vytváříte nasazení pro různé režimy ověřování, není žádný rozdíl.

Následující kód je příkladem vytvoření nasazení. Další informace o nasazení online koncových bodů najdete v tématu Nasazení modelu ML s online koncovým bodem (prostřednictvím rozhraní příkazového řádku).

  1. Vytvořte soubor YAML definice nasazení.

    blue-deployment.yml:

    $schema: https://azuremlschemas.azureedge.net/latest/managedOnlineDeployment.schema.json
    name: blue
    endpoint_name: my-aad-auth-endp1
    model:
      path: ../../model-1/model/
    code_configuration:
      code: ../../model-1/onlinescoring/
      scoring_script: score.py
    environment: 
      conda_file: ../../model-1/environment/conda.yml
      image: mcr.microsoft.com/azureml/openmpi4.1.0-ubuntu20.04:latest
    instance_type: Standard_DS3_v2
    instance_count: 1
    
  2. Vytvořte nasazení pomocí souboru YAML. V tomto příkladu nastavte veškerý provoz na nové nasazení.

    az ml online-deployment create -f blue-deployment.yml --all-traffic
    

Získání hodnoticího identifikátoru URI pro koncový bod

Pokud chcete k vyvolání koncového bodu použít rozhraní příkazového řádku, není nutné explicitně získat identifikátor URI bodování, protože ho rozhraní příkazového řádku zpracovává za vás. Pomocí rozhraní příkazového řádku ale můžete získat identifikátor URI bodování, abyste ho mohli použít s jinými kanály, jako je rozhraní REST API.

scoringUri=$(az ml online-endpoint show -n my-endpoint --query "scoring_uri")

Získání klíče nebo tokenu pro operace roviny dat

Klíč nebo token lze použít pro operace roviny dat, i když proces získání klíče nebo tokenu je operace řídicí roviny. Jinými slovy, pomocí tokenu řídicí roviny získáte klíč nebo token, který později použijete k provádění operací roviny dat.

Získání klíče nebo tokenu Azure Machine Learning vyžaduje, aby byla správná role přiřazená identitě uživatele, která ho požaduje, jak je popsáno v autorizaci pro operace roviny řízení. Získání tokenu Microsoft Entra nevyžaduje pro identitu uživatele žádné další role.

Pokud plánujete použít rozhraní příkazového řádku k vyvolání koncového bodu, nemusíte klíče nebo tokeny pro operace roviny dat explicitně získat, protože ho rozhraní příkazového řádku zpracovává za vás. Pomocí rozhraní příkazového řádku ale můžete získat klíče nebo token pro operaci roviny dat, abyste ho mohli použít s jinými kanály, jako je rozhraní REST API.

Pokud chcete získat klíče nebo token pro operace roviny dat, použijte příkaz az ml online-endpoint get-credentials . Tento příkaz vrátí výstup JSON, který obsahuje klíče, token a/nebo další informace.

Tip

Pokud chcete extrahovat konkrétní informace z výstupu JSON, --query použije se jako příklad parametr příkazu rozhraní příkazového řádku. K tomuto účelu však můžete použít jakýkoli vhodný nástroj.

Kdy auth_mode je koncový bod key

  • Klíče se vrátí do primaryKey polí a secondaryKey polí.
export DATA_PLANE_TOKEN=$(az ml online-endpoint get-credentials -n $ENDPOINT_NAME -g $RESOURCE_GROUP -w $WORKSPACE_NAME -o tsv --query primaryKey)
export DATA_PLANE_TOKEN2=$(az ml online-endpoint get-credentials -n $ENDPOINT_NAME -g $RESOURCE_GROUP -w $WORKSPACE_NAME -o tsv --query secondaryKey)

Kdy auth_mode je koncový bod aml_token

  • Token se vrátí v accessToken poli.
  • V poli se vrátí čas vypršení platnosti tokenu expiryTimeUtc .
  • V poli se vrátí čas aktualizace tokenu refreshAfterTimeUtc .
export DATA_PLANE_TOKEN=$(az ml online-endpoint get-credentials -n $ENDPOINT_NAME -g $RESOURCE_GROUP -w $WORKSPACE_NAME -o tsv --query accessToken)
export EXPIRY_TIME_UTC=$(az ml online-endpoint get-credentials -n $ENDPOINT_NAME -g $RESOURCE_GROUP -w $WORKSPACE_NAME -o tsv --query expiryTimeUtc)
export REFRESH_AFTER_TIME_UTC=$(az ml online-endpoint get-credentials -n $ENDPOINT_NAME -g $RESOURCE_GROUP -w $WORKSPACE_NAME -o tsv --query refreshAfterTimeUtc)

Kdy auth_mode je koncový bod aad_token

  • Token se vrátí v accessToken poli.
  • V poli se vrátí čas vypršení platnosti tokenu expiryTimeUtc .
export DATA_PLANE_TOKEN=$(az ml online-endpoint get-credentials -n $ENDPOINT_NAME -g $RESOURCE_GROUP -w $WORKSPACE_NAME -o tsv --query accessToken)
export EXPIRY_TIME_UTC=$(az ml online-endpoint get-credentials -n $ENDPOINT_NAME -g $RESOURCE_GROUP -w $WORKSPACE_NAME -o tsv --query expiryTimeUtc)

Ověření koncového bodu prostředku a ID klienta pro token Microsoft Entra

Po získání tokenu Entra můžete ověřit, že je token pro správný koncový bod ml.azure.com prostředku Azure a správné ID klienta dekódováním tokenu prostřednictvím jwt.ms, což vrátí odpověď JSON s následujícími informacemi:

{
    "aud": "https://ml.azure.com",
    "oid": "<your-object-id>"
}

Určení skóre dat pomocí klíče nebo tokenu

Můžete použít az ml online-endpoint invoke pro koncové body s klíčem, tokenem služby Azure Machine Learning nebo tokenem Microsoft Entra. Rozhraní příkazového řádku zpracovává klíč nebo token automaticky, takže ho nemusíte explicitně předávat.

az ml online-endpoint invoke -n my-endpoint -r request.json

Protokolování a monitorování provozu

Pokud chcete povolit protokolování provozu v nastavení diagnostiky pro koncový bod, postupujte podle pokynů v tématu Povolení nebo zakázání protokolů.

Pokud je nastavení diagnostiky povolené, můžete zkontrolovat AmlOnlineEndpointTrafficLogs tabulku a zobrazit režim ověřování a identitu uživatele.