Delen via


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:

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 het set-backend-service beleid en de andere maakt gebruik van het set-header beleid.

De API-sleutel opslaan in een benoemde waarde

  1. 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.
  2. Ga naar uw API Management-exemplaar en selecteer Benoemde waarden in het linkermenu.
  3. 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

  1. Maak een back-end die verwijst naar de Azure OpenAI-API.

    1. Selecteer Back-ends in het linkermenu van uw API Management-exemplaar.
    2. Selecteer + Toevoegen en voer een beschrijvende naam in voor de back-end. Voorbeeld: openai-backend.
    3. Selecteer Aangepast onder Type en voer de URL van het Azure OpenAI-eindpunt in. Voorbeeld: https://contoso.openai.azure.com/openai.
    4. Selecteer onder Autorisatiereferenties headers en voer api-sleutel in als de headernaam en de benoemde waarde als de waarde.
    5. Selecteer Maken.
  2. Voeg het volgende set-backend-service beleidsfragment toe in de inbound 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.

  1. 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.

  2. 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.

  3. 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:

    <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> 
    

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.

  1. 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.

  2. Voeg een inbound beleidsfragment toe aan uw API Management-exemplaar om aanvragen te valideren die een JSON-webtoken (JWT) in de Authorization header presenteren. Plaats dit fragment vóór andere inbound 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>