Ügyfelek hitelesítése online végpontokhoz
ÉRVÉNYES:Azure CLI ml-bővítmény v2 (aktuális)Python SDK azure-ai-ml v2 (aktuális)
Ez a cikk bemutatja, hogyan hitelesítheti az ügyfeleket a vezérlősík- és adatsík-műveletek online végpontokon való végrehajtásához.
A vezérlősík-művelet vezérli a végpontot, és módosítja azt. A vezérlősík-műveletek közé tartozik a létrehozási, olvasási, frissítési és törlési (CRUD) műveletek az online végpontokon és az online üzemelő példányokon.
Az adatsík-műveletek az adatokat használják az online végpontokkal való interakcióhoz a végpont módosítása nélkül. Egy adatsík-művelet például egy pontozási kérés online végpontnak való elküldését és a válasz lekérését jelentheti.
Előfeltételek
A cikkben ismertetett lépések végrehajtása előtt győződjön meg arról, hogy rendelkezik a következő előfeltételekkel:
Egy Azure Machine Learning-munkaterület. Ha nincs ilyenje, a gyorsútmutató lépéseit követve hozzon létre egyet a munkaterület erőforrásainak létrehozása című cikkben.
Az Azure CLI és a
ml
bővítmény vagy az Azure Machine Tanulás Python SDK v2:Az Azure CLI és a bővítmény telepítéséhez lásd a parancssori felület (v2) telepítését, beállítását és használatát.
Fontos
A jelen cikkben szereplő CLI-példák feltételezik, hogy a Bash (vagy kompatibilis) rendszerhéjat használja. Például linuxos rendszerből vagy Linuxos Windows-alrendszer.
A Python SDK v2 telepítéséhez használja a következő parancsot:
pip install azure-ai-ml azure-identity
Ha frissíteni szeretné az SDK meglévő telepítését a legújabb verzióra, használja a következő parancsot:
pip install --upgrade azure-ai-ml azure-identity
További információ: A Python SDK v2 telepítése az Azure Machine Tanulás.
Korlátozások
A Microsoft Entra-jogkivonat (aad_token
) hitelesítési móddal rendelkező végpontok nem támogatják a pontozást az Azure Machine Tanulás studio parancssori felületénekaz ml online-endpoint invoke
, SDK-jának ml_client.online_endpoints.invoke()
vagy Tesztelés vagy Felhasználás lapjának használatával. Ehelyett használjon egy általános Python SDK-t, vagy a REST API-val adja át a vezérlősík jogkivonatát. További információ: Adatok pontszáma a kulcs vagy a jogkivonat használatával.
Felhasználói identitás előkészítése
Szüksége van egy felhasználói identitásra a vezérlősík műveleteinek (azaz CRUD-műveleteknek) és az adatsík-műveleteknek (azaz pontozási kérések küldésének) az online végponton történő végrehajtásához. Ugyanazt a felhasználói identitást vagy eltérő felhasználói identitást használhatja a vezérlősík és az adatsík műveleteihez. Ebben a cikkben ugyanazt a felhasználói identitást használja a vezérlősík és az adatsík műveleteihez is.
Ha a Microsoft Entra ID alatt szeretne felhasználói identitást létrehozni, olvassa el a Hitelesítés beállítása című témakört. Később szüksége lesz az identitásazonosítóra.
Engedélyek hozzárendelése az identitáshoz
Ebben a szakaszban engedélyeket rendel a végponttal való interakcióhoz használt felhasználói identitáshoz. Először használjon beépített szerepkört, vagy hozzon létre egy egyéni szerepkört. Ezt követően hozzárendeli a szerepkört a felhasználói identitáshoz.
Beépített szerepkör használata
A AzureML Data Scientist
beépített szerepkör végpontok és üzemelő példányok kezelésére és használatára használható, és helyettesítő karaktereket használ a vezérlősík RBAC-műveleteinek belefoglalásához:
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
és a következő adatsík RBAC-műveletének belefoglalása:
Microsoft.MachineLearningServices/workspaces/onlineEndpoints/score/action
Azure Machine Learning Workspace Connection Secrets Reader
A beépített szerepkör használható a munkaterület-kapcsolatok titkos kulcsainak elérésére, és az alábbi RBAC-műveleteket tartalmazza:
Microsoft.MachineLearningServices/workspaces/connections/listsecrets/action
Microsoft.MachineLearningServices/workspaces/metadata/secrets/read
Ha ezeket a beépített szerepköröket használja, ebben a lépésben nincs szükség műveletre.
(Nem kötelező) Egyéni szerepkör létrehozása
Ezt a lépést kihagyhatja, ha beépített szerepköröket vagy más előre elkészített egyéni szerepköröket használ.
Az egyéni szerepkörök hatókörének és műveleteinek meghatározása a szerepkörök JSON-definícióinak létrehozásával. Az alábbi szerepkördefiníció például lehetővé teszi, hogy a felhasználó egy online végpontot crudáljon egy adott munkaterületen.
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>" ] }
Az alábbi szerepkördefiníció lehetővé teszi, hogy a felhasználó pontozási kéréseket küldjön egy online végpontnak egy megadott munkaterületen.
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>" ] }
Egyéni szerepkörök létrehozása a JSON-definíciókkal:
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>
Megjegyzés:
Egyéni szerepkörök létrehozásához három szerepkör egyikére van szükség:
- tulajdonos
- felhasználói hozzáférés rendszergazdája
- egyéni szerepkör engedélyekkel
Microsoft.Authorization/roleDefinitions/write
(egyéni szerepkörök létrehozásához/frissítéséhez/törléséhez) ésMicrosoft.Authorization/roleDefinitions/read
engedélyekkel (egyéni szerepkörök megtekintéséhez).
Az egyéni szerepkörök létrehozásával kapcsolatos további információkért tekintse meg az Azure-ra vonatkozó egyéni szerepköröket.
Ellenőrizze a szerepkördefiníciót:
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 '"')`
Szerepkör hozzárendelése az identitáshoz
Ha a beépített szerepkört
AzureML Data Scientist
használja, a következő kóddal rendelje hozzá a szerepkört a felhasználói identitáshoz.az role assignment create --assignee <identityId> --role "AzureML Data Scientist" --scope /subscriptions/<subscriptionId>/resourcegroups/<resourceGroupName>/providers/Microsoft.MachineLearningServices/workspaces/<workspaceName>
Ha a beépített szerepkört használja
Azure Machine Learning Workspace Connection Secrets Reader
, a következő kóddal rendelje hozzá a szerepkört a felhasználói identitáshoz.az role assignment create --assignee <identityId> --role "Azure Machine Learning Workspace Connection Secrets Reader" --scope /subscriptions/<subscriptionId>/resourcegroups/<resourceGroupName>/providers/Microsoft.MachineLearningServices/workspaces/<workspaceName>
Ha egyéni szerepkört használ, a következő kóddal rendelje hozzá a szerepkört a felhasználói identitáshoz.
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>
Megjegyzés:
Ha egyéni szerepköröket szeretne hozzárendelni a felhasználói identitáshoz, három szerepkör egyikére van szüksége:
- tulajdonos
- felhasználói hozzáférés rendszergazdája
- egy egyéni szerepkör, amely engedélyezi
Microsoft.Authorization/roleAssignments/write
az engedélyeket (egyéni szerepkörök hozzárendelését) ésMicrosoft.Authorization/roleAssignments/read
(a szerepkör-hozzárendelések megtekintését).
További információ a különböző Azure-szerepkörökről és azok engedélyeiről: Azure-szerepkörök és Azure-szerepkörök hozzárendelése az Azure Portal használatával.
Erősítse meg a szerepkör-hozzárendelést:
az role assignment list --scope /subscriptions/<subscriptionId>/resourcegroups/<resourceGroupName>/providers/Microsoft.MachineLearningServices/workspaces/<workspaceName>
A Microsoft Entra-jogkivonat beszerzése vezérlősík-műveletekhez
Ezt a lépést akkor hajtsa végre, ha a vezérlősík-műveleteket a REST API-val tervezi végrehajtani, amely közvetlenül a jogkivonatot fogja használni.
Ha más módszereket is használni szeretne, például az Azure Machine Tanulás CLI -t (v2), a Python SDK-t (v2) vagy az Azure Machine Tanulás Studiót, nem kell manuálisan beszereznie a Microsoft Entra-jogkivonatot. A bejelentkezés során a rendszer már hitelesíti a felhasználói identitást, és a jogkivonat automatikusan lekéri és átadja Önnek.
Az Azure-erőforrásvégpontról lekérheti a vezérlősík műveleteihez szükséges Microsoft Entra-jogkivonatot: https://management.azure.com
.
Sign in to Azure.
az login
Ha egy adott identitást szeretne használni, az alábbi kóddal jelentkezzen be az identitással:
az login --identity --username <identityId>
Ezzel a környezettel szerezheti be a jogkivonatot.
export CONTROL_PLANE_TOKEN=`(az account get-access-token --resource https://management.azure.com --query accessToken | tr -d '"')`
(Nem kötelező) A Microsoft Entra-jogkivonat erőforrásvégpontjának és ügyfélazonosítójának ellenőrzése
A Microsoft Entra-jogkivonat lekérése után ellenőrizheti, hogy a jogkivonat a megfelelő Azure-erőforrásvégponthoz management.azure.com
és a megfelelő ügyfél-azonosítóhoz tartozik-e a jogkivonat jwt.ms keresztül történő dekódolásával, amely json-választ ad vissza a következő információkkal:
{
"aud": "https://management.azure.com",
"oid": "<your-object-id>"
}
Végpont létrehozása
Az alábbi példa egy rendszer által hozzárendelt identitással (SAI) hozza létre a végpontot végponti identitásként. A végpontok felügyelt identitásának alapértelmezett identitástípusa az SAI. A rendszer automatikusan hozzárendel néhány alapvető szerepkört az SAI-hoz. A rendszer által hozzárendelt identitás szerepkör-hozzárendeléséről további információt a végponti identitás automatikus szerepkör-hozzárendelése című témakörben talál.
A parancssori felület nem követeli meg, hogy explicit módon adja meg a vezérlősík jogkivonatát. Ehelyett a parancssori felület hitelesíti Önt a bejelentkezés során, és a rendszer automatikusan lekéri és átadja Önnek a jogkivonatot.
Hozzon létre egy végpontdefiníciós YAML-fájlt.
endpoint.yml:
$schema: https://azuremlschemas.azureedge.net/latest/managedOnlineEndpoint.schema.json name: my-endpoint auth_mode: aad_token
Lecserélheti
auth_mode
key
a kulcsok hitelesítésére vagyaml_token
az Azure Machine Tanulás jogkivonat-hitelesítésre. Ebben a példában a Microsoft Entra-jogkivonat hitelesítését használjaaad_token
.az ml online-endpoint create -f endpoint.yml
Ellenőrizze a végpont állapotát:
az ml online-endpoint show -n my-endpoint
Ha felül szeretné bírálni
auth_mode
(például: )aad_token
egy végpont létrehozásakor, futtassa a következő kódot:az ml online-endpoint create -n my-endpoint --auth_mode aad_token
Ha frissíteni szeretné a meglévő végpontot, és meg szeretné adni
auth_mode
(például erreaad_token
), futtassa a következő kódot:az ml online-endpoint update -n my-endpoint --set auth_mode=aad_token
Üzembe helyezés létrehozása
Üzembe helyezés létrehozásához lásd : Ml-modell üzembe helyezése online végponttal , vagy a MODELL üzembe helyezése REST használatával online végpontként. Nincs különbség abban, hogyan hozhat létre üzembe helyezéseket a különböző hitelesítési módokhoz.
Az alábbi kód egy példa az üzembe helyezés létrehozására. Az online végpontok üzembe helyezésével kapcsolatos további információkért lásd : Ml-modell üzembe helyezése online végponttal (cli-n keresztül)
Hozzon létre egy üzembehelyezési definíciós YAML-fájlt.
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
Hozza létre az üzembe helyezést a YAML-fájllal. Ebben a példában állítsa be az összes forgalmat az új üzembe helyezésre.
az ml online-deployment create -f blue-deployment.yml --all-traffic
A végpont pontozási URI-jának lekérése
Ha a parancssori felület használatával szeretné meghívni a végpontot, nem kell explicit módon lekérnie a pontozási URI-t, mivel a parancssori felület kezeli Az Ön számára. A parancssori felülettel azonban továbbra is lekérheti a pontozási URI-t, így más csatornákkal, például a REST API-val is használhatja.
scoringUri=$(az ml online-endpoint show -n my-endpoint --query "scoring_uri")
Adatsík-műveletek kulcsának vagy jogkivonatának lekérése
Egy kulcs vagy jogkivonat adatsík-műveletekhez használható, annak ellenére, hogy a kulcs vagy a jogkivonat lekérésének folyamata vezérlősík-művelet. Más szóval egy vezérlősík-jogkivonatot használ az adatsík műveleteinek végrehajtásához később használt kulcs vagy jogkivonat lekéréséhez.
A kulcs vagy az Azure Machine Tanulás jogkivonat lekéréséhez a megfelelő szerepkört kell hozzárendelni az azt kérő felhasználói identitáshoz a vezérlősík műveleteinek engedélyezésében leírtak szerint. A felhasználói identitásnak nincs szüksége további szerepkörökre a Microsoft Entra-jogkivonat beszerzéséhez.
Kulcs- vagy Azure Machine-Tanulás-jogkivonat
Ha a parancssori felület használatával kívánja meghívni a végpontot, és ha a végpont úgy van beállítva, hogy a kulcs vagy az Azure Machine Tanulás token hitelesítési módját használja (aml_token
), akkor nem kell explicit módon lekérnie az adatsík-jogkivonatot, mivel a parancssori felület kezeli. A parancssori felülettel azonban továbbra is lekérheti az adatsík-jogkivonatot, így más csatornákkal, például a REST API-val is használhatja.
A kulcs vagy az Azure Machine Tanulás token (aml_token
) lekéréséhez használja az az ml online-endpoint get-credentials parancsot. Ez a parancs egy JSON-dokumentumot ad vissza, amely tartalmazza a kulcsot vagy az Azure Machine Tanulás tokent.
A rendszer visszaadja a kulcsokat a primaryKey
mezőkben secondaryKey
. Az alábbi példa bemutatja, hogyan használhatja a paramétert --query
csak az elsődleges kulcs visszaadására:
export DATA_PLANE_TOKEN=$(az ml online-endpoint get-credentials -n $ENDPOINT_NAME -g $RESOURCE_GROUP -w $WORKSPACE_NAME -o tsv --query primaryKey)
Az Azure Machine Tanulás tokenek a accessToken
következő mezőben jelennek meg:
export DATA_PLANE_TOKEN=$(az ml online-endpoint get-credentials -n $ENDPOINT_NAME -g $RESOURCE_GROUP -w $WORKSPACE_NAME -o tsv --query accessToken)
Emellett a mezők tartalmazzák refreshAfterTimeUtc
a expiryTimeUtc
jogkivonat lejárati és frissítési idejét is.
Microsoft Entra-jogkivonat
A Microsoft Entra-jogkivonat (aad_token
) parancssori felülettel való lekéréséhez használja az az account get-access-token parancsot. Ez a parancs egy Microsoft Entra-jogkivonatot tartalmazó JSON-dokumentumot ad vissza.
A Microsoft Entra-jogkivonat a accessToken
következő mezőben lesz visszaadva:
export DATA_PLANE_TOKEN=`(az account get-access-token --resource https://ml.azure.com --query accessToken | tr -d '"')`
Megjegyzés:
- A CLI-bővítmény
ml
nem támogatja a Microsoft Entra-jogkivonat beszerzését. Használjaaz account get-access-token
helyette az előző kódban leírtak szerint. - Az adatsík-műveletek jogkivonata
management.azure.com
a vezérlősík műveleteihez használt jogkivonat helyett az Azure-erőforrásvégpontrólml.azure.com
lesz lekérve.
A Microsoft Entra-jogkivonat erőforrásvégpontjának és ügyfélazonosítójának ellenőrzése
Az Entra-jogkivonat lekérése után ellenőrizheti, hogy a jogkivonat a megfelelő Azure-erőforrásvégponthoz ml.azure.com
és a megfelelő ügyfél-azonosítóhoz tartozik-e a jogkivonat jwt.ms keresztül történő dekódolásával, amely json-választ ad vissza az alábbi információkkal:
{
"aud": "https://ml.azure.com",
"oid": "<your-object-id>"
}
Adatok pontozása a kulcs vagy a jogkivonat használatával
Kulcs- vagy Azure Machine-Tanulás-jogkivonat
Kulcsokkal vagy Azure Machine-Tanulás-jogkivonattal rendelkező végpontokhoz is használhatóaz ml online-endpoint invoke
. A parancssori felület automatikusan kezeli a kulcsot vagy az Azure Machine Tanulás tokent, így önnek nem kell explicit módon átadnia.
az ml online-endpoint invoke -n my-endpoint -r request.json
Microsoft Entra-jogkivonat
A az ml online-endpoint invoke
Végpontok Használata Microsoft Entra-jogkivonattal nem támogatott. Használja inkább a REST API-t, és használja a végpont pontozási URI-ját a végpont meghívásához.
Forgalom naplózása és figyelése
Ha engedélyezni szeretné a forgalomnaplózást a végpont diagnosztikai beállításaiban, kövesse a naplók engedélyezésének/letiltásának lépéseit.
Ha a diagnosztikai beállítás engedélyezve van, a táblában megtekintheti a AmlOnlineEndpointTrafficLogs
hitelesítési módot és a felhasználói identitást.