Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
DOTYCZY:
Rozszerzenie interfejsu wiersza polecenia platformy Azure w wersji 2 (current)
Zestaw PYTHON SDK azure-ai-ml v2 (bieżąca)
W tym artykule opisano sposób uwierzytelniania klientów w celu wykonywania operacji płaszczyzny sterowania i płaszczyzny danych w punktach końcowych online.
Operacja płaszczyzny sterowania kontroluje punkt końcowy i zmienia go. Operacje płaszczyzny sterowania obejmują operacje tworzenia, odczytu, aktualizacji i usuwania (CRUD) w punktach końcowych online i wdrożeniach online.
Operacja płaszczyzny danych używa danych do interakcji z punktem końcowym online bez zmiany punktu końcowego. Na przykład operacja płaszczyzny danych może składać się z wysyłania żądania oceniania do punktu końcowego online i uzyskiwania odpowiedzi.
Wymagania wstępne
Obszar roboczy usługi Azure Machine Learning. Aby uzyskać instrukcje dotyczące tworzenia przestrzeni roboczej, zobacz Create the workspace.
Azure CLI i rozszerzenie
mllub Azure Machine Learning Python SDK v2:Aby zainstalować Azure CLI oraz rozszerzenie
ml, zobacz Zainstaluj i skonfiguruj CLI (v2).Przykłady w tym artykule zakładają, że używasz powłoki Bash lub innej kompatybilnej powłoki. Na przykład możesz użyć powłoki w systemie Linux lub Windows Subsystem for Linux.
Przygotowywanie tożsamości użytkownika
Tożsamość użytkownika jest potrzebna do wykonywania operacji płaszczyzny sterowania (na przykład operacji CRUD) i operacji płaszczyzny danych (na przykład wysyłania żądań oceniania) w punkcie końcowym online. W przypadku operacji płaszczyzny sterowania i płaszczyzny danych można użyć tej samej tożsamości użytkownika lub różnych tożsamości użytkowników. W tym artykule używasz tej samej tożsamości użytkownika zarówno dla operacji płaszczyzny sterowania, jak i płaszczyzny danych.
Aby uzyskać informacje na temat tworzenia tożsamości użytkownika w usłudze Microsoft Entra ID, zobacz Konfigurowanie uwierzytelniania. Później będzie potrzebny identyfikator tożsamości.
Przypisywanie uprawnień do tożsamości
W tej sekcji przypiszesz uprawnienia do tożsamości użytkownika używanej do interakcji z punktem końcowym. Zaczynasz od użycia wbudowanej roli lub przez utworzenie roli niestandardowej. Następnie przypiszesz rolę do tożsamości użytkownika.
Używanie wbudowanej roli
Za pomocą AzureML Data Scientist roli można zarządzać punktami końcowymi i wdrożeniami oraz używać ich. Używa również symboli wieloznacznych do uwzględnienia następujących akcji RBAC płaszczyzny sterowania:
Microsoft.MachineLearningServices/workspaces/onlineEndpoints/writeMicrosoft.MachineLearningServices/workspaces/onlineEndpoints/deleteMicrosoft.MachineLearningServices/workspaces/onlineEndpoints/readMicrosoft.MachineLearningServices/workspaces/onlineEndpoints/token/actionMicrosoft.MachineLearningServices/workspaces/onlineEndpoints/listKeys/actionMicrosoft.MachineLearningServices/workspaces/onlineEndpoints/regenerateKeys/action
Używa symboli wieloznacznych do uwzględnienia następującej akcji kontroli dostępu opartej na rolach płaszczyzny danych:
Microsoft.MachineLearningServices/workspaces/onlineEndpoints/score/action
Opcjonalnie możesz użyć wbudowanej roli Azure Machine Learning Workspace Connection Secrets Reader, aby uzyskać dostęp do tajemnic z połączeń obszaru roboczego. Obejmuje ona następujące akcje kontroli RBAC płaszczyzny sterowania:
Microsoft.MachineLearningServices/workspaces/connections/listsecrets/actionMicrosoft.MachineLearningServices/workspaces/metadata/secrets/read
Jeśli używasz tych wbudowanych ról, nie musisz podejmować żadnych działań w tym kroku.
(Opcjonalnie) Tworzenie roli niestandardowej
Ten krok można pominąć, jeśli używasz wbudowanych ról lub innych wstępnie utworzonych ról niestandardowych.
Zdefiniuj zakres i akcje dla ról niestandardowych, tworząc definicje JSON ról. Na przykład następująca definicja roli custom-role-for-control-plane.json umożliwia użytkownikowi wykonywanie operacji CRUD w online'owym punkcie końcowym w sprecyzowanym obszarze roboczym.
{ "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>" ] }Poniższa definicja roli ,custom-role-for-scoring.json, umożliwia użytkownikowi wysyłanie żądań oceniania do punktu końcowego online w określonym obszarze roboczym.
{ "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>" ] }Użyj definicji JSON, aby utworzyć role niestandardowe:
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>Uwaga
Aby utworzyć role niestandardowe, potrzebujesz jednej z trzech ról:
- Właściciel
- Administrator dostępu użytkowników
- Rola niestandardowa z
Microsoft.Authorization/roleDefinitions/writeuprawnieniem (aby utworzyć/zaktualizować/usunąć role niestandardowe) iMicrosoft.Authorization/roleDefinitions/readuprawnienie (aby wyświetlić role niestandardowe).
Aby uzyskać więcej informacji na temat tworzenia ról niestandardowych, zobacz Role niestandardowe platformy Azure.
Sprawdź definicję roli:
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 '"')`
Przypisywanie roli do tożsamości
Jeśli używasz wbudowanej roli, użyj następującego
AzureML Data Scientistkodu, aby przypisać rolę do tożsamości użytkownika.az role assignment create --assignee <identityID> --role "AzureML Data Scientist" --scope /subscriptions/<subscriptionID>/resourcegroups/<resourceGroupName>/providers/Microsoft.MachineLearningServices/workspaces/<workspaceName>Opcjonalnie, jeśli używasz wbudowanej roli, użyj następującego
Azure Machine Learning Workspace Connection Secrets Readerkodu, aby przypisać rolę do tożsamości użytkownika.az role assignment create --assignee <identityID> --role "Azure Machine Learning Workspace Connection Secrets Reader" --scope /subscriptions/<subscriptionID>/resourcegroups/<resourceGroupName>/providers/Microsoft.MachineLearningServices/workspaces/<workspaceName>Jeśli używasz roli niestandardowej, użyj następującego kodu, aby przypisać rolę do tożsamości użytkownika.
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>Uwaga
Aby przypisać role niestandardowe do tożsamości użytkownika, potrzebujesz jednej z trzech ról:
- Właściciel
- Administrator dostępu użytkowników
- Rola niestandardowa, która zezwala na uprawnienia
Microsoft.Authorization/roleAssignments/write(przypisywanie ról niestandardowych) iMicrosoft.Authorization/roleAssignments/read(wyświetlanie przypisań ról).
Aby uzyskać więcej informacji na temat ról platformy Azure i ich uprawnień, zobacz Role platformy Azure i Przypisywanie ról platformy Azure przy użyciu witryny Azure Portal.
Potwierdź przypisanie roli:
az role assignment list --scope /subscriptions/<subscriptionID>/resourcegroups/<resourceGroupName>/providers/Microsoft.MachineLearningServices/workspaces/<workspaceName>
Uzyskiwanie tokenu Microsoft Entra dla operacji płaszczyzny sterowania
Wykonaj ten krok, jeśli planujesz wykonywać operacje płaszczyzny sterowania przy użyciu interfejsu API REST, który bezpośrednio używa tokenu.
Jeśli planujesz używać innych metod, takich jak Azure CLI z wtyczką ml w wersji 2, zestaw Python SDK w wersji 2 lub Azure Machine Learning Studio, nie musisz ręcznie pobierać tokenu Microsoft Entra. Tożsamość użytkownika zostanie uwierzytelniona podczas logowania, a token zostanie automatycznie pobrany i przekazany.
Token Microsoft Entra do operacji w warstwie kontrolnej można pobrać z punktu końcowego zasobów Azure: https://management.azure.com.
Zaloguj się do Azure.
az loginJeśli chcesz użyć określonej tożsamości, użyj następującego kodu, aby zalogować się przy użyciu tożsamości:
az login --identity --username <identityID>Użyj tego kontekstu, aby uzyskać token:
export CONTROL_PLANE_TOKEN=`(az account get-access-token --resource https://management.azure.com --query accessToken | tr -d '"')`
(Opcjonalnie) Weryfikuj punkt końcowy zasobu i identyfikator klienta tokena Entra firmy Microsoft
Po pobraniu tokenu Microsoft Entra możesz sprawdzić, czy token jest odpowiedni dla punktu końcowego zasobu platformy Azure (management.azure.com) i odpowiedniego identyfikatora klienta, dekodując token za pośrednictwem jwt.ms, która zwraca odpowiedź JSON zawierającą następujące informacje:
{
"aud": "https://management.azure.com",
"oid": "<your-object-id>"
}
Tworzenie punktu końcowego
Poniższy przykład tworzy punkt końcowy z tożsamością przypisaną przez system jako tożsamość punktu końcowego. Tożsamość przypisana przez system jest domyślnym typem tożsamości zarządzanej dla punktów końcowych. Niektóre podstawowe role są automatycznie przypisywane dla tożsamości przypisanej przez system. Aby uzyskać więcej informacji na temat przypisywania roli dla tożsamości przypisanej przez system, zobacz Automatyczne przypisywanie roli dla tożsamości punktu końcowego.
Interfejs wiersza polecenia nie wymaga jawnego podania tokenu płaszczyzny sterowania. Zamiast tego polecenie interfejsu wiersza polecenia az login uwierzytelnia użytkownika podczas logowania, a token jest automatycznie pobierany i przekazywany.
Utwórz plik YAML definicji punktu końcowego o nazwie endpoint.yml:
$schema: https://azuremlschemas.azureedge.net/latest/managedOnlineEndpoint.schema.json name: my-endpoint auth_mode: aad_tokenMożesz ustawić
auth_modenakeydla uwierzytelniania klucza lubaml_tokendla uwierzytelniania tokenem Azure Machine Learning. W tym przykładzie użytoaad_tokendo uwierzytelniania tokenu Microsoft Entra.Utwórz punkt końcowy:
az ml online-endpoint create -f endpoint.ymlSprawdź stan punktu końcowego:
az ml online-endpoint show -n my-endpointJeśli chcesz przesłonić
auth_mode(na przykład doaad_token) podczas tworzenia punktu końcowego, uruchom następujący kod:az ml online-endpoint create -n my-endpoint --auth-mode aad_tokenJeśli chcesz zaktualizować istniejący punkt końcowy i określić
auth_mode(na przykład jakoaad_token), uruchom następujący kod:az ml online-endpoint update -n my-endpoint --set auth_mode=aad_token
Tworzenie wdrożenia
Aby utworzyć wdrożenie, zobacz Deploy a machine learning model with an online endpoint (Wdrażanie modelu uczenia maszynowego przy użyciu punktu końcowego online) lub Use REST to deploy a model as an online endpoint (Wdrażanie modelu uczenia maszynowego przy użyciu punktu końcowego online) lub Use REST to deploy a model as an online endpoint (Wdrażanie modelu jako punktu końcowego online). Nie ma różnicy w sposobie tworzenia wdrożeń dla różnych trybów uwierzytelniania.
Poniższy kod to przykład tworzenia wdrożenia. Aby uzyskać więcej informacji na temat wdrażania punktów końcowych online, zobacz Wdrażanie modelu uczenia maszynowego przy użyciu punktu końcowego online (za pośrednictwem interfejsu wiersza polecenia).
Utwórz plik YAML definicji wdrożenia o nazwie 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: 1Utwórz wdrożenie przy użyciu pliku YAML. W tym przykładzie ustaw cały ruch na nowe wdrożenie.
az ml online-deployment create -f blue-deployment.yml --all-traffic
Uzyskiwanie identyfikatora URI oceniania dla punktu końcowego
Jeśli używasz az ml online-endpoint invoke do wywołania punktu końcowego, CLI automatycznie rozwiązuje identyfikator URI oceniania, więc nie trzeba go pobierać ręcznie.
Jeśli jednak potrzebujesz identyfikatora URI oceniania do użycia z innymi narzędziami (takimi jak interfejs API REST lub niestandardowymi klientami HTTP), możesz pobrać go za pomocą następującego polecenia:
scoringUri=$(az ml online-endpoint show -n my-endpoint --query "scoring_uri")
Pobieranie klucza lub tokenu dla operacji płaszczyzny danych
Możesz użyć klucza lub tokenu dla operacji płaszczyzny danych, mimo że proces pobierania klucza lub tokenu jest operacją płaszczyzny sterowania. Innymi słowy, używasz tokenu płaszczyzny sterowania, aby uzyskać klucz lub token, którego później używasz do wykonywania operacji płaszczyzny danych.
Aby uzyskać klucz lub token usługi Azure Machine Learning, tożsamość użytkownika żądająca musi mieć przypisaną odpowiednią rolę, zgodnie z opisem w Autoryzacja dla operacji w płaszczyźnie sterowania. Tożsamość użytkownika nie wymaga żadnych dodatkowych ról, aby uzyskać token Entra firmy Microsoft.
Jeśli planujesz wywołać punkt końcowy przy użyciu interfejsu wiersza polecenia, nie musisz jawnie pobierać kluczy ani tokenu dla operacji płaszczyzny danych, ponieważ interfejs wiersza polecenia udostępnia go za Ciebie. Jednak nadal możesz użyć interfejsu wiersza polecenia, aby uzyskać klucze lub tokeny do operacji w płaszczyźnie danych, aby można było je używać z innymi kanałami, takimi jak interfejs API REST.
Aby uzyskać klucze lub token dla operacji płaszczyzny danych, użyj polecenia az ml online-endpoint get-credentials . To polecenie zwraca dane wyjściowe JSON zawierające klucze, token i/lub dodatkowe informacje.
Napiwek
W poniższym poleceniu --query parametr służy do wyodrębniania określonych informacji z danych wyjściowych JSON. Jednak w tym celu można użyć dowolnego odpowiedniego narzędzia.
auth_mode Gdy punkt końcowy jestkey
Klucze są zwracane w polach
primaryKeyisecondaryKey.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)
auth_mode Gdy punkt końcowy jestaml_token
Token jest zwracany w polu
accessToken.Czas wygaśnięcia tokenu
expiryTimeUtcjest zwracany w polu.Czas odświeżania tokenu
refreshAfterTimeUtcjest zwracany w polu.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)
auth_mode Gdy punkt końcowy jestaad_token
Token jest zwracany w polu
accessToken.Czas wygaśnięcia tokenu
expiryTimeUtcjest zwracany w polu.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)
Weryfikowanie punktu końcowego zasobu i identyfikatora klienta tokenu entra firmy Microsoft
Po otrzymaniu tokenu Entra możesz sprawdzić, czy token jest odpowiedni dla odpowiedniego punktu końcowego zasobu platformy Azure, ml.azure.comi odpowiedniego identyfikatora klienta, dekodując token za pośrednictwem jwt.ms, co zwraca odpowiedź JSON z następującymi informacjami:
{
"aud": "https://ml.azure.com",
"oid": "<your-object-id>"
}
Ocenianie danych przy użyciu klucza lub tokenu
Możesz użyć dla az ml online-endpoint invoke punktów końcowych z kluczem, tokenem usługi Azure Machine Learning lub tokenem firmy Microsoft Entra. Interfejs wiersza polecenia automatycznie udostępnia klucz lub token, więc nie trzeba go jawnie przekazywać.
az ml online-endpoint invoke -n my-endpoint -r request.json
Rejestrowanie i monitorowanie ruchu
Aby włączyć rejestrowanie ruchu w ustawieniach diagnostycznych punktu końcowego, wykonaj kroki opisane w artykule Włączanie dzienników.
Jeśli ustawienie diagnostyczne jest włączone, możesz wyświetlić tabelę AmlOnlineEndpointTrafficLogs , aby wyświetlić tryb uwierzytelniania i tożsamość użytkownika.