Adatforrás

A data-source szakasz az adatbázis-hozzáférés részleteit határozza meg. Az adatbázis-beállításokat is meghatározza.

Adatforrás beállításai

Property Description
adatforrás Adatbázis-kapcsolati beállításokat tartalmazó objektum
data-source.database-type A háttérrendszerben használt adatbázis: mssql, postgresql, mysql, cosmosdb_nosqlcosmosdb_postgresql
data-source.connection-string A kijelölt adatbázistípus kapcsolati sztringje
data-source.options Adatbázis-specifikus tulajdonságok (például az SQL Server, a Cosmos DB stb. beállításai)
data-source.options.database Az Azure Cosmos DB for NoSQL-adatbázis neve (amikor database-type = cosmosdb_nosqlszükséges)
data-source.options.container Az Azure Cosmos DB for NoSQL-tároló neve (amikor database-type = cosmosdb_nosqlszükséges)
data-source.options.schema A GraphQL-sémafájl elérési útja (amikor database-type = cosmosdb_nosqlszükséges)
data-source.options.set-session-context JSON-webjogkivonat (JWT) jogcímek küldésének engedélyezése munkamenet-környezetként (csak SQL Server esetén)
adatforrás.health Az adatforrás állapot-ellenőrzését konfiguráló objektum
data-source.health.enabled Az állapot-ellenőrzési végpont engedélyezése
data-source.health.name Az állapotjelentésben használt azonosító
data-source.health.threshold-ms Állapot-ellenőrzési lekérdezés maximális időtartama ezredmásodpercben
data-source.user-delegated-auth On-Behalf-Of (OBO) felhasználó által delegált hitelesítést konfiguráló objektum (csak mssql esetén)
data-source.user-delegated-auth.enabled OBO-hitelesítés engedélyezése
data-source.user-delegated-auth.provider OBO identitásszolgáltató (jelenleg EntraId csak)
data-source.user-delegated-auth.database-audience Célközönség az alsóbb rétegbeli SQL-jogkivonathoz

Formátum áttekintése

{
  "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>"]
}

Adatforrás

Parent Property Típus Required Default
$root data-source objektum ✔️ Igen -

Beágyazott tulajdonságok

Parent Property Típus Required Default
data-source database-type felsorolás ✔️ Igen None
data-source connection-string karakterlánc ✔️ Igen None
data-source options objektum ❌ Nem None

Tulajdonságértékek

database-type Description Minimális verzió
mssql SQL a Fabricben -
mssql Azure SQL Database -
mssql Azure SQL MI -
mssql SQL Server 2016
dwsql Azure Synapse Analytics -
dwsql Szövet Raktár -
dwsql Fabric SQL Analytics-végpont -
postgresql PostgreSQL ver. 11
mysql MySQL ver. 8
cosmosdb_nosql Azure Cosmos DB for NoSQL -
cosmosdb_postgresql Azure Cosmos DB for PostgreSQL -

Format

{
  "data-source": {
    "database-type": <string>,
    "connection-string": <string>,
    "options": {
      "<key-name>": <string>
    }
  }
}

Példa: 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

Az Azure SQL-hez és az SQL Serverhez használjuk SqlClient , amely támogatja ezeket a kapcsolati sztringvariánsokat.

Fogyasztása SESSION_CONTEXT

Az Azure SQL és az SQL Server esetében a Data API Builder jogcímadatokat is tartalmazhat az SQL-ben SESSION_CONTEXT.

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;

Példa: 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

A megadott (databasecontainerés schema) "beállítások" az Azure Cosmos DB-hez tartoznak.

Környezeti változók

Környezeti változók használatával az egyszerű szöveges titkos kódokat a konfigurációs fájlból távol tarthatja.

Tip

A Data API Builder mind a függvényt, mind a@env() fájlokat támogatja..env

"data-source": {
  "database-type": "mssql",
  "connection-string": "@env('SQL_CONNECTION_STRING')"
}

Kapcsolat rugalmassága

A Data API Builder exponenciális backoff használatával újrapróbálkozza az adatbázis-kérelmeket átmeneti hibák után.

Attempts First Second Third Fourth Fifth
Seconds 2s 4s 8s 16s 32s

Felügyeltszolgáltatás-identitások (MSI)

A felügyeltszolgáltatás-identitások (MSI) támogatottak a DefaultAzureCredential kódtárban definiálva Azure.Identity . További információ a felügyelt identitásokról az Azure SQL-hez készült Microsoft Entra-ban.

User-Assigned felügyelt identitások (UAMI)

Felhasználó által hozzárendelt felügyelt identitás esetén fűzze hozzá a hitelesítési és felhasználói azonosító tulajdonságokat a kapcsolati sztringhez, miközben a felhasználó által hozzárendelt felügyelt identitás ügyfélazonosítójában a következőt helyettesíti: Authentication=Active Directory Managed Identity; User Id=<UMI_CLIENT_ID>;.

