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 Azure Machine Učení Python SDK v2:

Omezení

Koncové body s ověřovacím režimem Microsoft Entra tokenu (aad_token) nepodporují bodování pomocí rozhraní příkazového řádkuaz ml online-endpoint invoke, sady SDK ml_client.online_endpoints.invoke()nebo karet Test nebo Využívání studio Azure Machine Learning. Místo toho použijte obecnou sadu Python SDK nebo použijte rozhraní REST API k předání tokenu řídicí roviny. Další informace najdete v tématu Skóre dat pomocí klíče nebo tokenu.

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 Scientistrole 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 Učení CLI (v2), Sada 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 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ěřováním klíčů nebo aml_token ověřováním key tokenů azure machine Učení. 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 Učení vyžaduje, aby byla identita uživatele, která ji požaduje, přiřazena správná role, jak je popsáno v autorizaci operací řídicí roviny. Identita uživatele k získání tokenu Microsoft Entra nepotřebuje žádné další role.

Klíč nebo token Učení počítače Azure

Pokud plánujete použít rozhraní příkazového řádku k vyvolání koncového bodu a pokud je koncový bod nastavený tak, aby používal režim ověřování klíče nebo tokenu azure machine Učení (aml_token), nemusíte token roviny dat získat explicitně, protože ho rozhraní příkazového řádku zpracovává za vás. Pomocí rozhraní příkazového řádku ale můžete získat token roviny dat, abyste ho mohli použít s jinými kanály, jako je rozhraní REST API.

Pokud chcete získat klíč nebo token azure machine Učení (aml_token), použijte příkaz az ml online-endpoint get-credentials. Tento příkaz vrátí dokument JSON, který obsahuje klíč nebo token azure machine Učení.

Klíče se vrátí do primaryKey polí a secondaryKey polí. Následující příklad ukazuje, jak použít --query parametr k vrácení pouze primárního klíče:

export DATA_PLANE_TOKEN=$(az ml online-endpoint get-credentials -n $ENDPOINT_NAME -g $RESOURCE_GROUP -w $WORKSPACE_NAME -o tsv --query primaryKey)

V poli se vrátí accessToken tokeny Učení Azure Machine:

export DATA_PLANE_TOKEN=$(az ml online-endpoint get-credentials -n $ENDPOINT_NAME -g $RESOURCE_GROUP -w $WORKSPACE_NAME -o tsv --query accessToken)

expiryTimeUtcrefreshAfterTimeUtc Pole také obsahují časy vypršení platnosti a aktualizace tokenu.

Token Microsoft Entra

Pokud chcete získat token Microsoft Entra (aad_token) pomocí rozhraní příkazového řádku, použijte příkaz az account get-access-token . Tento příkaz vrátí dokument JSON obsahující token Microsoft Entra.

Token Microsoft Entra se vrátí v accessToken poli:

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

Poznámka:

  • Rozšíření rozhraní příkazového řádku ml nepodporuje získání tokenu Microsoft Entra. Místo toho použijte az account get-access-token , jak je popsáno v předchozím kódu.
  • Token pro operace roviny dat se načte z koncového bodu ml.azure.com prostředku Azure místo management.azure.comtokenu pro operace řídicí roviny.

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

Klíč nebo token Učení počítače Azure

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

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

Token Microsoft Entra

Použití az ml online-endpoint invoke pro koncové body s tokenem Microsoft Entra se nepodporuje. Místo toho použijte rozhraní REST API a k vyvolání koncového bodu použijte identifikátor URI bodování koncového bodu.

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.