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: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 Learning.
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 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
.
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 az login
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ěřením klíče neboaml_token
ověřovánímkey
tokenů služby Azure Machine Learning. 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 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í asecondaryKey
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.