Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Tento odkaz popisuje funkce, chování a požadavky specifické pro jednu nebo více databázových platforem podporovaných tvůrcem rozhraní DATA API (DAB). Srovnávací matici funkcí napříč databázemi najdete v tématu Dostupnost funkcí.
Podpora verzí databáze
DAB podporuje následující databázové platformy. Minimální požadavky na verzi platí pro samoobslužná nasazení. Databáze PaaS (Platforma jako služba) nemají minimální požadavek na verzi, protože tato služba spravuje verzi.
| Databázová platforma | Zkratka | Minimální verze | Poznámky |
|---|---|---|---|
| SQL Server | Řada SQL | 2016 | |
| Azure SQL | Řada SQL | Není k dispozici (PaaS) | |
| Microsoft Fabric SQL | Řada SQL | Není k dispozici (PaaS) | |
| Azure Cosmos DB for NoSQL | Cosmos DB | Není k dispozici (PaaS) | Pouze GraphQL; žádné koncové body REST |
| PostgreSQL | PGSQL | 11 | |
| MySQL | MySQL | 8 | |
| Azure Synapse Analytics (vyhrazený SQL fond) | SQLDW | Není k dispozici (PaaS) | Bezserverový fond SQL se nepodporuje. |
Důležité
Ověřte, že místní vývojová databáze i všechny nasazené databáze splňují požadavek na minimální verzi. DAB se připojuje pomocí stejného ovladače v obou prostředích. Starší verze v obou umístěních způsobuje chyby za běhu.
SQL Server a Azure SQL
SESSION_CONTEXT
V případě SQL Serveru a Azure SQL může DAB rozšířit ověřené deklarace identity uživatelů do databáze voláním sp_set_session_context před spuštěním každého dotazu. Tento mechanismus umožňuje sql nativním zásadám zabezpečení na úrovni řádků a uloženým procedurám číst identitu volajícího z databázového stroje.
Když set-session-context je v konfiguraci DAB povolená, DAB odešle všechny ověřené deklarace identity jako páry klíč-hodnota:
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;
Mezi odesílané běžné deklarace identity patří roles, suboida všechny vlastní deklarace identity, které vaše zprostředkovatel identity zahrnuje v JWT.
Povolení SESSION_CONTEXT
Nastavit --set-session-context true při volání dab init:
dab init \
--database-type mssql \
--connection-string "@env('SQL_CONNECTION_STRING')" \
--set-session-context true
Nebo vlastnost nastavte přímo v dab-config.json:
{
"data-source": {
"database-type": "mssql",
"connection-string": "@env('SQL_CONNECTION_STRING')",
"options": {
"set-session-context": true
}
}
}
Výstraha
Povolení set-session-context zakáže ukládání odpovědí do mezipaměti pro tento zdroj dat. Vzhledem k tomu, že každý požadavek nastavuje jedinečné hodnoty relace, nesmí být odpovědi uložené v mezipaměti z relace jednoho uživatele obsluhovány do jiné.
Použití SESSION_CONTEXT v SQL
Po povolení set-session-contextmohou vaše objekty SQL číst hodnoty deklarací identity:
-- 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));
Úplný návod najdete v tématu Implementace zabezpečení na úrovni řádků s kontextem relace.
SESSION_CONTEXT a sdružování připojení
DAB resetuje všechny kontextové hodnoty relace na začátku každého požadavku. Vzhledem k tomu, že set-session-context vynutí sémantiku připojení pro jednotlivé uživatele, zabrání se opakované použití připojení mezi uživateli automaticky, když je tato možnost povolená.
Varianty připojovacích řetězců
DAB používá Microsoft.Data.SqlClient pro SQL Server a Azure SQL. Knihovna podporuje tyto formáty připojovacího řetězce.
Běžné formáty:
| Metoda ověřování | Model připojovacího řetězce |
|---|---|
| Přihlášení SQL | Server=tcp:<server>.database.windows.net;Database=<db>;User ID=<user>;Password=<pwd>; |
| Spravovaná identita | Server=tcp:<server>.database.windows.net;Database=<db>;Authentication=Active Directory Managed Identity; |
| uživatelsky přiřazená spravovaná identita | Server=tcp:<server>.database.windows.net;Database=<db>;Authentication=Active Directory Managed Identity;User ID=<client-id>; |
| Výchozí přihlašovací údaje Azure | Server=tcp:<server>.database.windows.net;Database=<db>;Authentication=Active Directory Default; |
Návod
Ukládat připojovací řetězce do proměnných prostředí a odkazovat na ně pomocí @env('SQL_CONNECTION_STRING'). Pro produkční nasazení uložte připojovací řetězec ve službě Azure Key Vault a odkazujte na něj .@akv()
Nepodporované datové typy
DAB nepodporuje následující datové typy SQL Serveru a Azure SQL:
| Datový typ | Reason |
|---|---|
geography |
Geoprostorový typ; serializace není podporována |
geometry |
Planární prostorový typ; serializace není podporována |
hierarchyid |
Hierarchický datový typ; serializace není podporována |
json |
Nativní typ JSON (aktuálně ve verzi Preview) |
rowversion |
Typ správy verzí řádků; nezahrnut do odpovědí rozhraní API |
sql_variant |
Sloupce s proměnným typem; Odvození typu není podporováno. |
vector |
Typ vektoru (aktuálně ve verzi Preview) |
xml |
Typ XML; serializace není podporována |
Azure Cosmos DB for NoSQL
Požadavek na schéma
Na rozdíl od relačních databází je služba Azure Cosmos DB for NoSQL nezávislá na schématu. DAB nemůže introspektovat kontejner Cosmos DB pro generování typů GraphQL. Musíte zadat soubor schématu GraphQL (.gql), který definuje strukturu dokumentu.
Soubor schématu používá standardní jazyk SDL (GraphQL Schema Definition Language) se dvěma vlastními direktivami:
| Direktiva | Povinné | Description |
|---|---|---|
@model |
Ano | Mapuje typ GraphQL na název entity DAB. |
@authorize |
Ne | Omezuje přístup k polím nebo typům na konkrétní role. |
@model směrnice
Direktiva @model(name: "...") se vyžaduje pro každý typ GraphQL, který zveřejňujete prostřednictvím JAZYKA DAB. Hodnota name musí přesně odpovídat názvu entity v konfiguračním souboru DAB.
type Book @model(name: "Book") {
id: ID
title: String
year: Int
}
@authorize směrnice
Direktiva @authorize poskytuje řízení přístupu na úrovni polí a typů pro dotazy GraphQL služby Cosmos DB. Přijímá parametr se seznamem roles rolí, které mají přístup k poli nebo typu.
type Book @model(name: "Book") {
id: ID
title: String @authorize(roles: ["authenticated", "librarian"])
internalNotes: String @authorize(roles: ["editor"])
}
Můžete také použít @authorize na úrovni typu:
type InternalReport @model(name: "InternalReport") @authorize(roles: ["auditor"]) {
id: ID
summary: String
}
Důležité
Direktiva @authorizese přidá k oprávněním na úrovni entity. Direktiva i blok oprávnění entity musí umožňovat, aby žádost o přístup mohla proběhnout úspěšně. Pokud pole obsahuje @authorize(roles: ["editor"]) , ale entita nemá pro žádnou položku editoroprávnění, žádost se odmítne.
Poznámka:
@authorize(policy: "...") není podporováno. Používejte @authorize(roles: [...]) pouze.
Kompletní průvodce nastavením najdete v tématu Nastavení tvůrce rozhraní DATA API pro Azure Cosmos DB for NoSQL.
Nedostupnost rozhraní REST API
DAB negeneruje koncové body REST pro Azure Cosmos DB for NoSQL. Azure Cosmos DB poskytuje komplexní nativní rozhraní REST API pro operace dokumentů. Vygenerují se pouze koncové body GraphQL. Dokumenty OpenAPI se negenerují pro entity Cosmos DB.
Pokud chcete získat přístup k datům přes REST, použijte přímo rozhraní REST API služby Azure Cosmos DB .
Nepodporované funkce pro Cosmos DB
Azure Cosmos DB for NoSQL nepodporuje následující funkce:
| funkce | Poznámky |
|---|---|
| Koncové body REST | Místo toho použijte nativní rozhraní REST API služby Cosmos DB. |
| Zásady databáze | Predikáty zásad vyžadují sémantiku relačních dotazů. |
| Uložené procedury | Nepodporuje se jako entity DAB. |
| Relationships | Relace mezi kontejnery se nepodporují. |
Řazení ($orderby) |
Nepodporuje se v dotazech GraphQL |
| Aggregation | Nepodporováno |
| Více mutací | Nepodporováno |
| Kontext relace | Funkce specifická pro SQL |
PostgreSQL
Minimální verze
Vyžaduje se PostgreSQL 11 nebo novější. JAZYK DAB používá Npgsql jako ovladač PostgreSQL.
Nepodporované datové typy
DaB nepodporuje následující datové typy PostgreSQL:
| Datový typ | Poznámky |
|---|---|
bytea |
Binární řetězec; serializace není podporována |
date |
Použít timestamp nebo timestamptz |
smalldatetime |
Nejedná se o nativní typ PostgreSQL |
datetime2 |
Není nativní; obvykle zvládá timestamp |
timestamptz |
Časové razítko s časovým pásmem; nepodporováno |
time |
Čas dne bez data |
localtime |
Systémový čas založený na hodinách |
Uložené procedury
U entit PostgreSQL se uložené procedury nepodporují. Místo toho používejte tabulky a zobrazení.
MySQL
Minimální verze
Vyžaduje se MySQL 8 nebo novější.
Nepodporované datové typy
DaB nepodporuje následující datové typy MySQL:
| Datový typ | Poznámky |
|---|---|
UUID |
Univerzální jedinečné identifikátory |
DATE |
Kalendářní data |
SMALLDATETIME |
Méně přesné úložiště data a času |
DATETIME2 |
Není nativní; Použít datetime |
DATETIMEOFFSET |
Data a časy s časovým pásmem |
TIME |
Čas dne bez data |
LOCALTIME |
Aktuální čas založený na systémových hodinách |
Uložené procedury
Uložené procedury nejsou podporované pro entity MySQL. Místo toho používejte tabulky.
Azure Synapse Analytics (vyhrazený SQL fond)
Podporované objekty
Vyhrazený fond SQL podporuje tabulky, zobrazení a uložené procedury – stejné jako SQL Server a Azure SQL. Bezserverový fond SQL se nepodporuje.
Nepodporované funkce
| funkce | Poznámky |
|---|---|
| Více mutací | Nepodporováno |