Condividi tramite


Proteggi la soluzione Data API Builder

Il generatore di API dati espone i dati tramite endpoint REST e GraphQL. La protezione dell'API richiede attenzione a tre aree principali: l'autenticazione (chi chiama?), l'autorizzazione (cosa possono fare?) e la sicurezza del trasporto (è protetta la connessione?).

Illustrazione del flusso di richiesta end-to-end che mostra l'autenticazione, l'autorizzazione e l'accesso al database.

Tre pilastri della sicurezza

Pilastro Domanda a cui risponde Concetto chiave
Autenticazione Chi è il chiamante? Convalidare i token da un provider di identità
Autorizzazione Cosa possono fare? Autorizzazioni basate sui ruoli per le entità
Trasporto La connessione è sicura? Crittografia TLS per tutto il traffico

Scegliere il provider di autenticazione

Il generatore di API dati supporta più provider di autenticazione. Scegliere quello che corrisponde allo scenario di distribuzione:

Provider Caso d'uso Guida
Microsoft Entra ID (EntraID/AzureAD) App di produzione che usano Microsoft Identity Configurare l'autenticazione Entra
Token JWT personalizzato Provider di identità di terze parti (Okta, Auth0, Keycloak) Configurare l'autenticazione JWT personalizzata
Servizio app App in esecuzione dietro il servizio app di Azure EasyAuth (intestazioni della piattaforma) Configurare l'autenticazione del servizio app
Simulatore Sviluppo e test in locale Configurare l'autenticazione del simulatore
App Web statiche Applicazioni protette da intestazioni di autenticazione SWA Configurare l'autenticazione del servizio app

Suggerimento

Iniziare con il provider Simulatore durante lo sviluppo per testare i permessi senza configurare un provider di identità. Passare a un provider di produzione prima della distribuzione.

Autenticazione

L'autenticazione verifica l'identità del chiamante. Il generatore di API dati autentica le richieste convalidando i token di connessione JWT (EntraID/AzureAD, Custom) oppure affidandosi alle intestazioni di identità fornite dalla piattaforma (AppService, StaticWebApps). Simulator salta la convalida esterna per lo sviluppo.

Illustrazione del modo in cui i client eseguono l'autenticazione a Data API Builder usando i token JWT.

Come funziona

  1. Per i provider JWT, il client acquisisce un token dal provider di identità
  2. Il client invia il token nell'intestazione Authorization: Bearer <token> (provider JWT) o la piattaforma inserisce le intestazioni di identità (EasyAuth/SWA)
  3. Il generatore di API dati convalida il token o l'intestazione della piattaforma (autorità di certificazione, destinatari, firma per i provider JWT)
  4. DAB estrae i ruoli dell'utente dall'intestazione del token o dell'identità

Riferimento rapido

Impostazione Description
runtime.host.authentication.provider Provider di autenticazione (EntraID/AzureAD, Custom, AppService, StaticWebApps, Simulator)
runtime.host.authentication.jwt.audience Attestazione di destinatari prevista per i provider JWT (non usata da AppService/StaticWebApps/Simulatore)
runtime.host.authentication.jwt.issuer Autorità/emittente prevista per i provider JWT (non utilizzata da AppService/StaticWebApps/Simulatore)

Per una configurazione dettagliata, vedere Configurare l'autenticazione dell'ID di Microsoft Entra.

Autorizzazione

L'autorizzazione determina le operazioni che un utente autenticato (o anonimo) può eseguire. Il generatore di API dati usa il controllo degli accessi in base al ruolo per limitare l'accesso alle entità e alle azioni.

Illustrazione di come Generatore API dati seleziona un ruolo e valuta le autorizzazioni per una richiesta.

Come funziona

  1. DAB assegna un ruolo alla richiesta in base al token e alle intestazioni
  2. DAB cerca le autorizzazioni dell'entità per quel ruolo
  3. Se il ruolo dispone dell'autorizzazione per l'azione richiesta, DAB esegue la query
  4. In caso contrario, DAB restituisce una 403 Forbidden risposta

Ruoli di sistema e ruoli utente

Tipo di ruolo Description
Anonymous Assegnato quando non è presente alcuna identità autenticata
Authenticated Assegnato quando una richiesta viene autenticata (intestazione JWT accettata o attendibile della piattaforma) e non è selezionato alcun ruolo utente specifico
Ruoli utente Ruoli personalizzati dall'attestazione del token roles (o ruoli di piattaforma), selezionati tramite l'intestazione X-MS-API-ROLE.

Sicuro per impostazione predefinita

Per impostazione predefinita, le entità non dispongono di autorizzazioni. È necessario concedere in modo esplicito l'accesso:

{
  "entities": {
    "Book": {
      "permissions": [
        { "role": "authenticated", "actions": ["read"] }
      ]
    }
  }
}

Per una configurazione dettagliata, vedere Autorizzazione e ruoli.

Sicurezza a livello di riga e a livello di campo

Andare oltre le autorizzazioni a livello di entità con controllo di accesso con granularità fine:

Caratteristica / Funzionalità Description Guida
Criteri di database (sicurezza a livello di riga) Convertire le espressioni di criteri in predicati di query che filtrano le righe in base alle attestazioni o al contesto della sessione Implementare la sicurezza a livello di riga
Sicurezza a livello di campo Includere o escludere colonne specifiche per ogni ruolo Accesso al campo

Sicurezza del trasporto e della configurazione

Sicurezza del trasporto

  • Usare TLS per tutte le connessioni: crittografare il traffico tra client e DAB
  • Disabilitare le versioni TLS legacy: fare affidamento solo su TLS 1.2+
  • Usare gli endpoint HTTPS: non esporre MAI DAB su HTTP non crittografato nell'ambiente di produzione

Per informazioni dettagliate, vedere Procedure consigliate per la sicurezza.

Sicurezza della configurazione

  • Archiviare i segreti nelle variabili di ambiente: usare @env('SECRET_NAME') nella configurazione
  • Usare Azure Key Vault: segreti di riferimento con @azure('key-vault-uri')
  • Non eseguire mai il commit dei segreti: mantenere dab-config.json liberi da password e stringhe di connessione
{
  "data-source": {
    "connection-string": "@env('SQL_CONNECTION_STRING')"
  }
}

Monitoraggio e aggiornamenti

  • Monitorare l'accesso: usare Application Insights per tenere traccia delle richieste e rilevare anomalie
  • Esaminare i log: verificare la presenza di tentativi di autenticazione non riusciti e di rifiuto delle autorizzazioni
  • Mantenere aggiornato DAB: applicare le patch di sicurezza eseguendo l'aggiornamento alla versione più recente

Guide introduttive

Task Guida
Configura l'autenticazione Microsoft Entra ID Configurare l'autenticazione Entra
Usare Okta o Auth0 Configurare l'autenticazione JWT personalizzata
Eseguire il servizio app di Azure Configurare l'autenticazione del servizio app
Testare le autorizzazioni in locale Configurare l'autenticazione del simulatore
Limitare le righe in base all'utente Implementare la sicurezza a livello di riga
Comprendere l'assegnazione dei ruoli Autorizzazione e ruoli