Uwaga
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
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 dowiesz się, jak używać iniekcji wpisów tajnych z punktem końcowym online i wdrożeniem w celu uzyskania dostępu do wpisów tajnych z magazynu wpisów tajnych.
Dowiesz się, jak wykonywać następujące czynności:
- Konfigurowanie tożsamości użytkownika i jej uprawnień
- Tworzenie połączeń obszaru roboczego i/lub magazynów kluczy do użycia jako magazynów wpisów tajnych
- Tworzenie punktu końcowego i wdrożenia przy użyciu funkcji wstrzykiwania wpisu tajnego
Ważne
Ta funkcja jest obecnie w publicznej wersji zapoznawczej. Ta wersja zapoznawcza jest udostępniana bez umowy dotyczącej poziomu usług i nie zalecamy korzystania z niej w przypadku obciążeń produkcyjnych. Niektóre funkcje mogą być nieobsługiwane lub ograniczone.
Aby uzyskać więcej informacji, zobacz Uzupełniające warunki korzystania z wersji zapoznawczych platformy Microsoft Azure.
Wymagania wstępne
Aby korzystać z usługi Azure Machine Learning, musisz mieć subskrypcję platformy Azure. Jeśli nie masz subskrypcji platformy Azure, przed rozpoczęciem utwórz bezpłatne konto. Wypróbuj bezpłatną lub płatną wersję usługi Azure Machine Learning już dziś.
Zainstaluj i skonfiguruj rozszerzenie interfejsu wiersza polecenia usługi Azure Machine Learning (wersja 2) lub zestaw SDK języka Python usługi Azure Machine Learning (wersja 2).
Grupa zasobów platformy Azure, w której (lub używana jednostka usługi) musi mieć
User Access Administrator
dostęp iContributor
mieć do nich dostęp. Jeśli skonfigurowano rozszerzenie usługi Azure Machine Learning, musisz mieć taką grupę zasobów, jak określono wcześniej.Obszar roboczy usługi Azure Machine Learning. Jeśli skonfigurowano rozszerzenie usługi Azure Machine Learning zgodnie z wcześniejszym opisem, będziesz mieć obszar roboczy.
Każdy wytrenowany model uczenia maszynowego jest gotowy do oceniania i wdrażania.
Wybieranie magazynu wpisów tajnych
Możesz wybrać przechowywanie wpisów tajnych (takich jak klucze interfejsu API) przy użyciu jednego z następujących elementów:
- Połączenia obszaru roboczego w obszarze roboczym: jeśli używasz tego rodzaju magazynu wpisów tajnych, możesz później udzielić uprawnień tożsamości punktu końcowego (w czasie tworzenia punktu końcowego) do automatycznego odczytywania wpisów tajnych z połączeń obszaru roboczego, pod warunkiem spełnienia określonych warunków. Aby uzyskać więcej informacji, zobacz kartę Tożsamość przypisana przez system w sekcji Tworzenie punktu końcowego .
- Magazyny kluczy, które nie muszą znajdować się w obszarze roboczym: jeśli używasz tego rodzaju magazynu wpisów tajnych, tożsamość punktu końcowego nie zostanie udzielona uprawnienia do automatycznego odczytywania wpisów tajnych z magazynów kluczy. W związku z tym, jeśli chcesz użyć usługi zarządzanego magazynu kluczy, takiej jak microsoft Azure Key Vault jako magazyn wpisów tajnych, musisz później przypisać odpowiednią rolę.
Używanie połączenia obszaru roboczego jako magazynu wpisów tajnych
Możesz utworzyć połączenia obszaru roboczego do użycia we wdrożeniu. Możesz na przykład utworzyć połączenie z usługą Microsoft Azure OpenAI przy użyciu połączeń obszaru roboczego — tworzenie interfejsu API REST.
Alternatywnie możesz utworzyć połączenie niestandardowe przy użyciu usługi Azure Machine Learning Studio (zobacz Jak utworzyć niestandardowe połączenie dla przepływu monitów) lub rozwiązania Azure AI Foundry (zobacz Jak utworzyć połączenie niestandardowe w portalu azure AI Foundry).
Utwórz połączenie usługi Azure OpenAI:
PUT https://management.azure.com/subscriptions/{{subscriptionId}}/resourceGroups/{{resourceGroupName}}/providers/Microsoft.MachineLearningServices/workspaces/{{workspaceName}}/connections/{{connectionName}}?api-version=2023-08-01-preview Authorization: Bearer {{token}} Content-Type: application/json { "properties": { "authType": "ApiKey", "category": "AzureOpenAI", "credentials": { "key": "<key>", "endpoint": "https://<name>.openai.azure.com/", }, "expiryTime": null, "target": "https://<name>.openai.azure.com/", "isSharedToAll": false, "sharedUserList": [], "metadata": { "ApiType": "Azure" } } }
Alternatywnie możesz utworzyć połączenie niestandardowe:
PUT https://management.azure.com/subscriptions/{{subscriptionId}}/resourceGroups/{{resourceGroupName}}/providers/Microsoft.MachineLearningServices/workspaces/{{workspaceName}}/connections/{{connectionName}}?api-version=2023-08-01-preview Authorization: Bearer {{token}} Content-Type: application/json { "properties": { "authType": "CustomKeys", "category": "CustomKeys", "credentials": { "keys": { "OPENAI_API_KEY": "<key>", "SPEECH_API_KEY": "<key>" } }, "expiryTime": null, "target": "_", "isSharedToAll": false, "sharedUserList": [], "metadata": { "OPENAI_API_BASE": "<oai endpoint>", "OPENAI_API_VERSION": "<oai version>", "OPENAI_API_TYPE": "azure", "SPEECH_REGION": "eastus", } } }
Sprawdź, czy tożsamość użytkownika może odczytywać wpisy tajne z połączenia obszaru roboczego przy użyciu połączeń obszaru roboczego — wyświetlanie listy wpisów tajnych interfejsu API REST (wersja zapoznawcza).
POST https://management.azure.com/subscriptions/{{subscriptionId}}/resourceGroups/{{resourceGroupName}}/providers/Microsoft.MachineLearningServices/workspaces/{{workspaceName}}/connections/{{connectionName}}/listsecrets?api-version=2023-08-01-preview Authorization: Bearer {{token}}
Uwaga
Poprzednie fragmenty kodu używają tokenu w nagłówku podczas wykonywania wywołań interfejsu Authorization
API REST. Token można uzyskać, uruchamiając polecenie az account get-access-token
. Aby uzyskać więcej informacji na temat uzyskiwania tokenu, zobacz Uzyskiwanie tokenu dostępu.
(Opcjonalnie) Używanie usługi Azure Key Vault jako magazynu wpisów tajnych
Utwórz magazyn kluczy i ustaw wpis tajny do użycia we wdrożeniu. Aby uzyskać więcej informacji na temat tworzenia magazynu kluczy, zobacz Set and retrieve a secret from Azure Key Vault using Azure CLI (Ustawianie i pobieranie wpisu tajnego z usługi Azure Key Vault przy użyciu interfejsu wiersza polecenia platformy Azure). Ponadto
- az keyvault CLI i Set Secret REST API pokazują, jak ustawić wpis tajny.
- az keyvault secret show CLI i Get Secret Versions REST API pokazują, jak pobrać wersję wpisu tajnego.
Tworzenie usługi Azure Key Vault:
az keyvault create --name mykeyvault --resource-group myrg --location eastus
Utwórz wpis tajny:
az keyvault secret set --vault-name mykeyvault --name secret1 --value <value>
To polecenie zwraca wersję wpisu tajnego, która zostanie utworzona. Możesz sprawdzić
id
właściwość odpowiedzi, aby uzyskać wersję wpisu tajnego. Zwrócona odpowiedź wygląda następująco:https://mykeyvault.vault.azure.net/secrets/<secret_name>/<secret_version>
.Sprawdź, czy tożsamość użytkownika może odczytać wpis tajny z magazynu kluczy:
az keyvault secret show --vault-name mykeyvault --name secret1 --version <secret_version>
Ważne
Jeśli używasz magazynu kluczy jako magazynu kluczy do wstrzykiwania wpisów tajnych, musisz skonfigurować model uprawnień magazynu kluczy jako kontrolę dostępu opartą na rolach (RBAC) platformy Azure. Aby uzyskać więcej informacji, zobacz Azure RBAC vs. access policy for Key Vault (Kontrola dostępu na podstawie ról platformy Azure i zasady dostępu dla usługi Key Vault).
Wybieranie tożsamości użytkownika
Wybierz tożsamość użytkownika, której użyjesz do utworzenia punktu końcowego online i wdrożenia online. Ta tożsamość użytkownika może być kontem użytkownika, kontem jednostki usługi lub tożsamością zarządzaną w usłudze Microsoft Entra ID. Aby skonfigurować tożsamość użytkownika, wykonaj kroki opisane w temacie Konfigurowanie uwierzytelniania dla zasobów i przepływów pracy usługi Azure Machine Learning.
(Opcjonalnie) Przypisywanie roli do tożsamości użytkownika
Jeśli tożsamość użytkownika chce, aby tożsamość przypisanej przez system punktu końcowego (SAI) została automatycznie udzielona uprawnienia do odczytu wpisów tajnych z połączeń obszaru roboczego, tożsamość użytkownika musi mieć
Azure Machine Learning Workspace Connection Secrets Reader
rolę (lub większą) w zakresie obszaru roboczego.Administrator, który ma
Microsoft.Authorization/roleAssignments/write
uprawnienia, może uruchomić polecenie interfejsu wiersza polecenia, aby przypisać rolę do tożsamości użytkownika:az role assignment create --assignee <UserIdentityID> --role "Azure Machine Learning Workspace Connection Secrets Reader" --scope /subscriptions/<subscriptionId>/resourcegroups/<resourceGroupName>/providers/Microsoft.MachineLearningServices/workspaces/<workspaceName>
Uwaga
Tożsamość przypisana przez system punktu końcowego (SAI) nie zostanie automatycznie udzielona uprawnienia do odczytywania wpisów tajnych z magazynów kluczy. W związku z tym tożsamość użytkownika nie musi mieć przypisanej roli dla usługi Key Vault.
Jeśli chcesz użyć tożsamości przypisanej przez użytkownika dla punktu końcowego, nie musisz przypisywać roli do tożsamości użytkownika. Zamiast tego, jeśli zamierzasz użyć funkcji wstrzykiwania wpisów tajnych, musisz ręcznie przypisać rolę do interfejsu użytkownika punktu końcowego.
Administrator, który ma
Microsoft.Authorization/roleAssignments/write
uprawnienia, może uruchomić następujące polecenia, aby przypisać rolę do tożsamości punktu końcowego:W przypadku połączeń obszaru roboczego:
az role assignment create --assignee <EndpointIdentityID> --role "Azure Machine Learning Workspace Connection Secrets Reader" --scope /subscriptions/<subscriptionId>/resourcegroups/<resourceGroupName>/providers/Microsoft.MachineLearningServices/workspaces/<workspaceName>
W przypadku magazynów kluczy:
az role assignment create --assignee <EndpointIdentityID> --role "Key Vault Secrets User" --scope /subscriptions/<subscriptionId>/resourcegroups/<resourceGroupName>/providers/Microsoft.KeyVault/vaults/<vaultName>
Sprawdź, czy tożsamość (tożsamość użytkownika lub tożsamość punktu końcowego) ma przypisaną rolę, przechodząc do zasobu w witrynie Azure Portal. Na przykład w obszarze roboczym usługi Azure Machine Learning lub usłudze Key Vault:
- Wybierz kartę Kontrola dostępu (IAM).
- Wybierz przycisk Sprawdź dostęp i znajdź tożsamość.
- Sprawdź, czy właściwa rola jest wyświetlana na karcie Bieżące przypisania ról.
Tworzenie punktu końcowego
Jeśli używasz tożsamości przypisanej przez system (SAI) jako tożsamości punktu końcowego, określ, czy chcesz wymusić dostęp do domyślnych magazynów wpisów tajnych (a mianowicie połączeń obszaru roboczego w obszarze roboczym) z tożsamością punktu końcowego.
Utwórz plik
endpoint.yaml
:$schema: https://azuremlschemas.azureedge.net/latest/managedOnlineEndpoint.schema.json name: my-endpoint auth_mode: key properties: enforce_access_to_default_secret_stores: enabled # default: disabled
Utwórz punkt końcowy przy użyciu
endpoint.yaml
pliku :az ml online-endpoint create -f endpoint.yaml
Jeśli nie określisz identity
właściwości w definicji punktu końcowego, punkt końcowy będzie domyślnie używać sai.
Jeśli zostaną spełnione następujące warunki, tożsamość punktu końcowego zostanie automatycznie udzielona Azure Machine Learning Workspace Connection Secrets Reader
roli (lub wyższej) w zakresie obszaru roboczego:
- Tożsamość użytkownika, która tworzy punkt końcowy, ma uprawnienia do odczytywania wpisów tajnych z połączeń obszaru roboczego (
Microsoft.MachineLearningServices/workspaces/connections/listsecrets/action
). - Punkt końcowy używa sai.
- Punkt końcowy jest definiowany za pomocą flagi wymuszania dostępu do domyślnych magazynów wpisów tajnych (połączeń obszaru roboczego w bieżącym obszarze roboczym) podczas tworzenia punktu końcowego.
Tożsamość punktu końcowego nie zostanie automatycznie udzielona roli do odczytywania wpisów tajnych z usługi Key Vault. Jeśli chcesz użyć usługi Key Vault jako magazynu wpisów tajnych, musisz ręcznie przypisać odpowiednią rolę, taką jak Key Vault Secrets User
do tożsamości punktu końcowego w zakresie usługi Key Vault. Aby uzyskać więcej informacji na temat ról, zobacz Role wbudowane platformy Azure dla operacji płaszczyzny danych usługi Key Vault.
Tworzenie wdrożenia
Utwórz skrypt oceniania lub plik Dockerfile i powiązane skrypty, aby wdrożenie może korzystać z wpisów tajnych za pośrednictwem zmiennych środowiskowych.
Nie ma potrzeby wywoływania interfejsów API pobierania wpisów tajnych dla połączeń obszaru roboczego lub magazynów kluczy. Zmienne środowiskowe są wypełniane wpisami tajnymi podczas inicjowania kontenera użytkownika we wdrożeniu.
Wartość, która zostanie wstrzyknięta do zmiennej środowiskowej, może być jednym z trzech typów:
- Cała odpowiedź interfejsu API wpisów tajnych listy (wersja zapoznawcza). Musisz poznać strukturę odpowiedzi interfejsu API, przeanalizować ją i użyć jej w kontenerze użytkownika.
- Pojedynczy wpis tajny lub metadane z połączenia obszaru roboczego. Można go używać bez znajomości struktury odpowiedzi interfejsu API połączenia obszaru roboczego.
- Pojedyncza wersja wpisu tajnego z usługi Key Vault. Można go używać bez znajomości struktury odpowiedzi interfejsu API usługi Key Vault.
Zainicjuj tworzenie wdrożenia przy użyciu skryptu oceniania (jeśli używasz modelu niestandardowego) lub pliku Dockerfile (jeśli zastosujesz podejście BYOC do wdrożenia). Określ zmienne środowiskowe oczekiwane przez użytkownika w kontenerze użytkownika.
Jeśli wartości mapowane na zmienne środowiskowe są zgodne z określonymi wzorcami, tożsamość punktu końcowego zostanie użyta do wykonania pobierania i iniekcji wpisu tajnego.
Wzorzec Zachowanie ${{azureml://connections/<connection_name>}}
Cała odpowiedź interfejsu API wpisów tajnych listy (wersja zapoznawcza) jest wprowadzana do zmiennej środowiskowej. ${{azureml://connections/<connection_name>/credentials/<credential_name>}}
Wartość poświadczeń jest wstrzykiwana do zmiennej środowiskowej. ${{azureml://connections/<connection_name>/metadata/<metadata_name>}}
Wartość metadanych jest wstrzykiwana do zmiennej środowiskowej. ${{azureml://connections/<connection_name>/target}}
Wartość elementu docelowego (jeśli ma zastosowanie) jest wstrzykiwana do zmiennej środowiskowej. ${{keyvault:https://<keyvault_name>.vault.azure.net/secrets/<secret_name>/<secret_version>}}
Wartość wersji wpisu tajnego jest wstrzykiwana do zmiennej środowiskowej. Na przykład:
Utwórz
deployment.yaml
:$schema: https://azuremlschemas.azureedge.net/latest/managedOnlineDeployment.schema.json name: blue endpoint_name: my-endpoint #… environment_variables: AOAI_CONNECTION: ${{azureml://connections/aoai_connection}} LANGCHAIN_CONNECTION: ${{azureml://connections/multi_connection_langchain}} OPENAI_KEY: ${{azureml://connections/multi_connection_langchain/credentials/OPENAI_API_KEY}} OPENAI_VERSION: ${{azureml://connections/multi_connection_langchain/metadata/OPENAI_API_VERSION}} USER_SECRET_KV1_KEY: ${{keyvault:https://mykeyvault.vault.azure.net/secrets/secret1/secretversion1}}
Utwórz wdrożenie:
az ml online-deployment create -f deployment.yaml
Jeśli flaga enforce_access_to_default_secret_stores
została ustawiona dla punktu końcowego, uprawnienia tożsamości użytkownika do odczytu wpisów tajnych z połączeń obszaru roboczego będą sprawdzane zarówno podczas tworzenia punktu końcowego, jak i tworzenia wdrożenia. Jeśli tożsamość użytkownika nie ma uprawnień, tworzenie zakończy się niepowodzeniem.
W czasie tworzenia wdrożenia, jeśli jakakolwiek zmienna środowiskowa jest mapowana na wartość zgodną z wzorcami w poprzedniej tabeli, pobieranie wpisów tajnych i iniekcja będą wykonywane z tożsamością punktu końcowego (SAI lub UAI). Jeśli tożsamość punktu końcowego nie ma uprawnień do odczytu wpisów tajnych z wyznaczonych magazynów wpisów tajnych (połączeń obszaru roboczego lub magazynów kluczy), tworzenie wdrożenia zakończy się niepowodzeniem. Ponadto jeśli określone odwołanie do wpisu tajnego nie istnieje w magazynach wpisów tajnych, tworzenie wdrożenia zakończy się niepowodzeniem.
Aby uzyskać więcej informacji na temat błędów, które mogą wystąpić podczas wdrażania punktów końcowych online usługi Azure Machine Learning, zobacz Błędy iniekcji wpisów tajnych.
Korzystanie z wpisów tajnych
Wpisy tajne można używać, pobierając je ze zmiennych środowiskowych w kontenerze użytkownika uruchomionym we wdrożeniach.