Geheime injectie in online-eindpunten (preview)

VAN TOEPASSING OP:Azure CLI ml extension v2 (current)Python SDK azure-ai-ml v2 (current)

Geheime injectie in de context van een online-eindpunt is een proces voor het ophalen van geheimen (zoals API-sleutels) uit geheime archieven en het injecteren ervan in uw gebruikerscontainer die wordt uitgevoerd binnen een online-implementatie. Geheimen worden uiteindelijk veilig geopend via omgevingsvariabelen, die worden gebruikt door de deductieserver die uw scorescript uitvoert of door de deductiestack die u meebrengt met een BYOC-implementatiebenadering (Bring Your Own Container).

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.

Probleemformulering

Wanneer u een online-implementatie maakt, wilt u mogelijk geheimen gebruiken vanuit de implementatie voor toegang tot externe services. Enkele van deze externe services zijn Microsoft Azure OpenAI-service, Azure AI Services en Azure AI Content Safety.

Als u de geheimen wilt gebruiken, moet u een manier vinden om ze veilig door te geven aan uw gebruikerscontainer die in de implementatie wordt uitgevoerd. We raden u niet aan geheimen op te nemen als onderdeel van de implementatiedefinitie, omdat in deze praktijk de geheimen in de implementatiedefinitie worden weergegeven.

Een betere aanpak is het opslaan van de geheimen in geheime archieven en deze vervolgens veilig op te halen vanuit de implementatie. Deze aanpak vormt echter een eigen uitdaging: hoe de implementatie zichzelf moet verifiëren bij de geheime archieven om geheimen op te halen. Omdat de online-implementatie uw gebruikerscontainer uitvoert met behulp van de eindpuntidentiteit, een beheerde identiteit, kunt u Azure RBAC gebruiken om de machtigingen van de eindpuntidentiteit te beheren en het eindpunt toe te staan geheimen op te halen uit de geheime archieven. Als u deze methode gebruikt, moet u de volgende taken uitvoeren:

  • Wijs de juiste rollen toe aan de eindpuntidentiteit, zodat deze geheimen uit de geheime archieven kan lezen.
  • Implementeer de scorelogica voor de implementatie, zodat de beheerde identiteit van het eindpunt wordt gebruikt om de geheimen op te halen uit de geheime archieven.

Hoewel deze benadering van het gebruik van een beheerde identiteit een veilige manier is om geheimen op te halen en in te voeren, vereenvoudigt de geheime injectiefunctie het proces van het ophalen van geheimen voor werkruimteverbindingen en sleutelkluizen.

Beheerde identiteit die is gekoppeld aan het eindpunt

Met een onlineimplementatie wordt uw gebruikerscontainer uitgevoerd met de beheerde identiteit die is gekoppeld aan het eindpunt. Deze beheerde identiteit, de eindpuntidentiteit genoemd, is een Microsoft Entra-id die ondersteuning biedt voor Azure RBAC. Daarom kunt u Azure-rollen toewijzen aan de identiteit om machtigingen te beheren die nodig zijn om bewerkingen uit te voeren. De eindpuntidentiteit kan een door het systeem toegewezen identiteit (SAI) of een door de gebruiker toegewezen identiteit (UAI) zijn. U kunt bepalen welke van deze soorten identiteiten u wilt gebruiken wanneer u het eindpunt maakt.

  • Voor een door het systeem toegewezen identiteit wordt de identiteit automatisch gemaakt wanneer u het eindpunt maakt en worden rollen met fundamentele machtigingen (zoals de pull-machtiging van Azure Container Registry en de gegevenslezer van de opslagblob) automatisch toegewezen.
  • Voor een door de gebruiker toegewezen identiteit moet u eerst de identiteit maken en deze vervolgens koppelen aan het eindpunt wanneer u het eindpunt maakt. U bent ook verantwoordelijk voor het toewijzen van de juiste rollen aan de UAI, indien nodig.

Voor meer informatie over het gebruik van beheerde identiteiten van een eindpunt raadpleegt u Hoe u toegang krijgt tot resources van eindpunten met beheerde identiteiten en het voorbeeld voor het gebruik van beheerde identiteiten om te communiceren met externe services.

