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.
Cette référence couvre les fonctionnalités, les comportements et les exigences spécifiques à une ou plusieurs plateformes de base de données prises en charge par le générateur d’API de données (DAB). Pour obtenir une matrice de comparaison des fonctionnalités entre bases de données, consultez la disponibilité des fonctionnalités.
Prise en charge des versions de base de données
DAB prend en charge les plateformes de base de données suivantes. Les exigences de version minimales s’appliquent aux déploiements autogérés. Les bases de données PaaS (Platform-as-a-service) n’ont pas de configuration minimale requise pour la version, car le service gère la version.
| Plateforme de base de données | Abréviation | Version minimale | Remarques |
|---|---|---|---|
| SQL Server | Famille SQL | 2016 | |
| Azure SQL | Famille SQL | N/A (PaaS) | |
| Microsoft Fabric SQL | Famille SQL | N/A (PaaS) | |
| Azure Cosmos DB pour NoSQL | Cosmos DB | N/A (PaaS) | GraphQL uniquement ; aucun point de terminaison REST |
| PostgreSQL | PGSQL | 11 | |
| MySQL | MySQL | 8 | |
| Azure Synapse Analytics (pool SQL dédié) | SQLDW | N/A (PaaS) | Le pool SQL serverless n’est pas pris en charge |
Important
Vérifiez que votre base de données de développement locale et toute base de données déployée répondent à la configuration minimale requise pour la version. DAB se connecte à l’aide du même pilote dans les deux environnements. Une version antérieure dans les deux emplacements provoque des erreurs d’exécution.
SQL Server et Azure SQL
SESSION_CONTEXT
Pour SQL Server et Azure SQL, DAB peut propager les revendications utilisateur authentifiées à la base de données en appelant sp_set_session_context avant d’exécuter chaque requête. Ce mécanisme permet aux stratégies de sécurité au niveau des lignes sql natives et aux procédures stockées de lire l’identité de l’appelant à partir du moteur de base de données.
Lorsqu’il set-session-context est activé dans la configuration DAB, DAB envoie toutes les revendications authentifiées en tant que paires clé-valeur :
EXEC sp_set_session_context 'roles', 'editor', @read_only = 0;
EXEC sp_set_session_context 'oid', 'a1b2c3d4-...', @read_only = 0;
-- Your query executes after claims are set
SELECT * FROM dbo.Documents;
Les revendications courantes envoyées incluentroles, suboidet toutes les revendications personnalisées que votre fournisseur d’identité inclut dans le JWT.
Activer SESSION_CONTEXT
Définir --set-session-context true lors de l’appel dab init:
dab init \
--database-type mssql \
--connection-string "@env('SQL_CONNECTION_STRING')" \
--set-session-context true
Ou définissez la propriété directement dans dab-config.json:
{
"data-source": {
"database-type": "mssql",
"connection-string": "@env('SQL_CONNECTION_STRING')",
"options": {
"set-session-context": true
}
}
}
Avertissement
L’activation set-session-context désactive la mise en cache des réponses pour cette source de données. Étant donné que chaque requête définit des valeurs de session distinctes, les réponses mises en cache de la session d’un utilisateur ne doivent pas être servies à une autre.
Utiliser SESSION_CONTEXT dans SQL
Après l’activation set-session-context, vos objets SQL peuvent lire les valeurs de revendication :
-- Read a claim in a stored procedure
DECLARE @role NVARCHAR(256) = CAST(SESSION_CONTEXT(N'roles') AS NVARCHAR(256));
-- Use a claim in a row-level security predicate function
CREATE FUNCTION dbo.RlsPredicate(@claimRole NVARCHAR(256))
RETURNS TABLE
WITH SCHEMABINDING
AS RETURN SELECT 1 AS result
WHERE @claimRole = CAST(SESSION_CONTEXT(N'roles') AS NVARCHAR(256));
Pour obtenir une procédure pas à pas complète, consultez Implémenter la sécurité au niveau des lignes avec le contexte de session.
SESSION_CONTEXT et regroupement de connexions
DAB réinitialise toutes les valeurs de contexte de session au début de chaque requête. Toutefois, étant donné que set-session-context force la sémantique de connexion par utilisateur, la réutilisation des connexions entre les utilisateurs est évitée automatiquement lorsque cette option est activée.
Variantes de chaîne de connexion
Utilisations Microsoft.Data.SqlClient DAB pour SQL Server et Azure SQL. La bibliothèque prend en charge ces formats de chaîne de connexion.
Formats courants :
| Méthode d’authentification | Modèle de chaîne de connexion |
|---|---|
| Connexion SQL | Server=tcp:<server>.database.windows.net;Database=<db>;User ID=<user>;Password=<pwd>; |
| Identité gérée | Server=tcp:<server>.database.windows.net;Database=<db>;Authentication=Active Directory Managed Identity; |
| Identité managée assignée par l'utilisateur | Server=tcp:<server>.database.windows.net;Database=<db>;Authentication=Active Directory Managed Identity;User ID=<client-id>; |
| Informations d’identification Azure par défaut | Server=tcp:<server>.database.windows.net;Database=<db>;Authentication=Active Directory Default; |
Conseil / Astuce
Stockez les chaînes de connexion dans les variables d’environnement et référencez-les avec @env('SQL_CONNECTION_STRING'). Pour les déploiements de production, stockez la chaîne de connexion dans Azure Key Vault et référencez-la avec @akv().
Types de données non pris en charge
Les types de données SQL Server et Azure SQL suivants ne sont pas pris en charge par DAB :
| Type de données | Reason |
|---|---|
geography |
Type géospatial ; sérialisation non prise en charge |
geometry |
Type spatial planaire ; sérialisation non prise en charge |
hierarchyid |
Type de données hiérarchique ; sérialisation non prise en charge |
json |
Type JSON natif (actuellement en préversion) |
rowversion |
Type de contrôle de version des lignes ; non inclus dans les réponses d’API |
sql_variant |
Colonnes de type variable ; inférence de type non prise en charge |
vector |
Type de vecteur (actuellement en préversion) |
xml |
Type XML ; sérialisation non prise en charge |
Azure Cosmos DB pour NoSQL
Configuration requise pour le schéma
Contrairement aux bases de données relationnelles, Azure Cosmos DB pour NoSQL est indépendant du schéma. DAB ne peut pas introspecter un conteneur Cosmos DB pour générer des types GraphQL. Vous devez fournir un fichier de schéma GraphQL (.gql) qui définit votre structure de document.
Le fichier de schéma utilise le langage SDL (GraphQL Schema Definition Language) standard avec deux directives personnalisées :
| Instructions | Obligatoire | Description |
|---|---|---|
@model |
Oui | Mappe un type GraphQL à un nom d’entité DAB |
@authorize |
Non | Limite l’accès au champ ou au type à des rôles spécifiques |
@model Directive
La @model(name: "...") directive est requise sur chaque type GraphQL que vous exposez via DAB. La name valeur doit correspondre exactement au nom de l’entité dans votre fichier de configuration DAB.
type Book @model(name: "Book") {
id: ID
title: String
year: Int
}
@authorize Directive
La @authorize directive fournit un contrôle d’accès au niveau du champ et au niveau du type pour les requêtes GraphQL Cosmos DB. Il accepte un roles paramètre répertoriant les rôles qui peuvent accéder au champ ou au type.
type Book @model(name: "Book") {
id: ID
title: String @authorize(roles: ["authenticated", "librarian"])
internalNotes: String @authorize(roles: ["editor"])
}
Vous pouvez également appliquer @authorize au niveau du type :
type InternalReport @model(name: "InternalReport") @authorize(roles: ["auditor"]) {
id: ID
summary: String
}
Important
La @authorize directive ajoute des autorisations au niveau de l’entité. La directive et le bloc d’autorisation de l’entité doivent autoriser la demande d’accès. Si un champ a @authorize(roles: ["editor"]) mais que l’entité n’a pas d’entrée d’autorisation, editorla demande est refusée.
Note
@authorize(policy: "...") n’est pas pris en charge. Utilisez @authorize(roles: [...]) uniquement.
Pour obtenir un guide complet de configuration, consultez Configurer le générateur d’API de données pour Azure Cosmos DB pour NoSQL.
Indisponibilité de l’API REST
DAB ne génère pas de points de terminaison REST pour Azure Cosmos DB pour NoSQL. Azure Cosmos DB fournit une API REST native complète pour les opérations de document. Seuls les points de terminaison GraphQL sont générés. Les documents OpenAPI ne sont pas générés pour les entités Cosmos DB.
Pour accéder aux données via REST, utilisez directement l’API REST Azure Cosmos DB .
Fonctionnalités non prises en charge pour Cosmos DB
Les fonctionnalités suivantes ne sont pas prises en charge pour Azure Cosmos DB pour NoSQL :
| Fonctionnalité | Remarques |
|---|---|
| Points de terminaison REST | Utiliser l’API REST Cosmos DB native à la place |
| Stratégies de base de données | Les prédicats de stratégie nécessitent une sémantique de requête relationnelle |
| Procédures stockées | Non pris en charge en tant qu’entités DAB |
| Relations | Les relations entre conteneurs ne sont pas prises en charge |
Tri ($orderby) |
Non pris en charge dans les requêtes GraphQL |
| Aggregation | Non pris en charge |
| Mutations multiples | Non pris en charge |
| Contexte de session | Fonctionnalité spécifique à SQL |
PostgreSQL
Version minimale
PostgreSQL 11 ou version ultérieure est requis. DAB utilise Npgsql comme pilote PostgreSQL.
Types de données non pris en charge
Les types de données PostgreSQL suivants ne sont pas pris en charge par DAB :
| Type de données | Remarques |
|---|---|
bytea |
Chaîne binaire ; sérialisation non prise en charge |
date |
Utiliser timestamp ou timestamptz |
smalldatetime |
Pas un type PostgreSQL natif |
datetime2 |
Non natif ; généralement géré par timestamp |
timestamptz |
Horodatage avec fuseau horaire ; non pris en charge |
time |
Heure du jour sans date |
localtime |
Heure basée sur l’horloge système |
Procédures stockées
Les procédures stockées ne sont pas prises en charge pour les entités PostgreSQL. Utilisez plutôt des tables et des vues.
MySQL
Version minimale
MySQL 8 ou version ultérieure est obligatoire.
Types de données non pris en charge
Les types de données MySQL suivants ne sont pas pris en charge par DAB :
| Type de données | Remarques |
|---|---|
UUID |
Identificateurs uniques universels |
DATE |
Dates du calendrier |
SMALLDATETIME |
Stockage de date et d’heure moins précis |
DATETIME2 |
Non natif ; Utiliser datetime |
DATETIMEOFFSET |
Dates et heures avec fuseau horaire |
TIME |
Heure du jour sans date |
LOCALTIME |
Heure actuelle basée sur l’horloge système |
Procédures stockées
Les procédures stockées ne sont pas prises en charge pour les entités MySQL. Utilisez plutôt des tables.
Azure Synapse Analytics (pool SQL dédié)
Objets pris en charge
Le pool SQL dédié prend en charge les tables, les vues et les procédures stockées, identiques à SQL Server et Azure SQL. Le pool SQL serverless n’est pas pris en charge.
Fonctionnalités non prises en charge
| Fonctionnalité | Remarques |
|---|---|
| Mutations multiples | Non pris en charge |
Contenu connexe
- Disponibilité des fonctionnalités
- Informations de référence sur la configuration de la source de données
- Implémenter la sécurité au niveau des lignes avec le contexte de session
- Configurer le générateur d’API de données pour Azure Cosmos DB pour NoSQL
- Stratégies de mise en production et de contrôle de version