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.
La data-source section définit les détails de l’accès à la base de données. Il définit également les options de base de données.
Paramètres de la source de données
| Property | Description |
|---|---|
| source de données | Objet contenant les paramètres de connectivité de base de données |
| data-source.database-type | Base de données utilisée dans le serveur principal : mssql, postgresql, mysql, cosmosdb_nosql, cosmosdb_postgresql |
| data-source.connection-string | Chaîne de connexion pour le type de base de données sélectionné |
| data-source.options | Propriétés spécifiques à la base de données (par exemple, options pour SQL Server, Cosmos DB, etc.) |
| data-source.options.database | Nom de la base de données Azure Cosmos DB pour NoSQL (obligatoire lorsque database-type = cosmosdb_nosql) |
| data-source.options.container | Nom du conteneur Azure Cosmos DB pour NoSQL (obligatoire quand database-type = cosmosdb_nosql) |
| data-source.options.schema | Chemin d’accès au fichier de schéma GraphQL (obligatoire lorsque database-type = cosmosdb_nosql) |
| data-source.options.set-session-context | Active l’envoi de revendications JSON Web Token (JWT) en tant que contexte de session (SQL Server uniquement) |
| data-source.health | Objet configurant des vérifications d’intégrité pour la source de données |
| data-source.health.enabled | Active le point de terminaison de contrôle d’intégrité |
| data-source.health.name | Identificateur utilisé dans le rapport d’intégrité |
| data-source.health.threshold-ms | Durée maximale en millisecondes pour la requête de contrôle d’intégrité |
| data-source.user-delegated-auth | Objet configurant l’authentification déléguée par l’utilisateur (mssql uniquement) surBehalf-Of (OBO) |
| data-source.user-delegated-auth.enabled | Active l’authentification OBO |
| data-source.user-delegated-auth.provider | Fournisseur d’identité OBO (actuellement EntraId uniquement) |
| data-source.user-delegated-auth.database-audience | Public cible pour le jeton SQL en aval |
Vue d’ensemble du format
{
"data-source": {
"database-type": <string>,
"connection-string": <string>,
"options": {
// mssql only
"set-session-context": <true> (default) | <false>,
// cosmosdb_nosql only
"database": <string>,
"container": <string>,
"schema": <string>
},
"health": {
"enabled": <true> (default) | <false>,
"name": <string>,
"threshold-ms": <integer; default: 1000>
},
"user-delegated-auth": {
"enabled": <true> | <false> (default),
"provider": <string>,
"database-audience": <string>
}
},
"data-source-files": ["<string>"]
}
Source de données
| Parent | Property | Type | Required | Default |
|---|---|---|---|---|
$root |
data-source |
object | ✔️ Oui | - |
Propriétés imbriquées
| Parent | Property | Type | Required | Default |
|---|---|---|---|---|
data-source |
database-type |
enum | ✔️ Oui | None |
data-source |
connection-string |
string | ✔️ Oui | None |
data-source |
options |
object | ❌ Non | None |
Valeurs de propriété
database-type |
Description | Version minimale |
|---|---|---|
mssql |
SQL dans Fabric | - |
mssql |
Azure SQL Database | - |
mssql |
Azure SQL MI | - |
mssql |
SQL Server | 2016 |
dwsql |
Azure Synapse Analytics | - |
dwsql |
Fabric Warehouse | - |
dwsql |
Point de terminaison Fabric SQL Analytics | - |
postgresql |
PostgreSQL | ver. 11 |
mysql |
MySQL | ver. 8 |
cosmosdb_nosql |
Azure Cosmos DB pour NoSQL | - |
cosmosdb_postgresql |
Azure Cosmos DB pour PostgreSQL | - |
Format
{
"data-source": {
"database-type": <string>,
"connection-string": <string>,
"options": {
"<key-name>": <string>
}
}
}
Exemple : Azure SQL &SQL Server
"data-source": {
"database-type": "mssql",
"connection-string": "Server=tcp:myserver.database.windows.net,1433;Initial Catalog=MyDatabase;User ID=MyUser;Password=MyPassword;Encrypt=True;TrustServerCertificate=False;Connection Timeout=30;",
"options": {
"set-session-context": true
}
}
Note
Nous utilisons SqlClient pour Azure SQL et SQL Server, qui prend en charge ces variantes de chaînes de connexion.
Consommer SESSION_CONTEXT
Pour Azure SQL et SQL Server, le générateur d’API de données peut inclure des informations sur les revendications dans les fichiers SESSION_CONTEXTSQL.
CREATE PROC GetUser @userId INT AS
BEGIN
-- Use claims
IF SESSION_CONTEXT(N'user_role') = 'admin'
BEGIN
RAISERROR('Unauthorized access', 16, 1);
END
SELECT Id, Name, Age, IsAdmin
FROM Users
WHERE Id = @userId;
END;
Exemple : Azure Cosmos DB
"data-source": {
"database-type": "cosmosdb_nosql",
"connection-string": "@env('SQL_CONNECTION_STRING')",
"options": {
"database": "Your_CosmosDB_Database_Name",
"container": "Your_CosmosDB_Container_Name",
"schema": "Path_to_Your_GraphQL_Schema_File"
}
}
Note
Les « options » spécifiées (database, containeret schema) sont spécifiques à Azure Cosmos DB.
Variables d'environnement
Utilisez des variables d’environnement pour empêcher les secrets de texte brut de votre fichier de configuration.
"data-source": {
"database-type": "mssql",
"connection-string": "@env('SQL_CONNECTION_STRING')"
}
Résilience des connexions
Le générateur d’API de données utilise l’interruption exponentielle pour réessayer les demandes de base de données après des erreurs temporaires.
| Attempts | First | Second | Third | Fourth | Fifth |
|---|---|---|---|---|---|
| Seconds | 2s | 4s | 8s | 16s | 32s |
Identités de service managées (MSI)
Les identités de service managé (MSI) sont prises en charge avec DefaultAzureCredential définies dans la Azure.Identity bibliothèque. En savoir plus sur les identités managées dans Microsoft Entra pour Azure SQL.
identités managées User-Assigned (UAMI)
Pour l’identité managée affectée par l’utilisateur, ajoutez les propriétés d’authentification et d’ID utilisateur à votre chaîne de connexion tout en remplaçant l’ID client de votre identité managée affectée par l’utilisateur : Authentication=Active Directory Managed Identity; User Id=<UMI_CLIENT_ID>;.
System-Assigned Managed Identity (SAMI)
Pour l’identité managée affectée par le système, ajoutez la propriété d’authentification et excluez les arguments UserId et Password de votre chaîne de connexion : Authentication=Active Directory Managed Identity;.
Intégrité (source de données)
| Parent | Property | Type | Required | Default |
|---|---|---|---|---|
data-source |
health |
object | No | – |
Le générateur d’API de données prend en charge plusieurs fichiers de configuration, chacun avec sa propre source de données. Ce bloc de configuration permet à chaque source de données d’avoir sa propre configuration d’intégrité.
Propriétés imbriquées
| Parent | Property | Type | Required | Default |
|---|---|---|---|---|
data-source.health |
enabled |
boolean | No | true |
data-source.health |
name |
string | No | database-type |
data-source.health |
threshold-ms |
integer | No | 1000 |
Vérifier le nom
Étant donné que plusieurs fichiers de configuration peuvent pointer vers des sources de données du même type, ces sources de données ne peuvent pas être distinguées dans le rapport d’intégrité. Permet name d’attribuer une étiquette unique et identifiable utilisée uniquement dans le rapport d’intégrité.
Vérifier le comportement
La requête la plus simple, propre au type de base de données, est exécutée sur la source de données donnée pour vérifier que la connexion peut être ouverte. Utilisez la threshold-ms propriété pour configurer la durée maximale acceptable (en millisecondes) pour que cette requête se termine.
Format
{
"data-source": {
"health": {
"enabled": <true> (default) | <false>,
"name": <string>,
"threshold-ms": <integer; default: 1000>
}
}
}
Authentification déléguée par l’utilisateur
| Parent | Property | Type | Required | Default |
|---|---|---|---|---|
data-source |
user-delegated-auth |
object | No | – |
Authentification déléguée par l’utilisateur surBehalf-Of (OBO) pour SQL Server et Azure SQL. Lorsqu’il est activé, DAB échange le jeton utilisateur entrant pour un jeton SQL en aval afin que la base de données s’authentifie en tant qu’utilisateur appelant réel. Cette fonctionnalité est prise en charge uniquement pour mssql les sources de données et nécessite l’authentification entra ID en amont.
Note
La fonctionnalité 2.0 du Générateur d’API de données décrite dans cette section est actuellement en préversion et peut changer avant la disponibilité générale. Pour plus d’informations, consultez Nouveautés de la version 2.0.
Propriétés imbriquées
| Parent | Property | Type | Required | Default |
|---|---|---|---|---|
data-source.user-delegated-auth |
enabled |
boolean | No | faux |
data-source.user-delegated-auth |
provider |
enum (EntraId) |
No | EntraId |
data-source.user-delegated-auth |
database-audience |
string | Oui (en cas d’activation) | None |
-
enabled— active ou désactive OBO. -
provider: fournisseur d’identité pour l’échange de jetons. Actuellement, seulEntraIdest pris en charge. -
database-audience— audience cible pour le jeton SQL en aval (par exemple,https://database.windows.net).
Variables d’environnement requises
Lorsque OBO est activé, DAB lit les variables d’environnement suivantes pour l’échange de jetons :
| Variable | Description |
|---|---|
DAB_OBO_CLIENTID |
ID d’application (client) de l’inscription de l’application Entra ID |
DAB_OBO_CLIENTSECRET |
Clé secrète client pour l’inscription de l’application |
DAB_OBO_TENANTID |
ID de locataire Entra ID |
Regroupement de connexions par utilisateur
Lorsque OBO est activé, DAB gère des pools de connexions SQL distincts par utilisateur afin que le jeton d’accès d’un utilisateur ne soit jamais réutilisé pour la demande d’un autre utilisateur.
Note
Le regroupement de connexions par utilisateur s’applique uniquement lorsque l’authentification OBO est active. Les déploiements standard ne sont pas affectés.
Format
{
"data-source": {
"database-type": "mssql",
"connection-string": "@env('SQL_CONNECTION_STRING')",
"user-delegated-auth": {
"enabled": <true> | <false> (default),
"provider": <string>,
"database-audience": <string>
}
}
}
Exemple
{
"data-source": {
"database-type": "mssql",
"connection-string": "@env('SQL_CONNECTION_STRING')",
"user-delegated-auth": {
"enabled": true,
"provider": "EntraId",
"database-audience": "https://database.windows.net"
}
}
}
Important
OBO est pris en charge uniquement pour mssql. La database-audience propriété est requise lorsque OBO est activé. L’exécution de cette configuration sur une source de données non MSSQL échoue.