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

  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>