Toegang tot Azure OpenAI-API's verifiëren en autoriseren met behulp van Azure API Management
VAN TOEPASSING OP: Alle API Management-lagen
In dit artikel leert u hoe u kunt verifiëren en autoriseren voor Azure OpenAI API-eindpunten die worden beheerd met behulp van Azure API Management. In dit artikel worden de volgende algemene methoden beschreven:
Verificatie : verifiëren bij een Azure OpenAI-API met behulp van beleid dat wordt geverifieerd met behulp van een API-sleutel of een door Microsoft Entra ID beheerde identiteit.
Autorisatie : voor meer gedetailleerd toegangsbeheer moet u aanvragen die OAuth 2.0-tokens doorgeven die worden gegenereerd door een id-provider, zoals Microsoft Entra-id, vooraf verifiëren.
Zie voor achtergrond:
Vereisten
Voordat u de stappen in dit artikel volgt, moet u beschikken over:
- Een API Management-exemplaar. Zie Bijvoorbeeld stappen voor het maken van een Azure API Management-exemplaar.
- Er is een Azure OpenAI-resource en -model toegevoegd aan uw API Management-exemplaar. Zie Bijvoorbeeld stappen voor het importeren van een Azure OpenAI-API als een REST API.
- Machtigingen voor het maken van een app-registratie in een id-provider, zoals een Microsoft Entra-tenant die is gekoppeld aan uw Azure-abonnement (voor OAuth 2.0-autorisatie).
Verificatie met de API-sleutel
Een standaard manier om te verifiëren bij een Azure OpenAI-API is met behulp van een API-sleutel. Voor dit type verificatie moeten alle API-aanvragen een geldige API-sleutel in de api-key
HTTP-header bevatten.
- API Management kan de API-sleutel op een veilige manier beheren met behulp van een benoemde waarde.
- De benoemde waarde kan vervolgens worden verwezen in een API-beleid om de
api-key
header in aanvragen in te stellen op de Azure OpenAI-API. We bieden twee voorbeelden van hoe u dit doet: het ene gebruikt hetset-backend-service
beleid en de andere maakt gebruik van hetset-header
beleid.
De API-sleutel opslaan in een benoemde waarde
- Haal een API-sleutel op uit de Azure OpenAI-resource. Zoek in Azure Portal een sleutel op de pagina Sleutels en eindpunt van de Azure OpenAI-resource.
- Ga naar uw API Management-exemplaar en selecteer Benoemde waarden in het linkermenu.
- Selecteer + Toevoegen en voeg de waarde toe als geheim, of gebruik desgewenst een sleutelkluisverwijzing voor meer beveiliging.
De API-sleutel doorgeven in API-aanvragen - beleid voor set-backend-service
Maak een back-end die verwijst naar de Azure OpenAI-API.
- Selecteer Back-ends in het linkermenu van uw API Management-exemplaar.
- Selecteer + Toevoegen en voer een beschrijvende naam in voor de back-end. Voorbeeld: openai-backend.
-
Selecteer Aangepast onder Type en voer de URL van het Azure OpenAI-eindpunt in. Voorbeeld:
https://contoso.openai.azure.com/openai
. - Selecteer onder Autorisatiereferenties headers en voer api-sleutel in als de headernaam en de benoemde waarde als de waarde.
- Selecteer Maken.
Voeg het volgende
set-backend-service
beleidsfragment toe in deinbound
beleidssectie om de API-sleutel door te geven aan de Azure OpenAI-API.In dit voorbeeld is de back-endresource openai-backend.
<set-backend-service backend-id="openai-backend" />
De API-sleutel doorgeven in API-aanvragen - beleid voor set-headers
U kunt ook het volgende set-header
beleidsfragment toevoegen in de inbound
beleidssectie om de API-sleutel in aanvragen door te geven aan de Azure OpenAI-API. Met dit beleidsfragment wordt de api-key
header ingesteld met de benoemde waarde die u hebt ingesteld.
In dit voorbeeld is de benoemde waarde in API Management openai-api-key.
<set-header name="api-key" exists-action="override">
<value>{{openai-api-key}}</value>
</set-header>
Verifiëren met beheerde identiteit
Een alternatieve en aanbevolen manier om te verifiëren bij een Azure OpenAI-API is met behulp van een beheerde identiteit in Microsoft Entra ID. Zie Azure OpenAI Service configureren met beheerde identiteit voor achtergrondinformatie.
Hieronder volgen de stappen voor het configureren van uw API Management-exemplaar voor het gebruik van een beheerde identiteit voor het verifiëren van aanvragen voor een Azure OpenAI-API.
Schakel een door het systeem toegewezen of door de gebruiker toegewezen beheerde identiteit in voor uw API Management-exemplaar. In het volgende voorbeeld wordt ervan uitgegaan dat u de door het systeem toegewezen beheerde identiteit van het exemplaar hebt ingeschakeld.
Wijs de beheerde identiteit toe aan de gebruikersrol Cognitive Services OpenAI , die is gericht op de juiste resource. Wijs bijvoorbeeld de door het systeem toegewezen beheerde identiteit toe aan de Gebruikersrol Cognitive Services OpenAI op de Azure OpenAI-resource. Zie Op rollen gebaseerd toegangsbeheer voor de Azure OpenAI-service voor gedetailleerde stappen.
Voeg het volgende beleidsfragment toe in de
inbound
beleidssectie om aanvragen te verifiëren bij de Azure OpenAI-API met behulp van de beheerde identiteit.In dit voorbeeld:
- Het
authentication-managed-identity
beleid verkrijgt een toegangstoken voor de beheerde identiteit. - Het
set-header
beleid stelt deAuthorization
header van de aanvraag in met het toegangstoken.
<authentication-managed-identity resource="https://cognitiveservices.azure.com" output-token-variable-name="managed-id-access-token" ignore-error="false" /> <set-header name="Authorization" exists-action="override"> <value>@("Bearer " + (string)context.Variables["managed-id-access-token"])</value> </set-header>
- Het
OAuth 2.0-autorisatie met behulp van id-provider
Als u meer gedetailleerde toegang tot OpenAPI-API's wilt inschakelen door bepaalde gebruikers of clients, kunt u de toegang tot de Azure OpenAI-API vooraf verifiëren met behulp van OAuth 2.0-autorisatie met Microsoft Entra ID of een andere id-provider. Zie Een API beveiligen in Azure API Management met behulp van OAuth 2.0-autorisatie met Microsoft Entra-id voor achtergrond.
Notitie
Gebruik OAuth 2.0-autorisatie als onderdeel van een diepgaande verdedigingsstrategie. Het is geen vervanging voor API-sleutelverificatie of beheerde identiteitsverificatie naar een Azure OpenAI-API.
Hieronder volgen de stappen op hoog niveau om API-toegang te beperken tot gebruikers of apps die zijn geautoriseerd met behulp van een id-provider.
Maak een toepassing in uw id-provider om de OpenAI-API in Azure API Management weer te geven. Als u Microsoft Entra-id gebruikt, registreert u een toepassing in uw Microsoft Entra ID-tenant. Noteer details zoals de toepassings-id en de doelgroep-URI.
Configureer zo nodig de toepassing voor rollen of bereiken die de fijnmazige machtigingen vertegenwoordigen die nodig zijn voor toegang tot de Azure OpenAI-API.
Voeg een
inbound
beleidsfragment toe aan uw API Management-exemplaar om aanvragen te valideren die een JSON-webtoken (JWT) in deAuthorization
header presenteren. Plaats dit fragment vóór andereinbound
beleidsregels die u instelt voor verificatie bij de Azure OpenAI-API.Notitie
In de volgende voorbeelden ziet u de algemene structuur van het beleid om een JWT te valideren. Pas deze aan uw id-provider en de vereisten van uw toepassing en API aan.
validate-azure-ad-token : als u Microsoft Entra ID gebruikt, configureert u het
validate-azure-ad-token
beleid om de doelgroep en claims in de JWT te valideren. Zie de naslaginformatie over het beleid voor meer informatie.<validate-azure-ad-token tenant-id={{TENANT_ID}} header-name="Authorization" failed-validation-httpcode="401" failed-validation-error-message="Unauthorized. Access token is missing or invalid."> <client-application-ids> <application-id>{{CLIENT_APP_ID}}</application-id> </client-application-ids> <audiences> <audience>...</audience> </audiences> <required-claims> <claim name=...> <value>...</value> </claim> </required-claims> </validate-azure-ad-token>
validate-jwt : als u een andere id-provider gebruikt, configureert u het
validate-jwt
beleid om de doelgroep en claims in de JWT te valideren. Zie de naslaginformatie over het beleid voor meer informatie.<validate-jwt header-name="Authorization" failed-validation-httpcode="401" failed-validation-error-message="Unauthorized. Access token is missing or invalid."> <openid-config url={{OPENID_CONFIGURATION_URL}} /> <issuers> <issuer>{{ISSUER_URL}}</issuer> </issuers> <audiences> <audience>...</audience> </audiences> <required-claims> <claim name=...> <value>...</value> </claim> </required-claims> </validate-jwt>