Ü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 Scientistbeé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.

  1. 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>"
        ]
    }
    
  2. 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) és Microsoft.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.

  3. 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

  1. 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>
    
  2. 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>
    
  3. 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) és Microsoft.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.

  4. 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.

  1. Sign in to Azure.

    az login
    
  2. Ha egy adott identitást szeretne használni, az alábbi kóddal jelentkezzen be az identitással:

    az login --identity --username <identityId>
    
  3. 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.

  1. 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
    
  2. Lecserélheti auth_modekey a kulcsok hitelesítésére vagy aml_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
    
  3. Ellenőrizze a végpont állapotát:

    az ml online-endpoint show -n my-endpoint
    
  4. Ha felül szeretné bírálni auth_mode (például: ) aad_tokenegy végpont létrehozásakor, futtassa a következő kódot:

    az ml online-endpoint create -n my-endpoint --auth_mode aad_token
    
  5. Ha frissíteni szeretné a meglévő végpontot, és meg szeretné adni auth_mode (például erre aad_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)

  1. 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
    
  2. 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álja az account get-access-token helyette az előző kódban leírtak szerint.
  • Az adatsík-műveletek jogkivonata management.azure.coma vezérlősík műveleteihez használt jogkivonat helyett az Azure-erőforrásvégpontról ml.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.