Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Le générateur d’API de données expose vos données via des points de terminaison REST et GraphQL. La sécurisation de votre API nécessite une attention à trois domaines principaux : l’authentification (qui appelle ?), l’autorisation (qu’est-ce qu’elles peuvent faire ?) et la sécurité du transport (la connexion est-elle protégée ?).
Trois piliers de la sécurité
| Pilier | Question à laquelle il répond | Concept clé |
|---|---|---|
| Authentification | Qui est l’appelant ? | Valider les jetons d’un fournisseur d’identité |
| Autorisation | Qu’est-ce qu’ils peuvent faire ? | Autorisations basées sur des rôles sur les entités |
| Transport | La connexion est-elle sécurisée ? | Chiffrement TLS pour tout le trafic |
Choisir votre fournisseur d’authentification
Le générateur d’API de données prend en charge plusieurs fournisseurs d’authentification. Choisissez celui qui correspond à votre scénario de déploiement :
| Provider | Cas d’utilisation | Guide |
|---|---|---|
Microsoft Entra ID (EntraID/AzureAD) |
Applications de production utilisant l’identité Microsoft | Configurer l’authentification Entra |
| JWT personnalisé | Fournisseurs d’identité tiers (Okta, Auth0, Keycloak) | Configurer l’authentification JWT personnalisée |
| App Service | Applications s’exécutant derrière Azure App Service EasyAuth (en-têtes de plateforme) | Configurer l’authentification App Service |
| Simulateur | Développement et test locaux | Configurer l’authentification du simulateur |
| Static Web Apps | Applications protégées par des en-têtes d’authentification SWA | Configurer l’authentification App Service |
Conseil / Astuce
Commencez par le fournisseur de simulateur pendant le développement pour tester les autorisations sans configurer un fournisseur d’identité. Basculez vers un fournisseur de production avant le déploiement.
Authentification
L’authentification vérifie l’identité de l’appelant. Le générateur d’API de données authentifie les demandes en validant les jetons du porteur JWT (EntraID/AzureAD, Custom) ou en faisant confiance aux en-têtes d’identité fournis par la plateforme (AppService, ). StaticWebApps
Simulator ignore la validation externe pour le développement.
Fonctionnement
- Pour les fournisseurs JWT, le client acquiert un jeton auprès du fournisseur d’identité
- Le client envoie le jeton dans l’en-tête
Authorization: Bearer <token>(fournisseurs JWT) ou la plateforme injecte des en-têtes d’identité (EasyAuth/SWA) - Le générateur d’API de données valide le jeton ou l’en-tête de plateforme (émetteur, audience, signature pour les fournisseurs JWT)
- DAB extrait les rôles de l’utilisateur à partir du jeton ou de l’en-tête d’identité
Référence rapide
| Réglage | Descriptif |
|---|---|
runtime.host.authentication.provider |
Fournisseur d’authentification (EntraID/AzureAD, , CustomAppService, StaticWebApps, ) Simulator |
runtime.host.authentication.jwt.audience |
Revendication d’audience attendue pour les fournisseurs JWT (non utilisé par AppService/StaticWebApps/Simulator) |
runtime.host.authentication.jwt.issuer |
Émetteur/autorité attendu pour les fournisseurs JWT (non utilisés par AppService/StaticWebApps/Simulator) |
Pour obtenir une configuration détaillée, consultez Configurer l’authentification Microsoft Entra ID.
Autorisation
L’autorisation détermine ce qu’un utilisateur authentifié (ou anonyme) peut faire. Le générateur d’API de données utilise le contrôle d’accès en fonction du rôle (RBAC) pour restreindre l’accès aux entités et aux actions.
Fonctionnement
- DAB attribue un rôle à la requête en fonction du jeton et des en-têtes
- DAB recherche les autorisations de l’entité pour ce rôle
- Si le rôle dispose d’une autorisation pour l’action demandée, DAB exécute la requête
- Si ce n’est pas le cas, DAB retourne une
403 Forbiddenréponse
Rôles système et rôles d’utilisateur
| Type de rôle | Descriptif |
|---|---|
Anonymous |
Affecté lorsqu’aucune identité authentifiée n’est présente |
Authenticated |
Affecté lorsqu’une demande est authentifiée (en-tête de plateforme acceptée ou approuvée JWT) et qu’aucun rôle d’utilisateur spécifique n’est sélectionné |
| Rôles d’utilisateur | Rôles personnalisés à partir de la revendication du jeton (ou rôles de roles plateforme), sélectionnés via l’en-tête X-MS-API-ROLE |
Sécurisé par défaut
Les entités n’ont pas d’autorisations par défaut. Vous devez accorder explicitement l’accès :
{
"entities": {
"Book": {
"permissions": [
{ "role": "authenticated", "actions": ["read"] }
]
}
}
}
Pour obtenir une configuration détaillée, consultez Autorisation et rôles.
Sécurité au niveau des lignes et au niveau du champ
Dépassez les autorisations au niveau de l’entité avec un contrôle d’accès précis :
| Caractéristique | Descriptif | Guide |
|---|---|---|
| Stratégies de base de données (sécurité au niveau des lignes) | Traduire des expressions de stratégie en prédicats de requête qui filtrent les lignes en fonction des revendications ou du contexte de session | Implémenter la sécurité au niveau des lignes |
| Sécurité au niveau des champs | Inclure ou exclure des colonnes spécifiques par rôle | Accès aux champs |
Sécurité du transport et de la configuration
Sécurité du transport
- Utiliser TLS pour toutes les connexions : chiffrer le trafic entre les clients et DAB
- Désactiver les versions TLS héritées : reposez uniquement sur TLS 1.2+
- Utiliser des points de terminaison HTTPS : n’exposez jamais DAB sur http non chiffré en production
Pour plus d’informations, consultez les meilleures pratiques de sécurité.
Sécurité de la configuration
-
Stocker des secrets dans des variables d’environnement : utiliser
@env('SECRET_NAME')dans votre configuration -
Utiliser Azure Key Vault : Référencer des secrets avec
@azure('key-vault-uri') -
Ne jamais valider les secrets : ne pas avoir
dab-config.jsonde mots de passe et de chaînes de connexion
{
"data-source": {
"connection-string": "@env('SQL_CONNECTION_STRING')"
}
}
Surveillance et mises à jour
- Surveiller l’accès : Utiliser Application Insights pour suivre les demandes et détecter les anomalies
- Examiner les journaux d’activité : rechercher les tentatives d’authentification ayant échoué et les refus d’autorisation
- Maintenir la mise à jour de DAB : appliquer des correctifs de sécurité en effectuant une mise à niveau vers la dernière version
Guides de démarrage rapide
| Tâche | Guide |
|---|---|
| Configurer l’authentification Microsoft Entra ID | Configurer l’authentification Entra |
| Utiliser Okta ou Auth0 | Configurer l’authentification JWT personnalisée |
| Exécuter derrière Azure App Service | Configurer l’authentification App Service |
| Tester les autorisations localement | Configurer l’authentification du simulateur |
| Restreindre les lignes par utilisateur | Implémenter la sécurité au niveau des lignes |
| Comprendre l’attribution de rôle | Autorisation et rôles |