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:Pokud chcete nainstalovat Azure CLI a rozšíření, přečtěte si téma Instalace, nastavení a použití rozhraní příkazového řádku (v2).
Důležité
Příklady rozhraní příkazového řádku v tomto článku předpokládají, že používáte prostředí Bash (nebo kompatibilní). Například ze systému Linux nebo Subsystém Windows pro Linux.
K instalaci sady Python SDK v2 použijte následující příkaz:
pip install azure-ai-ml azure-identity
Pokud chcete aktualizovat existující instalaci sady SDK na nejnovější verzi, použijte následující příkaz:
pip install --upgrade azure-ai-ml azure-identity
Další informace najdete v tématu Instalace sady Python SDK v2 pro azure machine Učení.
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 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.
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>" ] }
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í) aMicrosoft.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.
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ě
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>
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>
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í) aMicrosoft.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.
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
.
Přihlaste se do Azure.
az login
Pokud chcete použít konkrétní identitu, přihlaste se pomocí následujícího kódu:
az login --identity --username <identityId>
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.
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
Můžete nahradit
auth_mode
ověřováním klíčů neboaml_token
ověřovánímkey
tokenů azure machine Učení. V tomto příkladu použijeteaad_token
pro ověřování tokenů Microsoft Entra.az ml online-endpoint create -f endpoint.yml
Zkontrolujte stav koncového bodu:
az ml online-endpoint show -n my-endpoint
Pokud chcete při vytváření koncového bodu přepsat
auth_mode
(například naaad_token
) následující kód:az ml online-endpoint create -n my-endpoint --auth_mode aad_token
Pokud chcete aktualizovat existující koncový bod a zadat
auth_mode
(například na),aad_token
spusť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).
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
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)
expiryTimeUtc
refreshAfterTimeUtc
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žijteaz 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ístomanagement.azure.com
tokenu 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.