Çevrimiçi uç noktalar için istemcilerin kimliğini doğrulama

ŞUNLAR IÇIN GEÇERLIDIR: Azure CLI ml uzantısı v2 (geçerli)Python SDK azure-ai-ml v2 (geçerli)

Bu makale, çevrimiçi uç noktalarda denetim düzlemi ve veri düzlemi işlemleri gerçekleştirmek için istemcilerin kimliğini doğrulamayı kapsar.

Denetim düzlemi işlemi bir uç noktayı denetler ve değiştirir. Denetim düzlemi işlemleri, çevrimiçi uç noktalarda ve çevrimiçi dağıtımlarda oluşturma, okuma, güncelleştirme ve silme (CRUD) işlemlerini içerir.

Veri düzlemi işlemi , uç noktayı değiştirmeden çevrimiçi uç noktayla etkileşime geçmek için verileri kullanır. Örneğin veri düzlemi işlemi, çevrimiçi uç noktaya puanlama isteği gönderme ve yanıt alma işlemlerinden oluşabilir.

Önkoşullar

Bu makaledeki adımları takip etmeden önce aşağıdaki önkoşullara sahip olduğunuzdan emin olun:

  • Azure Machine Learning çalışma alanı. Yoksa, oluşturmak için Hızlı Başlangıç: Çalışma alanı kaynakları oluşturma makalesindeki adımları kullanın.

  • Azure CLI ve ml uzantısı veya Azure Machine Learning Python SDK v2:

    • Azure CLI ve uzantısını yüklemek için bkz . CLI'yı (v2) yükleme, ayarlama ve kullanma.

      Önemli

      Bu makaledeki CLI örneklerinde Bash (veya uyumlu) kabuğu kullandığınız varsayılır. Örneğin, bir Linux sisteminden veya Linux için Windows Alt Sistemi.

    • Python SDK v2'yi yüklemek için aşağıdaki komutu kullanın:

      pip install azure-ai-ml azure-identity
      

      SDK'nın mevcut yüklemesini en son sürüme güncelleştirmek için aşağıdaki komutu kullanın:

      pip install --upgrade azure-ai-ml azure-identity
      

      Daha fazla bilgi için bkz . Azure Machine Learning için Python SDK v2'yi yükleme.

Sınırlamalar

Microsoft Entra belirteci (aad_token) kimlik doğrulama moduna sahip uç noktalar, Azure Machine Learning stüdyosu CLIaz ml online-endpoint invoke, SDK ml_client.online_endpoints.invoke()veya Test et veya Kullan sekmelerini kullanarak puanlamayı desteklemez. Bunun yerine genel bir Python SDK'sı kullanın veya denetim düzlemi belirtecini geçirmek için REST API kullanın. Daha fazla bilgi için bkz . Anahtarı veya belirteci kullanarak verileri puanla.

Kullanıcı kimliği hazırlama

Çevrimiçi uç noktada denetim düzlemi işlemleri (CRUD işlemleri) ve veri düzlemi işlemleri (puanlama istekleri gönderme) gerçekleştirmek için bir kullanıcı kimliğine ihtiyacınız vardır. Denetim düzlemi ve veri düzlemi işlemleri için aynı kullanıcı kimliğini veya farklı kullanıcı kimliklerini kullanabilirsiniz. Bu makalede, hem denetim düzlemi hem de veri düzlemi işlemleri için aynı kullanıcı kimliğini kullanırsınız.

Microsoft Entra Id altında bir kullanıcı kimliği oluşturmak için bkz . Kimlik doğrulamasını ayarlama. Kimlik kimliğine daha sonra ihtiyacınız olacak.

Kimliğe izin atama

Bu bölümde, uç noktayla etkileşime geçmek için kullandığınız kullanıcı kimliğine izinler atarsınız. Yerleşik bir rol kullanarak veya özel bir rol oluşturarak başlarsınız. Bundan sonra, rolü kullanıcı kimliğinize atarsınız.

Yerleşik rol kullanma

AzureML Data ScientistYerleşik rol, uç noktaları ve dağıtımları yönetmek ve kullanmak için kullanılabilir ve aşağıdaki denetim düzlemi RBAC eylemlerini eklemek için joker karakterler kullanır:

  • 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

ve aşağıdaki veri düzlemi RBAC eylemini dahil etmek için:

  • Microsoft.MachineLearningServices/workspaces/onlineEndpoints/score/action

