Condividi tramite


Usare l'autenticazione Microsoft Entra per il gateway autogestito

SI APPLICA A: Sviluppatore | Premium

Il gateway self-hosted di Azure API Management necessita di connettività con la sua istanza di Gestione API basata sul cloud associata per monitorare lo stato, verificare e applicare aggiornamenti della configurazione e inviare metriche ed eventi.

Questo articolo illustra come abilitare il gateway self-hosted per autenticarsi all'istanza cloud associata utilizzando un'app Microsoft Entra ID con un segreto del client o un certificato. Usando Microsoft Entra'autenticazione, è possibile configurare tempi di scadenza più lunghi per i segreti e usare i passaggi standard per gestire e ruotare i segreti. Per altre opzioni di autenticazione, vedere Opzioni di autenticazione del gateway autogestito.

Panoramica dello scenario

L'API di configurazione del gateway autogestito può controllare il controllo degli accessi basato sui ruoli di Azure per determinare chi possiede le autorizzazioni per la lettura della configurazione del gateway. Dopo aver creato un'app Microsoft Entra con tali autorizzazioni, il gateway self-hosted può eseguire l'autenticazione all'istanza di Gestione API usando l'app.

Per abilitare l'autenticazione Microsoft Entra, completare la procedura seguente:

  1. Creare due ruoli personalizzati per:
    • Consentire all'API di configurazione di accedere alle informazioni di RBAC del cliente
    • Concedere le autorizzazioni per leggere la configurazione del gateway autogestito
  2. Concedere l'accesso RBAC all'identità gestita dell'istanza di Gestione delle API
  3. Creare un'app Microsoft Entra e concedergli l'accesso per leggere la configurazione del gateway
  4. Distribuire il gateway con nuove opzioni di configurazione

Prerequisiti

Limitazioni

  • È supportata solo l'identità gestita assegnata dal sistema.

Creare ruoli personalizzati

Creare i due ruoli personalizzati seguenti assegnati nei passaggi successivi. È possibile usare le autorizzazioni elencate nei modelli JSON seguenti per creare i ruoli personalizzati usando il portale Azure, Azure CLI, Azure PowerShell o altri strumenti di Azure.

Quando si configurano i ruoli personalizzati, aggiornare la proprietà AssignableScopes con i valori di ambito appropriati per la directory, ad esempio una sottoscrizione in cui viene distribuita l'istanza di API Management.

Ruolo del servizio di validatore di accesso dell'API per la configurazione della gestione delle API

{
  "Description": "Can access RBAC permissions on the API Management resource to authorize requests in Configuration API.",
  "IsCustom": true,
  "Name": "API Management Configuration API Access Validator Service Role",
  "Permissions": [
    {
      "Actions": [
        "Microsoft.Authorization/*/read"
      ],
      "NotActions": [],
      "DataActions": [],
      "NotDataActions": []
    }
  ],
  "NotDataActions": [],
  "AssignableScopes": [
    "/subscriptions/{subscriptionID}"
  ]
}

Ruolo di lettore della configurazione del gateway di gestione API

{
  "Description": "Can read self-hosted gateway configuration from Configuration API",
  "IsCustom": true,
  "Name": "API Management Gateway Configuration Reader Role",
  "Permissions": [
    {
      "Actions": [],
      "NotActions": [],
      "DataActions": [
        "Microsoft.ApiManagement/service/gateways/getConfiguration/action"
      ],
      "NotDataActions": []
    }
  ],
  "NotDataActions": [],
  "AssignableScopes": [
    "/subscriptions/{subscriptionID}"
  ]
}

Aggiungere assegnazioni di ruolo

Assegnare il ruolo di servizio di Validatore dell'accesso API nella Configurazione di Gestione API

