Delen via


Toegang tot LLM-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 toegang kunt verifiëren en autoriseren tot AI API-eindpunten die door Azure API Management worden beheerd. In dit artikel worden de volgende algemene methoden beschreven:

  • Verificatie : verifiëren bij een AI-API met behulp van beleid dat gebruikmaakt 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:

Vereiste voorwaarden

Als u de voorbeelden in dit artikel wilt volgen, moet u het volgende hebben:

Verifiëren met behulp van API-sleutel

Een standaard manier om te verifiëren bij een AI-API is met behulp van een API-sleutel. Voor dit type verificatie moeten alle API-aanvragen een geldige API-sleutel in een HTTP-header bevatten. De headernaam is afhankelijk van de API. Azure OpenAI in Microsoft Foundry-API's maken bijvoorbeeld gebruik van de api-key header.

  • API Management kan de API-sleutel op een veilige manier beheren met behulp van een benoemde waarde.
  • U kunt verwijzen naar de benoemde waarde in een API-beleid om de api-key header in aanvragen in te stellen op de API. In de volgende twee voorbeelden ziet u hoe u dit kunt doen: de ene gebruikt het set-backend-service beleid en de andere gebruikt het set-header beleid.

De API-sleutel opslaan in een benoemde waarde

Hier volgt een voorbeeld van het opslaan van een Azure OpenAI API-sleutel in een benoemde waarde in API Management:

  1. Haal een API-sleutel op uit de implementatie van het AI-model. Voor een Azure OpenAI-modelimplementatie vindt u deze informatie op de startpagina van uw project in de Microsoft Foundry-portal.
  2. Ga naar uw API Management-exemplaar en selecteer Benoemde waarden in het linkermenu.
  3. Selecteer + Toevoegen en voeg de waarde toe als geheim. Voor meer beveiliging kunt u desgewenst een verwijzing naar een sleutelkluis gebruiken.

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.services.ai.azure.com/openai.
    4. Selecteer onder Autorisatiereferenties headers en voer api-sleutel in als de headernaam en de benoemde waarde als de waarde.
    5. Klik op Creëren.
  2. Voeg het volgende set-backend-service beleidsfragment toe aan de inbound beleidssectie om de Azure OpenAI-API in verzoeken de API-sleutel door te geven.

    In dit voorbeeld is de back-end resource "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

Gebruik voor Azure OpenAI en andere modelimplementaties in Microsoft Foundry een beheerde identiteit in Microsoft Entra ID om te verifiëren. Zie Azure OpenAI configureren in Microsoft Foundry-modellen met Microsoft Entra ID-verificatie voor achtergrond.

Volg deze stappen om uw API Management-exemplaar te configureren voor het gebruik van een beheerde identiteit voor verificatie.

  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. Ken de Cognitive Services OpenAI User-rol toe aan de beheerde identiteit, gescoped op de juiste resource. Wijs bijvoorbeeld de door het systeem toegewezen beheerde identiteit toe aan de Gebruikersrol Cognitive Services OpenAI op de Microsoft Foundry-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 voor de API te verifiëren 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> 
    

Aanbeveling

In plaats van de authentication-managed-identity en set-header beleidsregels te gebruiken die in dit voorbeeld worden weergegeven, kunt u een backend resource configureren waarmee API-aanvragen worden doorgestuurd naar het AI-service-eindpunt. Configureer in de back-endconfiguratie referenties voor beheerde identiteiten voor de https://cognitiveservices.azure.com/ resource. Azure API Management automatiseert deze stappen wanneer u een API rechtstreeks vanuit Microsoft Foundry importeert.

OAuth 2.0-autorisatie met behulp van id-provider

Als u meer gedetailleerde toegang tot Azure OpenAPI of andere LLM-API's wilt inschakelen door bepaalde gebruikers of clients, moet u de toegang tot de 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.

Opmerking

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.

De volgende stappen laten zien hoe u API-toegang beperkt tot gebruikers of apps die zijn geautoriseerd met behulp van een id-provider.

  1. Maak een toepassing in uw id-provider die de AI-API in Azure API Management vertegenwoordigt. 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 scopes die de fijnmazige machtigingen vertegenwoordigen die nodig zijn voor toegang tot de AI 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.

    Opmerking

    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 beleidsreferentie voor details.

      <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 beleidsreferentie voor details.

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