Zdroj dat

Oddíl data-source definuje podrobnosti o přístupu k databázi. Definuje také možnosti databáze.

Nastavení zdroje dat

Property Description
zdroj dat Objekt obsahující nastavení připojení k databázi
data-source.database-type Databáze použitá v back-endu: mssql, postgresqlmysql, , cosmosdb_nosqlcosmosdb_postgresql
data-source.connection-string Připojovací řetězec pro vybraný typ databáze
data-source.options Vlastnosti specifické pro databázi (například možnosti PRO SQL Server, Cosmos DB atd.)
data-source.options.database Název databáze Azure Cosmos DB for NoSQL (vyžaduje se, když database-type = cosmosdb_nosql)
data-source.options.container Název kontejneru Azure Cosmos DB for NoSQL (vyžaduje se, když database-type = cosmosdb_nosql)
data-source.options.schema Cesta k souboru schématu GraphQL (vyžaduje se v případě database-type = cosmosdb_nosql)
data-source.options.set-session-context Umožňuje odesílání deklarací identity webového tokenu JSON (JWT) jako kontextu relace (pouze SQL Server).
data-source.health Objekt konfigurující kontroly stavu pro zdroj dat
data-source.health.enabled Povolí koncový bod kontroly stavu.
data-source.health.name Identifikátor použitý v sestavě stavu
data-source.health.threshold-ms Maximální doba trvání dotazu kontroly stavu v milisekundách
data-source.user-delegated-auth Objekt konfigurující ověřování delegované uživatelem (Behalf-Of OBO) (pouze mssql)
data-source.user-delegated-auth.enabled Povolí ověřování OBO.
data-source.user-delegated-auth.provider Zprostředkovatel identity OBO (aktuálně EntraId pouze)
data-source.user-delegated-auth.database-audience Cílová cílová skupina pro podřízený token SQL

Přehled formátu

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

Zdroj dat

Parent Property Typ Required Default
$root data-source objekt ✔️ Ano -

Vnořené vlastnosti

Parent Property Typ Required Default
data-source database-type výčet ✔️ Ano None
data-source connection-string řetězec ✔️ Ano None
data-source options objekt ❌ Ne None

Hodnoty nemovitostí

database-type Description Minimální verze
mssql SQL v prostředcích infrastruktury -
mssql Azure SQL Database -
mssql Azure SQL MI -
mssql SQL Server 2016
dwsql Azure Synapse Analytics -
dwsql Fabric Warehouse -
dwsql Koncový bod Fabric SQL Analytics -
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říklad: Azure SQL a 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

Používáme SqlClient pro Azure SQL a SQL Server, které podporují tyto varianty připojovacích řetězců.

Pohlcující SESSION_CONTEXT

Pro Azure SQL a SQL Server může Tvůrce rozhraní DATA API zahrnout informace o deklaracích v SQL 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říklad: 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

Zadané možnosti (database, containera schema) jsou specifické pro službu Azure Cosmos DB.

Proměnné prostředí

Pomocí proměnných prostředí udržujte tajné kódy ve formátu prostého textu mimo konfigurační soubor.

Tip

Tvůrce rozhraní Data API podporuje @env() funkci i .env soubory.

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

Odolnost připojení

Tvůrce rozhraní Data API používá exponenciální zpochybnění žádostí o databázi po přechodných chybách.

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

Identity spravované služby (MSI)

Identity spravované služby (MSI) jsou podporovány s definovanými DefaultAzureCredential v Azure.Identity knihovně. Přečtěte si další informace o spravovaných identitách v Microsoft Entra pro Azure SQL.

User-Assigned spravované identity (UAMI)

Pro spravovanou identitu přiřazenou uživatelem připojte vlastnosti Ověřování a ID uživatele k připojovacímu řetězci a nahraďte v ID klienta spravované identity přiřazené uživatelem: Authentication=Active Directory Managed Identity; User Id=<UMI_CLIENT_ID>;.

spravovaná identita System-Assigned (SAMI)

Pro spravovanou identitu přiřazenou systémem připojte vlastnost Ověřování a vylučte z připojovacího řetězce argumenty UserId a Password : Authentication=Active Directory Managed Identity;.

Stav (zdroj dat)

Parent Property Typ Required Default
data-source health objekt No

Tvůrce rozhraní Data API podporuje více konfiguračních souborů, z nichž každý má vlastní zdroj dat. Tento blok konfigurace umožňuje každému zdroji dat mít vlastní konfiguraci stavu.

Vnořené vlastnosti

Parent Property Typ Required Default
data-source.health enabled boolean No true
data-source.health name řetězec No database-type
data-source.health threshold-ms integer No 1000

Kontrola názvu

Vzhledem k tomu, že několik konfiguračních souborů může odkazovat na zdroje dat stejného typu, nelze tyto zdroje dat rozlišit v sestavě o stavu. Slouží name k přiřazení jedinečného identifikovatelného popisku použitého pouze ve zprávě o stavu.

Kontrola chování

Nejjednodušší možný dotaz – specifický pro typ databáze – se provádí na daném zdroji dat, aby bylo možné ověřit, že je možné připojení otevřít. threshold-ms Pomocí vlastnosti nakonfigurujte maximální přijatelnou dobu trvání (v milisekundách) pro dokončení dotazu.

Format

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

Ověřování delegované uživatelem

Parent Property Typ Required Default
data-source user-delegated-auth objekt No

On-Behalf-Of (OBO) uživatelem delegované ověřování pro SQL Server a Azure SQL. Pokud je tato možnost povolená, JAZYK DAB vymění příchozí token uživatele pro podřízený token SQL, aby se databáze ověřila jako skutečný volající uživatel. Tato funkce je podporovaná pouze pro mssql zdroje dat a vyžaduje upstream ověřování Entra ID.

Note

Funkce tvůrce rozhraní Data API 2.0 popsané v této části jsou aktuálně ve verzi Preview a můžou se změnit před obecnou dostupností. Další informace najdete v tématu Co je nového ve verzi 2.0.

Vnořené vlastnosti

Parent Property Typ Required Default
data-source.user-delegated-auth enabled boolean No false
data-source.user-delegated-auth provider enum (EntraId) No EntraId
data-source.user-delegated-auth database-audience řetězec Ano (pokud je povoleno) None
  • enabled– zapne nebo vypne OBO.
  • provider– zprostředkovatele identity pro výměnu tokenů. V současné době se podporuje pouze EntraId.
  • database-audience– cílová skupina podřízeného tokenu SQL (například https://database.windows.net).

Požadované proměnné prostředí

Pokud je povolený objekt OBO, DAB přečte následující proměnné prostředí pro výměnu tokenů:

Proměnná Description
DAB_OBO_CLIENTID ID aplikace (klienta) registrace aplikace Entra ID
DAB_OBO_CLIENTSECRET Tajný klíč klienta pro registraci aplikace
DAB_OBO_TENANTID ID tenanta Entra ID

Sdružování připojení pro jednotlivé uživatele

Když je povolený OBO, DAB udržuje samostatné fondy připojení SQL na uživatele, aby přístupový token jednoho uživatele nebyl nikdy znovu použit pro požadavek jiného uživatele.

Note

Sdružování připojení pro jednotlivé uživatele platí jenom v případech, kdy je ověřování OBO aktivní. Standardní nasazení nejsou ovlivněná.

Format

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

Příklad

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

Důležité

OBO je podporován pouze pro mssql. Vlastnost database-audience je vyžadována při povolení OBO. Spuštění této konfigurace pro jiný zdroj dat než MSSQL selže při ověřování.