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 manier om te verifiëren bij een Azure OpenAI-API 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>