System-Assigned felügyelt identitás (SAMI)

A rendszer által hozzárendelt felügyelt identitáshoz fűzze hozzá a Hitelesítési tulajdonságot, és zárja ki a UserId és a Password argumentumokat a kapcsolati sztringből: Authentication=Active Directory Managed Identity;.

Állapot (adatforrás)

Parent Property Típus Required Default
data-source health objektum No

A Data API Builder több konfigurációs fájlt is támogat, amelyek mindegyike saját adatforrással rendelkezik. Ez a konfigurációs blokk lehetővé teszi, hogy minden adatforrás saját állapotkonfigurációval rendelkezzen.

Beágyazott tulajdonságok

Parent Property Típus Required Default
data-source.health enabled boolean No true
data-source.health name karakterlánc No database-type
data-source.health threshold-ms egész szám No 1000

Név ellenőrzése

Mivel több konfigurációs fájl is azonos típusú adatforrásokra mutathat, ezek az adatforrások nem különböztethetők meg az állapotjelentésben. A csak az állapotjelentésben használt egyedi, azonosítható címke hozzárendeléséhez használható name .

Viselkedés ellenőrzése

A rendszer az adatbázis típusának megfelelő legegyszerűbb lekérdezést hajtja végre az adott adatforráson annak ellenőrzéséhez, hogy a kapcsolat megnyitható-e. threshold-ms A tulajdonság használatával konfigurálhatja a lekérdezés maximális elfogadható időtartamát (ezredmásodpercben).

Format

{
  "data-source": {
    "health": {
      "enabled": <true> (default) | <false>,
      "name": <string>,
      "threshold-ms": <integer; default: 1000>
    }
  }
}

Felhasználó által delegált hitelesítés

Parent Property Típus Required Default
data-source user-delegated-auth objektum No

On-Behalf-Of (OBO) felhasználó által delegált hitelesítés SQL Serverhez és Azure SQL-hez. Ha engedélyezve van, a DAB kicseréli a bejövő felhasználói jogkivonatot egy alsóbb rétegbeli SQL-jogkivonatra, hogy az adatbázis tényleges hívó felhasználóként hitelesítse magát. Ez a funkció csak adatforrások esetében mssql támogatott, és entra-azonosítós hitelesítést igényel a felsőbb rétegben.

Note

Az ebben a szakaszban ismertetett Data API Builder 2.0 funkció jelenleg előzetes verzióban érhető el, és az általános rendelkezésre állás előtt változhat. További információ: A 2.0-s verzió újdonságai.

Beágyazott tulajdonságok

Parent Property Típus Required Default
data-source.user-delegated-auth enabled boolean No téves
data-source.user-delegated-auth provider enum (EntraId) No EntraId
data-source.user-delegated-auth database-audience karakterlánc Igen (ha engedélyezve van) None
  • enabled— be- vagy kikapcsolja az OBO-t.
  • provider– a jogkivonat-csere identitásszolgáltatója. Jelenleg csak EntraId támogatott.
  • database-audience— az alsóbb rétegbeli SQL-jogkivonat célközönsége (például https://database.windows.net).

Szükséges környezeti változók

Ha az OBO engedélyezve van, a DAB a következő környezeti változókat olvassa be a tokencseréhez:

Variable Description
DAB_OBO_CLIENTID Az Entra-azonosító alkalmazásregisztrációjának alkalmazás-(ügyfél-) azonosítója
DAB_OBO_CLIENTSECRET Az alkalmazásregisztráció ügyfélkódja
DAB_OBO_TENANTID Entra-azonosító bérlőazonosítója

Felhasználónkénti kapcsolatkészletezés

Ha az OBO engedélyezve van, a DAB felhasználónként külön SQL-kapcsolatkészleteket tart fenn, hogy az egyik felhasználó hozzáférési jogkivonata soha ne legyen újra felhasználva egy másik felhasználó kéréséhez.

Note

Felhasználónkénti kapcsolatkészletezés csak akkor érvényes, ha az OBO-hitelesítés aktív. A standard üzemelő példányok nincsenek hatással.

Format

{
  "data-source": {
    "database-type": "mssql",
    "connection-string": "@env('SQL_CONNECTION_STRING')",
    "user-delegated-auth": {
      "enabled": <true> | <false> (default),
      "provider": <string>,
      "database-audience": <string>
    }
  }
}

Example

{
  "data-source": {
    "database-type": "mssql",
    "connection-string": "@env('SQL_CONNECTION_STRING')",
    "user-delegated-auth": {
      "enabled": true,
      "provider": "EntraId",
      "database-audience": "https://database.windows.net"
    }
  }
}

Fontos

Az OBO csak mssqla . A database-audience tulajdonságra akkor van szükség, ha az OBO engedélyezve van. A konfiguráció futtatása nem MSSQL-adatforráson sikertelen érvényesítés.