İsteğe bağlı olarak, Azure Machine Learning Workspace Connection Secrets Reader yerleşik rol çalışma alanı bağlantılarından gizli dizilere erişmek için kullanılabilir ve aşağıdaki denetim düzlemi RBAC eylemlerini içerir:

  • Microsoft.MachineLearningServices/workspaces/connections/listsecrets/action
  • Microsoft.MachineLearningServices/workspaces/metadata/secrets/read

Bu yerleşik rolleri kullanıyorsanız, bu adımda herhangi bir eyleme gerek yoktur.

(İsteğe bağlı) Özel rol oluşturma

Yerleşik roller veya önceden oluşturulmuş diğer özel roller kullanıyorsanız bu adımı atlayabilirsiniz.

  1. Rollerin JSON tanımlarını oluşturarak özel rollerin kapsamını ve eylemlerini tanımlayın. Örneğin, aşağıdaki rol tanımı kullanıcının belirtilen çalışma alanı altında bir çevrimiçi uç nokta CRUD yapmasına olanak tanır.

    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>"
        ]
    }
    

    Aşağıdaki rol tanımı, kullanıcının belirtilen çalışma alanı altındaki çevrimiçi bir uç noktaya puanlama istekleri göndermesine olanak tanır.

    scoring.json için custom-role::

    {
        "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. Özel roller oluşturmak için JSON tanımlarını kullanın:

    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>
    

    Dekont

    Özel roller oluşturmak için üç rolden birine ihtiyacınız vardır:

    • sahip
    • kullanıcı erişim yöneticisi
    • (özel rolleri oluşturmak/güncelleştirmek/silmek için) ve Microsoft.Authorization/roleDefinitions/read izni olan özel bir rol Microsoft.Authorization/roleDefinitions/write (özel rolleri görüntülemek için).

    Özel roller oluşturma hakkında daha fazla bilgi için bkz . Azure özel rolleri.

  3. Rol tanımını doğrulayın:

    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 '"')`
    

Rolü kimliğe atama

  1. Yerleşik rolü kullanıyorsanız AzureML Data Scientist , rolü kullanıcı kimliğinize atamak için aşağıdaki kodu kullanın.

    az role assignment create --assignee <identityId> --role "AzureML Data Scientist" --scope /subscriptions/<subscriptionId>/resourcegroups/<resourceGroupName>/providers/Microsoft.MachineLearningServices/workspaces/<workspaceName>
    
  2. İsteğe bağlı olarak, yerleşik rolü kullanıyorsanız Azure Machine Learning Workspace Connection Secrets Reader , rolü kullanıcı kimliğinize atamak için aşağıdaki kodu kullanın.

    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. Özel bir rol kullanıyorsanız, rolü kullanıcı kimliğinize atamak için aşağıdaki kodu kullanın.

    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>
    

    Dekont

    Kullanıcı kimliğine özel roller atamak için üç rolden birine ihtiyacınız vardır:

    • sahip
    • kullanıcı erişim yöneticisi
    • izin (özel roller atamak için) ve Microsoft.Authorization/roleAssignments/read (rol atamalarını görüntülemek için) izin veren Microsoft.Authorization/roleAssignments/write özel bir rol.

    Farklı Azure rolleri ve izinleri hakkında daha fazla bilgi için bkz . Azure rolleri ve Azure Portal kullanarak Azure rolleri atama.

  4. Rol atamasını onaylayın:

    az role assignment list --scope /subscriptions/<subscriptionId>/resourcegroups/<resourceGroupName>/providers/Microsoft.MachineLearningServices/workspaces/<workspaceName>
    

Denetim düzlemi işlemleri için Microsoft Entra belirtecini alma

Doğrudan belirteci kullanacak rest API ile denetim düzlemi işlemleri gerçekleştirmeyi planlıyorsanız bu adımı gerçekleştirin.

Azure Machine Learning CLI (v2), Python SDK (v2) veya Azure Machine Learning stüdyosu gibi başka yollar kullanmayı planlıyorsanız Microsoft Entra belirtecini el ile almanız gerekmez. Bunun yerine, oturum açma sırasında kullanıcı kimliğiniz zaten doğrulanır ve belirteç sizin için otomatik olarak alınır ve geçirilir.

Denetim düzlemi işlemleri için Microsoft Entra belirtecini Azure kaynak uç noktasından alabilirsiniz: https://management.azure.com.

  1. Azure'da oturum açın.

    az login
    
  2. Belirli bir kimlik kullanmak istiyorsanız, kimlikle oturum açmak için aşağıdaki kodu kullanın:

    az login --identity --username <identityId>
    
  3. Belirteci almak için bu bağlamı kullanın.

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

(İsteğe bağlı) Microsoft Entra belirtecinin kaynak uç noktasını ve istemci kimliğini doğrulama

Microsoft Entra belirtecini aldıktan sonra jwt.ms aracılığıyla belirtecin kodunu çözerek belirtecin doğru Azure kaynak uç noktası management.azure.com ve doğru istemci kimliği için olduğunu doğrulayabilirsiniz; bu da aşağıdaki bilgileri içeren bir json yanıtı döndürür:

{
    "aud": "https://management.azure.com",
    "oid": "<your-object-id>"
}

Uç nokta oluşturma

Aşağıdaki örnek, uç nokta kimliği olarak sistem tarafından atanan kimlik (SAI) ile uç noktayı oluşturur. SAI, uç noktalar için yönetilen kimliğin varsayılan kimlik türüdür. Sai için bazı temel roller otomatik olarak atanır. Sistem tarafından atanan bir kimlik için rol ataması hakkında daha fazla bilgi için bkz . Uç nokta kimliği için otomatik rol ataması.

CLI, denetim düzlemi belirtecini açıkça sağlamanızı gerektirmez. Bunun yerine, CLI oturum açma sırasında kimliğinizi doğrular ve belirteç sizin için otomatik olarak alınır ve geçirilir.

  1. Bir uç nokta tanımı YAML dosyası oluşturun.

    endpoint.yml:

    $schema: https://azuremlschemas.azureedge.net/latest/managedOnlineEndpoint.schema.json
    name: my-endpoint
    auth_mode: aad_token
    
  2. değerini anahtar kimlik doğrulaması için veya aml_token Azure Machine Learning belirteci kimlik doğrulaması için ile key değiştirebilirsinizauth_mode. Bu örnekte, Microsoft Entra belirteci kimlik doğrulaması için kullanacaksınızaad_token.

    az ml online-endpoint create -f endpoint.yml
    
  3. Uç noktanın durumunu denetleyin:

    az ml online-endpoint show -n my-endpoint
    
  4. Uç nokta oluştururken geçersiz kılmak auth_mode (örneğin, için aad_token) istiyorsanız aşağıdaki kodu çalıştırın:

    az ml online-endpoint create -n my-endpoint --auth_mode aad_token
    
  5. Mevcut uç noktayı güncelleştirmek ve belirtmek auth_mode istiyorsanız (örneğin, için aad_token) aşağıdaki kodu çalıştırın:

    az ml online-endpoint update -n my-endpoint --set auth_mode=aad_token
    

Dağıtım oluşturma

Dağıtım oluşturmak için bkz. Çevrimiçi uç nokta ile ML modeli dağıtma veya Modeli çevrimiçi uç nokta olarak dağıtmak için REST kullanma. Farklı kimlik doğrulama modları için dağıtım oluşturma yönteminizde fark yoktur.

Aşağıdaki kod, bir dağıtımın nasıl oluşturulacağını gösteren bir örnektir. Çevrimiçi uç noktaları dağıtma hakkında daha fazla bilgi için bkz . Çevrimiçi uç nokta ile ML modeli dağıtma (CLI aracılığıyla)

  1. Dağıtım tanımı YAML dosyası oluşturun.

    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. YAML dosyasını kullanarak dağıtımı oluşturun. Bu örnek için tüm trafiği yeni dağıtıma ayarlayın.

    az ml online-deployment create -f blue-deployment.yml --all-traffic
    

Uç nokta için puanlama URI'sini alma

Uç noktayı çağırmak için CLI kullanmayı planlıyorsanız, CLI bunu sizin için işlediğinden puanlama URI'sini açıkça almanız gerekmez. Ancak, puanlama URI'sini almak için CLI'yi kullanmaya devam edebilirsiniz; böylece REST API gibi diğer kanallarla da kullanabilirsiniz.

scoringUri=$(az ml online-endpoint show -n my-endpoint --query "scoring_uri")

Veri düzlemi işlemleri için anahtarı veya belirteci alma

Anahtar veya belirteci alma işlemi bir denetim düzlemi işlemi olsa da, veri düzlemi işlemleri için bir anahtar veya belirteç kullanılabilir. Başka bir deyişle, daha sonra veri düzlemi işlemlerinizi gerçekleştirmek için kullandığınız anahtarı veya belirteci almak için bir denetim düzlemi belirteci kullanırsınız.

Anahtarı veya Azure Machine Learning belirtecini almak için, denetim düzlemi işlemleri için yetkilendirme bölümünde açıklandığı gibi, bunu isteyen kullanıcı kimliğine doğru rolün atanmış olması gerekir. Kullanıcı kimliğinin Microsoft Entra belirtecini almak için ek rollere ihtiyacı yoktur.

Anahtar veya Azure Machine Learning belirteci

Uç noktayı çağırmak için CLI kullanmayı planlıyorsanız ve uç nokta anahtar veya Azure Machine Learning belirtecinin (aml_token ) kimlik doğrulama modunu kullanacak şekilde ayarlandıysa, CLI bunu sizin için işlediğinden veri düzlemi belirtecini açıkça almanız gerekmez. Ancak, CLI'yi kullanarak veri düzlemi belirtecini alabilirsiniz; böylece REST API gibi diğer kanallarla da kullanabilirsiniz.

Anahtarı veya Azure Machine Learning belirtecini ()aml_token almak için az ml online-endpoint get-credentials komutunu kullanın. Bu komut, anahtarı veya Azure Machine Learning belirtecini içeren bir JSON belgesi döndürür.

Anahtarlar ve secondaryKey alanlarında döndürülürprimaryKey. Aşağıdaki örnekte yalnızca birincil anahtarı döndürmek için parametresinin nasıl kullanılacağı --query gösterilmektedir:

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

Azure Machine Learning Belirteçleri şu alanda döndürülür accessToken :

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

Ayrıca ve expiryTimeUtcrefreshAfterTimeUtc alanları belirteç süre sonu ve yenileme sürelerini içerir.

Microsoft Entra belirteci

CLI kullanarak Microsoft Entra belirtecini (aad_token) almak için az account get-access-token komutunu kullanın. Bu komut, Microsoft Entra belirtecini içeren bir JSON belgesi döndürür.

Microsoft Entra belirteci şu alanda accessToken döndürülür:

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

Dekont

  • CLI ml uzantısı Microsoft Entra belirtecini almayı desteklemez. Bunun yerine önceki kodda açıklandığı gibi kullanın az account get-access-token .
  • Veri düzlemi işlemleri için belirteç, denetim düzlemi işlemlerinin belirtecinden management.azure.comfarklı olarak yerine Azure kaynak uç noktasından ml.azure.com alınır.

Microsoft Entra belirtecinin kaynak uç noktasını ve istemci kimliğini doğrulama

Entra belirtecini aldıktan sonra jwt.ms aracılığıyla belirtecin kodunu çözerek belirtecin doğru Azure kaynak uç noktası ml.azure.com ve doğru istemci kimliği için olduğunu doğrulayabilirsiniz; bu da aşağıdaki bilgileri içeren bir json yanıtı döndürür:

{
    "aud": "https://ml.azure.com",
    "oid": "<your-object-id>"
}

Anahtarı veya belirteci kullanarak verileri puanla

Anahtar veya Azure Machine Learning belirteci

Anahtar veya Azure Machine Learning belirteciyle uç noktalar için kullanabilirsiniz az ml online-endpoint invoke . CLI anahtarı veya Azure Machine Learning belirtecini otomatik olarak işler, bu nedenle açıkça geçirmeniz gerekmez.

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

Microsoft Entra belirteci

Microsoft Entra belirteciyle uç noktalar için kullanılması az ml online-endpoint invoke desteklenmez. Bunun yerine REST API kullanın ve uç noktayı çağırmak için uç noktanın puanlama URI'sini kullanın.

Trafiği günlüğe kaydetme ve izleme

Uç noktanın tanılama ayarlarında trafik günlüğünü etkinleştirmek için Günlükleri etkinleştirme/devre dışı bırakma başlığındaki adımları izleyin.

Tanılama ayarı etkinse, kimlik doğrulama modunu ve kullanıcı kimliğini görmek için tabloyu de kontrol AmlOnlineEndpointTrafficLogs edebilirsiniz.