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žívaná back-endem: 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

Tvůrce rozhraní Data API používá SqlClient pro Azure SQL a SQL Server, které podporuje varianty these připojovací řetězec.

Použijte 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) se podporují s DefaultAzureCredential definovanými v knihovně Azure.Identity. Přečtěte si další informace o spravovaných identitách v Microsoft Entra pro Azure SQL.

Spravované identity přiřazené uživatelem (UAMI)

Pro spravovanou identitu přiřazenou uživatelem připojte k připojovací řetězec vlastnosti Authentication a Uživatelské ID a nahraďte id klienta spravované identity přiřazené uživatelem: Authentication=služba Active Directory Managed Identity; User Id=<UMI_CLIENT_ID>;.

Spravovaná identita přiřazená systémem (SAMI)

Pro spravovanou identitu přiřazenou systémem připojte vlastnost Authentication a vylučte z připojovací řetězec argumenty UserId a Password z připojovací řetězec: Authentication=služba 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 zdroje dat mssql a vyžaduje upstream ověřování Microsoft 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_CLIENT_ID ID aplikace (klienta) registrace aplikace Microsoft Entra ID
DAB_OBO_CLIENT_SECRET Tajný klíč klienta pro registraci aplikace
DAB_OBO_TENANT_ID Microsoft Entra ID ID tenanta

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í.