Toegang tot geheimen van onlineimplementatie met behulp van geheime injectie (preview)
VAN TOEPASSING OP:Azure CLI ml extension v2 (current)Python SDK azure-ai-ml v2 (current)
In dit artikel leert u hoe u geheime injectie gebruikt met een online-eindpunt en implementatie om toegang te krijgen tot geheimen uit een geheim archief.
U leert het volgende:
- Uw gebruikersidentiteit en de bijbehorende machtigingen instellen
- Werkruimteverbindingen en/of sleutelkluizen maken voor gebruik als geheime opslag
- Het eindpunt en de implementatie maken met behulp van de geheime injectiefunctie
Belangrijk
Deze functie is momenteel beschikbaar als openbare preview-versie. Deze preview-versie wordt geleverd zonder een service level agreement en we raden deze niet aan voor productieworkloads. Misschien worden bepaalde functies niet ondersteund of zijn de mogelijkheden ervan beperkt.
Zie Aanvullende gebruiksvoorwaarden voor Microsoft Azure-previews voor meer informatie.
Vereisten
Als u Azure Machine Learning wilt gebruiken, moet u een Azure-abonnement hebben. Als u geen Azure-abonnement hebt, maakt u een gratis account voordat u begint. Probeer vandaag nog de gratis of betaalde versie van Azure Machine Learning.
Installeer en configureer de Azure Machine Learning CLI-extensie (v2) of de Azure Machine Learning Python SDK (v2).
Een Azure-resourcegroep waarin u (of de service-principal die u gebruikt) toegang moet hebben en
Contributor
er toegang toe moet hebbenUser Access Administrator
. U hebt zo'n resourcegroep als u uw Azure Machine Learning-extensie hebt geconfigureerd zoals eerder vermeld.Een Azure Machine Learning-werkruimte. U hebt een werkruimte als u uw Azure Machine Learning-extensie hebt geconfigureerd zoals eerder is aangegeven.
Elk getraind machine learning-model dat gereed is voor scoren en implementatie.
Een geheim archief kiezen
U kunt ervoor kiezen om uw geheimen (zoals API-sleutels) op te slaan met behulp van:
- Werkruimteverbindingen onder de werkruimte: Als u dit type geheimarchief gebruikt, kunt u later toestemming verlenen aan de eindpuntidentiteit (tijdens het maken van eindpunten) om geheimen automatisch te lezen van werkruimteverbindingen, mits aan bepaalde voorwaarden wordt voldaan. Zie het tabblad Door het systeem toegewezen identiteit in de sectie Een eindpunt maken voor meer informatie.
- Sleutelkluizen die niet noodzakelijkerwijs onder de werkruimte staan: als u dit type geheimarchief gebruikt, wordt de eindpuntidentiteit niet automatisch gemachtigd om geheimen uit de sleutelkluizen te lezen. Als u daarom een beheerde sleutelkluisservice zoals Microsoft Azure Key Vault wilt gebruiken als geheimarchief, moet u later een juiste rol toewijzen.
Werkruimteverbinding gebruiken als een geheim archief
U kunt werkruimteverbindingen maken die u in uw implementatie kunt gebruiken. U kunt bijvoorbeeld een verbinding maken met De Microsoft Azure OpenAI-service met behulp van werkruimteverbindingen - REST API maken.
U kunt ook een aangepaste verbinding maken met behulp van Azure Machine Learning-studio (zie Een aangepaste verbinding maken voor promptstroom) of Azure AI Studio (zie Een aangepaste verbinding maken in AI Studio).
Een Azure OpenAI-verbinding maken:
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" } } }
U kunt ook een aangepaste verbinding maken:
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", } } }
Controleer of de gebruikersidentiteit de geheimen van de werkruimteverbinding kan lezen met behulp van werkruimteverbindingen - List Secrets REST API (preview).
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}}
Notitie
De vorige codefragmenten gebruiken een token in de Authorization
header bij het maken van REST API-aanroepen. U kunt het token ophalen door uit te voeren az account get-access-token
. Zie Een toegangstoken ophalen voor meer informatie over het ophalen van een token.
(Optioneel) Azure Key Vault gebruiken als een geheim archief
Maak de sleutelkluis en stel een geheim in voor gebruik in uw implementatie. Zie Een geheim instellen en ophalen uit Azure Key Vault met behulp van Azure CLI voor meer informatie over het maken van de sleutelkluis. En,
- az keyvault CLI and Set Secret REST API laat zien hoe u een geheim instelt.
- az keyvault secret show CLI and Get Secret Versions REST API show how to retrieve a secret version.
Een Azure Key Vault maken:
az keyvault create --name mykeyvault --resource-group myrg --location eastus
Een geheim maken:
az keyvault secret set --vault-name mykeyvault --name secret1 --value <value>
Met deze opdracht wordt de geheime versie geretourneerd die wordt gemaakt. U kunt de
id
eigenschap van het antwoord controleren om de geheime versie op te halen. Het geretourneerde antwoord ziet er als volgthttps://mykeyvault.vault.azure.net/secrets/<secret_name>/<secret_version>
uit.Controleer of de gebruikersidentiteit het geheim uit de sleutelkluis kan lezen:
az keyvault secret show --vault-name mykeyvault --name secret1 --version <secret_version>
Belangrijk
Als u de sleutelkluis gebruikt als een geheim archief voor geheime injectie, moet u het machtigingsmodel van de sleutelkluis configureren als op rollen gebaseerd toegangsbeheer van Azure (RBAC). Zie Azure RBAC versus toegangsbeleid voor Key Vault voor meer informatie.
Een gebruikersidentiteit kiezen
Kies de gebruikersidentiteit die u gaat gebruiken om het online-eindpunt en de onlineimplementatie te maken. Deze gebruikersidentiteit kan een gebruikersaccount, een service-principal-account of een beheerde identiteit in Microsoft Entra-id zijn. Volg de stappen in Verificatie instellen voor Azure Machine Learning-resources en -werkstromen om de gebruikersidentiteit in te stellen.
(Optioneel) Een rol toewijzen aan de gebruikersidentiteit
Als uw gebruikersidentiteit wil dat de door het eindpunt toegewezen identiteit (SAI) automatisch wordt gemachtigd om geheimen van werkruimteverbindingen te lezen, moet de gebruikersidentiteit de
Azure Machine Learning Workspace Connection Secrets Reader
rol (of hoger) hebben voor het bereik van de werkruimte.Een beheerder met de
Microsoft.Authorization/roleAssignments/write
machtiging kan een CLI-opdracht uitvoeren om de rol toe te wijzen aan de gebruikersidentiteit:az role assignment create --assignee <UserIdentityID> --role "Azure Machine Learning Workspace Connection Secrets Reader" --scope /subscriptions/<subscriptionId>/resourcegroups/<resourceGroupName>/providers/Microsoft.MachineLearningServices/workspaces/<workspaceName>
Notitie
Aan de door het eindpunt toegewezen identiteit (SAI) wordt niet automatisch toestemming verleend voor het lezen van geheimen uit sleutelkluizen. Daarom hoeft de gebruikersidentiteit geen rol voor de Sleutelkluis toe te wijzen.
Als u een door de gebruiker toegewezen identiteit (UAI) voor het eindpunt wilt gebruiken, hoeft u de rol niet toe te wijzen aan uw gebruikersidentiteit. Als u de functie voor geheime injectie wilt gebruiken, moet u de rol handmatig toewijzen aan de UAI van het eindpunt.
Een beheerder met de
Microsoft.Authorization/roleAssignments/write
machtiging kan de volgende opdrachten uitvoeren om de rol toe te wijzen aan de eindpuntidentiteit:Voor werkruimteverbindingen:
az role assignment create --assignee <EndpointIdentityID> --role "Azure Machine Learning Workspace Connection Secrets Reader" --scope /subscriptions/<subscriptionId>/resourcegroups/<resourceGroupName>/providers/Microsoft.MachineLearningServices/workspaces/<workspaceName>
Voor sleutelkluizen:
az role assignment create --assignee <EndpointIdentityID> --role "Key Vault Secrets User" --scope /subscriptions/<subscriptionId>/resourcegroups/<resourceGroupName>/providers/Microsoft.KeyVault/vaults/<vaultName>
Controleer of aan een identiteit (een gebruikersidentiteit of eindpuntidentiteit) de rol is toegewezen door naar de resource in Azure Portal te gaan. Bijvoorbeeld in de Azure Machine Learning-werkruimte of de Key Vault:
- Selecteer het tabblad Toegangsbeheer (IAM).
- Selecteer de knop Toegang controleren en zoek de identiteit.
- Controleer of de juiste rol wordt weergegeven op het tabblad Huidige roltoewijzingen .
Een eindpunt maken
Als u een door het systeem toegewezen identiteit (SAI) als eindpuntidentiteit gebruikt, geeft u op of u toegang tot standaardgeheimarchieven (namelijk werkruimteverbindingen onder de werkruimte) wilt afdwingen naar de eindpuntidentiteit.
Maak een
endpoint.yaml
-bestand:$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
Maak het eindpunt met behulp van het
endpoint.yaml
bestand:az ml online-endpoint create -f endpoint.yaml
Als u de eigenschap in de identity
eindpuntdefinitie niet opgeeft, gebruikt het eindpunt standaard een SAI.
Als aan de volgende voorwaarden wordt voldaan, krijgt de eindpuntidentiteit automatisch de Azure Machine Learning Workspace Connection Secrets Reader
rol (of hoger) voor het bereik van de werkruimte:
- De gebruikersidentiteit waarmee het eindpunt wordt gemaakt, heeft de machtiging om geheimen van werkruimteverbindingen (
Microsoft.MachineLearningServices/workspaces/connections/listsecrets/action
) te lezen. - Het eindpunt maakt gebruik van een SAI.
- Het eindpunt wordt gedefinieerd met een vlag voor het afdwingen van toegang tot standaardgeheimarchieven (werkruimteverbindingen onder de huidige werkruimte) bij het maken van het eindpunt.
De eindpuntidentiteit krijgt niet automatisch een rol om geheimen uit de Key Vault te lezen. Als u key vault wilt gebruiken als een geheim archief, moet u handmatig een juiste rol toewijzen, zoals Key Vault Secrets User
de eindpuntidentiteit op het bereik van de Key Vault. Zie ingebouwde Azure-rollen voor Key Vault-gegevensvlakbewerkingen voor meer informatie over rollen.
Een implementatie maken
Ontwerp een scorescript of Dockerfile en de gerelateerde scripts, zodat de implementatie de geheimen kan gebruiken via omgevingsvariabelen.
U hoeft de API's voor het ophalen van geheimen niet aan te roepen voor de werkruimteverbindingen of sleutelkluizen. De omgevingsvariabelen worden gevuld met de geheimen wanneer de gebruikerscontainer in de implementatie wordt gestart.
De waarde die wordt geïnjecteerd in een omgevingsvariabele kan een van de drie typen zijn:
- Het volledige antwoord van de List Secrets API (preview). U moet de API-antwoordstructuur begrijpen, deze parseren en gebruiken in uw gebruikerscontainer.
- Afzonderlijke geheimen of metagegevens van de werkruimteverbinding. U kunt deze gebruiken zonder inzicht te krijgen in de antwoordstructuur van de api voor de werkruimteverbinding.
- Afzonderlijke geheime versie van Key Vault. U kunt deze gebruiken zonder inzicht te krijgen in de antwoordstructuur van de Key Vault-API.
Start het maken van de implementatie met behulp van het scorescript (als u een aangepast model gebruikt) of een Dockerfile (als u de BYOC-benadering voor implementatie gebruikt). Geef omgevingsvariabelen op die de gebruiker verwacht in de gebruikerscontainer.
Als de waarden die zijn toegewezen aan de omgevingsvariabelen bepaalde patronen volgen, wordt de eindpuntidentiteit gebruikt om geheim ophalen en injectie uit te voeren.
Patroon Gedrag ${{azureml://connections/<connection_name>}}
Het volledige antwoord list secrets-API (preview) wordt opgenomen in de omgevingsvariabele. ${{azureml://connections/<connection_name>/credentials/<credential_name>}}
De waarde van de referentie wordt geïnjecteerd in de omgevingsvariabele. ${{azureml://connections/<connection_name>/metadata/<metadata_name>}}
De waarde van de metagegevens wordt geïnjecteerd in de omgevingsvariabele. ${{azureml://connections/<connection_name>/target}}
De waarde van het doel (indien van toepassing) wordt geïnjecteerd in de omgevingsvariabele. ${{keyvault:https://<keyvault_name>.vault.azure.net/secrets/<secret_name>/<secret_version>}}
De waarde van de geheime versie wordt geïnjecteerd in de omgevingsvariabele. Voorbeeld:
Maken
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}}
De implementatie maken:
az ml online-deployment create -f deployment.yaml
Als de enforce_access_to_default_secret_stores
vlag is ingesteld voor het eindpunt, wordt de machtiging van de gebruikersidentiteit voor het lezen van geheimen van werkruimteverbindingen gecontroleerd tijdens het maken van eindpunten en het maken van de implementatie. Als de gebruikersidentiteit niet over de machtiging beschikt, mislukt het maken.
Als tijdens het maken van de implementatie een omgevingsvariabele is toegewezen aan een waarde die de patronen in de vorige tabel volgt, worden geheime ophaal- en injecties uitgevoerd met de eindpuntidentiteit (een SAI of een UAI). Als de eindpuntidentiteit niet gemachtigd is om geheimen te lezen uit aangewezen geheime archieven (werkruimteverbindingen of sleutelkluizen), mislukt het maken van de implementatie. Als de opgegeven geheime verwijzing niet bestaat in de geheime archieven, mislukt het maken van de implementatie.
Zie Fouten bij geheiminjectie voor meer informatie over fouten die kunnen optreden tijdens de implementatie van Online-eindpunten van Azure Machine Learning.
De geheimen gebruiken
U kunt de geheimen gebruiken door ze op te halen uit de omgevingsvariabelen in de gebruikerscontainer die wordt uitgevoerd in uw implementaties.