Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
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?).
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.
Come funziona
- Per i provider JWT, il client acquisisce un token dal provider di identità
- Il client invia il token nell'intestazione
Authorization: Bearer <token>(provider JWT) o la piattaforma inserisce le intestazioni di identità (EasyAuth/SWA) - Il generatore di API dati convalida il token o l'intestazione della piattaforma (autorità di certificazione, destinatari, firma per i provider JWT)
- 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.
Come funziona
- DAB assegna un ruolo alla richiesta in base al token e alle intestazioni
- DAB cerca le autorizzazioni dell'entità per quel ruolo
- Se il ruolo dispone dell'autorizzazione per l'azione richiesta, DAB esegue la query
- In caso contrario, DAB restituisce una
403 Forbiddenrisposta
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.jsonliberi 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 |