Roltoewijzing aan de eindpuntidentiteit

De volgende rollen zijn vereist voor de geheime archieven:

  • Voor geheimen die zijn opgeslagen in werkruimteverbindingen onder uw werkruimte: Workspace Connections biedt een List Secrets-API (preview) waarvoor de identiteit die de API aanroept, moet worden Azure Machine Learning Workspace Connection Secrets Reader toegewezen aan de identiteit.
  • Voor geheimen die zijn opgeslagen in een externe Microsoft Azure Key Vault: Key Vault biedt een API voor get secret versions waarvoor de identiteit die de API aanroept, Key Vault Secrets User moet worden toegewezen aan de identiteit.

Implementatie van geheime injectie

Zodra geheimen (zoals API-sleutels) zijn opgehaald uit geheime archieven, zijn er twee manieren om ze in een gebruikerscontainer te injecteren die in de onlineimplementatie wordt uitgevoerd:

  • Injecteer geheimen zelf, met behulp van beheerde identiteiten.
  • Injecteer geheimen met behulp van de geheime injectiefunctie.

Beide methoden omvatten twee stappen:

  1. Haal eerst geheimen op uit de geheime archieven met behulp van de eindpuntidentiteit.
  2. Ten tweede, injecteer de geheimen in uw gebruikerscontainer.

Geheime injectie via het gebruik van beheerde identiteiten

In uw implementatiedefinitie moet u de eindpuntidentiteit gebruiken om de API's aan te roepen uit geheime archieven. U kunt deze logica implementeren in uw scorescript of in shellscripts die u uitvoert in uw BYOC-container. Als u geheime injectie wilt implementeren via het gebruik van beheerde identiteiten, raadpleegt u het voorbeeld voor het gebruik van beheerde identiteiten voor interactie met externe services.

Geheime injectie via de geheime injectiefunctie

Als u de functie voor geheiminjectie wilt gebruiken, wijst u in uw implementatiedefinitie de geheimen (waarnaar u wilt verwijzen) toe vanuit werkruimteverbindingen of de Key Vault naar de omgevingsvariabelen. Voor deze aanpak hoeft u geen code te schrijven in uw scorescript of in shellscripts die u uitvoert in uw BYOC-container. Als u de geheimen van werkruimteverbindingen of de Key Vault wilt toewijzen aan de omgevingsvariabelen, moet aan de volgende voorwaarden worden voldaan:

  • Als er tijdens het maken van een eindpunt een online-eindpunt is gedefinieerd om toegang tot standaardgeheimarchieven af te dwingen (werkruimteverbindingen onder de huidige werkruimte), moet uw gebruikersidentiteit waarmee de implementatie onder het eindpunt wordt gemaakt, over de machtigingen beschikken om geheimen van werkruimteverbindingen te lezen.
  • De eindpuntidentiteit die door de implementatie wordt gebruikt, moet machtigingen hebben voor het lezen van geheimen uit werkruimteverbindingen of de Key Vault, zoals wordt verwezen in de implementatiedefinitie.

Notitie

  • Als het eindpunt is gemaakt met een SAI en de vlag die is ingesteld om toegang tot standaardgeheimarchieven af te dwingen, heeft het eindpunt automatisch de machtiging voor werkruimteverbindingen.
  • In het geval dat het eindpunt een UAI gebruikte of de vlag voor het afdwingen van toegang tot standaardgeheimarchieven niet is ingesteld, heeft de eindpuntidentiteit mogelijk niet de machtiging voor werkruimteverbindingen. In een dergelijke situatie moet u de rol voor de werkruimteverbindingen met de eindpuntidentiteit handmatig toewijzen.
  • De eindpuntidentiteit ontvangt niet automatisch machtigingen voor de externe sleutelkluis. Als u de Sleutelkluis als een geheim archief gebruikt, moet u de rol voor de Sleutelkluis handmatig toewijzen aan de eindpuntidentiteit.

Zie Machine Learning-modellen implementeren op online-eindpunten met geheime injectie (preview) voor meer informatie over het gebruik van geheime injectie.