Assegnare il ruolo del servizio Validator dell'accesso API di configurazione di API Management all'identità gestita dell'istanza di API Management. Per i passaggi dettagliati per assegnare un ruolo, vedere Assegnare ruoli Azure usando il portale.

  • Ambito: gruppo di risorse o sottoscrizione in cui viene distribuita l'istanza di Gestione API
  • Ruolo: Configurazione di Gestione API e Servizio di Convalida Accesso API
  • Assegnare l'accesso a: Identità gestita dell'istanza di Gestione API

Assegnare il ruolo Lettore di configurazione del gateway di API Management

Passaggio 1: Registrare Microsoft Entra'app

Creare una nuova app Microsoft Entra. Per i passaggi, vedere Creare un'applicazione Microsoft Entra e un principale servizio in grado di accedere alle risorse. L'app Microsoft Entra viene usata dal gateway self-hosted per l'autenticazione nell'istanza di Gestione API.

  • Generare un segreto client per l'app.
  • Prendere nota dei valori dell'applicazione seguenti da usare nella sezione successiva quando si distribuisce il gateway self-hosted: ID applicazione (client), ID directory (tenant) e segreto client.

Annotazioni

Anziché usare un segreto client, è possibile scegliere di usare un certificato per l'autenticazione. Per i passaggi per caricare un certificato nell'app Microsoft Entra, vedere Use certificates for Azure AD app authentication.

Passaggio 2: Assegnare il ruolo del servizio di lettore della configurazione del gateway di gestione API

Assegnare il ruolo servizio Lettore configurazione del gateway di API Management all'app.

  • Ambito: istanza di Gestione API (o gruppo di risorse o sottoscrizione in cui viene distribuita l'app)
  • Ruolo: Lettore della configurazione del gateway di gestione delle API
  • Assegnare l'accesso all'app Microsoft Entra

Distribuire il gateway self-hosted

Distribuire il gateway self-hosted in un ambiente containerizzato, ad esempio Kubernetes, aggiungendo le impostazioni di registrazione dell'app di Microsoft Entra.

È possibile distribuire il gateway self-hosted con l'autenticazione Microsoft Entra utilizzando uno schema Helm.

Sostituire i valori seguenti nel helm install comando con i valori effettivi:

  • <gateway-name>: nome dell'istanza di Azure API Management
  • <gateway-url>: URL del gateway, nel formato https://<gateway-name>.configuration.azure-api.net
  • <entra-id-tenant-id>: ID tenant di Microsoft Entra (ID directory)
  • <entra-id-app-id>: ID dell'applicazione (client) dell'app Microsoft Entra registrata
  • <entra-id-secret>: segreto del client generato per l'app Microsoft Entra
helm install --name azure-api-management-gateway azure-apim-gateway/azure-api-management-gateway \
             --set gateway.name=='<gateway-name>' \
             --set gateway.configuration.uri='<gateway-url>' \
             --set gateway.auth.type='AzureAdApp' \
             --set gateway.auth.azureAd.tenant.id='<entra-id-tenant-id>' \
             --set gateway.auth.azureAd.app.id='<entra-id-app-id>'
             --set config.service.auth.azureAd.clientSecret='<entra-id-secret>' 

Per i prerequisiti e i dettagli, vedere Distribuire un gateway self-hosted di API Management con Helm.

Verificare che il gateway sia in esecuzione

  1. Eseguire il comando seguente per verificare che il pod del gateway sia in esecuzione. Il nome del pod sarà diverso.

    kubectl get pods
    NAME                                           READY     STATUS    RESTARTS   AGE
    azure-api-management-gateway-59f5fb94c-s9stz   1/1       Running   0          1m
    
  2. Eseguire il comando seguente per verificare che il servizio gateway sia in esecuzione. Il nome del servizio e gli indirizzi IP saranno diversi.

    kubectl get services
    NAME                           TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)               AGE
    azure-api-management-gateway   ClusterIP   10.0.229.55     <none>        8080/TCP,8081/TCP     1m
    
  3. Tornare al portale di Azure e verificare che lo stato del nodo del gateway distribuito sia Integro.

Suggerimento

Usare il comando kubectl logs <gateway-pod-name> per visualizzare uno snapshot del log del gateway self-hosted.