Autentisera och auktorisera åtkomst till Azure OpenAI-API:er med Hjälp av Azure API Management
GÄLLER FÖR: Alla API Management-nivåer
I den här artikeln får du lära dig om hur du autentiserar och auktoriserar till Azure OpenAI API-slutpunkter som hanteras med Hjälp av Azure API Management. Den här artikeln visar följande vanliga metoder:
Autentisering – Autentisera till ett Azure OpenAI-API med principer som autentiserar med antingen en API-nyckel eller en hanterad Identitet för Microsoft Entra-ID.
Auktorisering – För mer detaljerad åtkomstkontroll kan du förauktorisera begäranden som skickar OAuth 2.0-token som genererats av en identitetsprovider, till exempel Microsoft Entra-ID.
Bakgrund finns i:
Förutsättningar
Innan du följer stegen i den här artikeln måste du ha:
- En API Management-instans. Exempel på steg finns i Skapa en Azure API Management-instans.
- En Azure OpenAI-resurs och -modell som lagts till i DIN API Management-instans. Exempel på steg finns i Importera ett Azure OpenAI-API som ett REST-API.
- Behörigheter för att skapa en appregistrering i en identitetsprovider, till exempel en Microsoft Entra-klientorganisation som är associerad med din Azure-prenumeration (för OAuth 2.0-auktorisering).
Autentisera med API-nyckel
Ett standardsätt för att autentisera till ett Azure OpenAI-API är att använda en API-nyckel. För den här typen av autentisering måste alla API-begäranden innehålla en giltig API-nyckel i api-key
HTTP-huvudet.
- API Management kan hantera API-nyckeln på ett säkert sätt med hjälp av ett namngivet värde.
- Det namngivna värdet kan sedan refereras till i en API-princip för att ange
api-key
huvudet i begäranden till Azure OpenAI-API:et. Vi ger två exempel på hur du gör detta: denset-backend-service
ena använder principen och den andra använderset-header
principen.
Lagra API-nyckeln i ett namngivet värde
- Hämta en API-nyckel från Azure OpenAI-resursen. I Azure Portal hittar du en nyckel på sidan Nycklar och slutpunkt för Azure OpenAI-resursen.
- Gå till DIN API Management-instans och välj Namngivna värden på den vänstra menyn.
- Välj + Lägg till och lägg till värdet som en hemlighet, eller om du vill ha mer säkerhet använder du en key vault-referens.
Skicka API-nyckeln i API-begäranden – set-backend-service-policy
Skapa en serverdel som pekar på Azure OpenAI-API:et.
- I den vänstra menyn i DIN API Management-instans väljer du Serverdelar.
- Välj + Lägg till och ange ett beskrivande namn för serverdelen. Exempel: openai-backend.
- Under Typ väljer du Anpassad och anger URL:en för Azure OpenAI-slutpunkten. Exempel:
https://contoso.openai.azure.com/openai
. - Under Autentiseringsuppgifter för auktorisering väljer du Rubriker och anger api-nyckel som rubriknamn och det namngivna värdet som värde.
- Välj Skapa.
Lägg till följande
set-backend-service
principfragment i principavsnittetinbound
för att skicka API-nyckeln i begäranden till Azure OpenAI-API:et.I det här exemplet är serverdelsresursen openai-backend.
<set-backend-service backend-id="openai-backend" />
Skicka API-nyckeln i API-begäranden – princip för set-header
Du kan också lägga till följande set-header
principfragment i principavsnittet inbound
för att skicka API-nyckeln i begäranden till Azure OpenAI-API:et. Det här principfragmentet anger api-key
huvudet med det namngivna värde som du har konfigurerat.
I det här exemplet är det namngivna värdet i API Management openai-api-key.
<set-header name="api-key" exists-action="override">
<value>{{openai-api-key}}</value>
</set-header>
Autentisera med hanterad identitet
Ett alternativt sätt att autentisera till ett Azure OpenAI-API med hjälp av en hanterad identitet i Microsoft Entra-ID. Bakgrund finns i Konfigurera Azure OpenAI-tjänsten med hanterad identitet.
Följande är steg för att konfigurera API Management-instansen så att den använder en hanterad identitet för att autentisera begäranden till ett Azure OpenAI-API.
Aktivera en systemtilldelad eller användartilldelad hanterad identitet för din API Management-instans. I följande exempel förutsätts att du har aktiverat instansens systemtilldelade hanterade identitet.
Tilldela den hanterade identiteten rollen Cognitive Services OpenAI-användare , som är begränsad till lämplig resurs. Du kan till exempel tilldela den systemtilldelade hanterade identiteten Rollen Cognitive Services OpenAI-användare på Azure OpenAI-resursen. Detaljerade steg finns i Rollbaserad åtkomstkontroll för Azure OpenAI-tjänsten.
Lägg till följande principfragment i principavsnittet för att autentisera
inbound
begäranden till Azure OpenAI-API:et med hjälp av den hanterade identiteten.I det här exemplet:
- Principen
authentication-managed-identity
hämtar en åtkomsttoken för den hanterade identiteten. - Principen
set-header
anger rubriken förAuthorization
begäran med åtkomsttoken.
<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>
- Principen
OAuth 2.0-auktorisering med identitetsprovider
Om du vill aktivera mer detaljerad åtkomst till OpenAPI-API:er av vissa användare eller klienter kan du förauktorisera åtkomst till Azure OpenAI API med OAuth 2.0-auktorisering med Microsoft Entra-ID eller någon annan identitetsprovider. Bakgrund finns i Skydda ett API i Azure API Management med OAuth 2.0-auktorisering med Microsoft Entra-ID.
Kommentar
Använd OAuth 2.0-auktorisering som en del av en djupskyddsstrategi. Det är inte en ersättning för API-nyckelautentisering eller hanterad identitetsautentisering till ett Azure OpenAI-API.
Här följer steg på hög nivå för att begränsa API-åtkomsten till användare eller appar som är auktoriserade med hjälp av en identitetsprovider.
Skapa ett program i din identitetsprovider för att representera OpenAI API i Azure API Management. Om du använder Microsoft Entra-ID registrerar du ett program i din Microsoft Entra-ID-klientorganisation. Registrera information som program-ID och målgrupps-URI.
Vid behov konfigurerar du programmet så att det har roller eller omfång som representerar de detaljerade behörigheter som krävs för att få åtkomst till Azure OpenAI-API:et.
Lägg till ett
inbound
principfragment i API Management-instansenAuthorization
för att verifiera begäranden som presenterar en JSON-webbtoken (JWT) i rubriken. Placera det här kodfragmentet före andrainbound
principer som du anger för att autentisera till Azure OpenAI-API:et.Kommentar
I följande exempel visas den allmänna strukturen för principerna för att verifiera en JWT. Anpassa dem till din identitetsprovider och kraven för ditt program och API.
validate-azure-ad-token – Om du använder Microsoft Entra-ID konfigurerar
validate-azure-ad-token
du principen för att verifiera målgruppen och anspråken i JWT. Mer information finns i principreferensen.<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 – Om du använder en annan identitetsprovider konfigurerar
validate-jwt
du principen för att verifiera målgruppen och anspråken i JWT. Mer information finns i principreferensen.<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>