Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
Ez a referencia a Data API Builder (DAB) által támogatott egy vagy több adatbázisplatformra jellemző funkciókat, viselkedéseket és követelményeket ismerteti. Adatbázisközi szolgáltatás-összehasonlító mátrixért tekintse meg a szolgáltatás rendelkezésre állását ismertető témakört.
Adatbázis verziótámogatása
A DAB az alábbi adatbázisplatformokat támogatja. A minimális verziókövetelmények a saját üzemeltetésű üzemelő példányokra vonatkoznak. A szolgáltatásként nyújtott platform (PaaS) adatbázisoknak nincs minimális verziókövetelményük, mert a szolgáltatás kezeli a verziót.
| Adatbázisplatform | Rövidítés | Minimális verzió | Jegyzetek |
|---|---|---|---|
| SQL Server | SQL-család | 2016 | |
| Azure SQL | SQL-család | N/A (PaaS) | |
| Microsoft Fabric SQL | SQL-család | N/A (PaaS) | |
| Azure Cosmos DB for NoSQL | Cosmos DB | N/A (PaaS) | Csak GraphQL; nincsenek REST-végpontok |
| PostgreSQL | PGSQL | 11 | |
| MySQL | MySQL | 8 | |
| Azure Synapse Analytics (dedikált SQL-készlet) | SQLDW | N/A (PaaS) | A kiszolgáló nélküli SQL-készlet nem támogatott |
Fontos
Ellenőrizze, hogy a helyi fejlesztési adatbázis és az üzembe helyezett adatbázisok megfelelnek-e a minimális verziókövetelménynek. A DAB ugyanazzal az illesztőprogramtal csatlakozik mindkét környezetben. Egy régebbi verzió mindkét helyen futásidejű hibákat okoz.
SQL Server és Azure SQL
SESSION_CONTEXT
Az SQL Server és az Azure SQL esetében a DAB az egyes lekérdezések végrehajtása előtt hívással sp_set_session_context propagálja a hitelesített felhasználói jogcímeket az adatbázisba. Ez a mechanizmus lehetővé teszi, hogy az SQL-natív sorszintű biztonsági szabályzatok és a tárolt eljárások beolvassák a hívó identitását az adatbázismotorból.
Ha set-session-context engedélyezve van a DAB-konfigurációban, a DAB az összes hitelesített jogcímet kulcs-érték párokként küldi el:
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;
Az elküldött gyakori jogcímek közé tartoznak rolesa JWT-ben suboidszereplő egyéni jogcímek, valamint az identitásszolgáltató által tartalmazott egyéni jogcímek.
SESSION_CONTEXT engedélyezése
Beállítás --set-session-context true híváskor dab init:
dab init \
--database-type mssql \
--connection-string "@env('SQL_CONNECTION_STRING')" \
--set-session-context true
Vagy állítsa be a tulajdonságot közvetlenül a következőben dab-config.json:
{
"data-source": {
"database-type": "mssql",
"connection-string": "@env('SQL_CONNECTION_STRING')",
"options": {
"set-session-context": true
}
}
}
Figyelmeztetés
Az set-session-context engedélyezés letiltja az adatforrás válasz gyorsítótárazását. Mivel minden kérés különböző munkamenet-értékeket állít be, az egyik felhasználó munkamenetéből származó gyorsítótárazott válaszokat nem lehet egy másiknak kézbesíteni.
SESSION_CONTEXT használata az SQL-ben
Az engedélyezés set-session-contextután az SQL-objektumok beolvashatják a jogcímértékeket:
-- 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));
A teljes útmutatót a sorszintű biztonság megvalósítása munkamenet-környezettel című témakörben találja.
SESSION_CONTEXT és kapcsolatkészletezés
A DAB minden kérés elején alaphelyzetbe állítja az összes munkamenet-környezeti értéket.
set-session-context Mivel azonban a felhasználónkénti kapcsolat szemantikáját kényszeríti ki, a felhasználók közötti kapcsolat újrafelhasználása automatikusan elkerülhető, ha ez a beállítás engedélyezve van.
Kapcsolati sztringvariánsok
A DAB az SQL Serverhez és az Azure SQL-hez használható Microsoft.Data.SqlClient . A kódtár támogatja ezeket a kapcsolati sztringformátumokat.
Gyakori formátumok:
| Hitelesítési módszer | Kapcsolati sztringminta |
|---|---|
| SQL-bejelentkezés | Server=tcp:<server>.database.windows.net;Database=<db>;User ID=<user>;Password=<pwd>; |
| Felügyelt identitás | Server=tcp:<server>.database.windows.net;Database=<db>;Authentication=Active Directory Managed Identity; |
| Felhasználó által hozzárendelt felügyelt identitás | Server=tcp:<server>.database.windows.net;Database=<db>;Authentication=Active Directory Managed Identity;User ID=<client-id>; |
| Alapértelmezett Azure-hitelesítő adatok | Server=tcp:<server>.database.windows.net;Database=<db>;Authentication=Active Directory Default; |
Jótanács
Tárolja a kapcsolati sztringeket a környezeti változókban, és hivatkozzon rájuk a következővel @env('SQL_CONNECTION_STRING'): . Éles környezetekben tárolja a kapcsolati sztringet az Azure Key Vaultban, és hivatkozzon rá @akv().
Nem támogatott adattípusok
A DAB nem támogatja az alábbi SQL Server- és Azure SQL-adattípusokat:
| Adattípus | Jogcím |
|---|---|
geography |
Térinformatikai típus; a szerializálás nem támogatott |
geometry |
Planáris térbeli típus; a szerializálás nem támogatott |
hierarchyid |
Hierarchikus adattípus; a szerializálás nem támogatott |
json |
Natív JSON-típus (jelenleg előzetes verzióban) |
rowversion |
Sorverzió típusa; nem szerepel az API-válaszokban |
sql_variant |
Változó típusú oszlopok; nem támogatott típuskövetkeztetés |
vector |
Vektortípus (jelenleg előzetes verzióban) |
xml |
XML-típus; a szerializálás nem támogatott |
Azure Cosmos DB for NoSQL
Sémakövetelmény
A relációs adatbázisoktól eltérően az Azure Cosmos DB for NoSQL sémafüggetlen. A DAB nem tud betekinteni egy Cosmos DB-tárolóba GraphQL-típusok létrehozásához. Meg kell adnia egy GraphQL-sémafájlt (.gql), amely meghatározza a dokumentumstruktúrát.
A sémafájl szabványos GraphQL-sémadefiníciós nyelvet (SDL) használ két egyéni direktívával:
| Irányelv | Szükséges | Description |
|---|---|---|
@model |
Igen | GraphQL-típus leképezése DAB-entitásnévre |
@authorize |
No | Adott szerepkörökhöz való mező- vagy típushozzáférés korlátozása |
@model irányelv
Az @model(name: "...") irányelvre minden OLYAN GraphQL-típusra szükség van, amelyet a DAB-n keresztül tesz elérhetővé. Az name értéknek pontosan meg kell egyeznie a DAB-konfigurációs fájl entitásnevével.
type Book @model(name: "Book") {
id: ID
title: String
year: Int
}
@authorize irányelv
Az @authorize irányelv mezőszintű és típusszintű hozzáférés-vezérlést biztosít a Cosmos DB GraphQL-lekérdezésekhez. Elfogad egy paramétert roles , amely felsorolja a mezőhöz vagy típushoz hozzáférő szerepköröket.
type Book @model(name: "Book") {
id: ID
title: String @authorize(roles: ["authenticated", "librarian"])
internalNotes: String @authorize(roles: ["editor"])
}
A típusszinten is alkalmazható @authorize :
type InternalReport @model(name: "InternalReport") @authorize(roles: ["auditor"]) {
id: ID
summary: String
}
Fontos
Az @authorize irányelv entitásszintű engedélyeket ad hozzá . Az irányelvnek és az entitás engedélyblokkjának egyaránt engedélyeznie kell a hozzáférés-kérés sikerességét. Ha egy mező rendelkezik @authorize(roles: ["editor"]) , de az entitás nem rendelkezik engedélybejegyzéssel editor, a kérés megtagadva.
Megjegyzés:
@authorize(policy: "...") nem támogatott. Csak használjon @authorize(roles: [...]) .
A teljes telepítési útmutatót az Azure Cosmos DB for NoSQL-hez készült Data API Builder beállítása című témakörben találja.
A REST API elérhetetlensége
A DAB nem hoz létre REST-végpontokat az Azure Cosmos DB for NoSQL-hez. Az Azure Cosmos DB átfogó natív REST API-t biztosít a dokumentumműveletekhez. Csak GraphQL-végpontok jönnek létre. Az OpenAPI-dokumentumok nem jönnek létre Cosmos DB-entitásokhoz.
Az adatok REST-en keresztüli eléréséhez használja közvetlenül az Azure Cosmos DB REST API-t .
A Cosmos DB nem támogatott funkciói
Az Azure Cosmos DB for NoSQL nem támogatja a következő funkciókat:
| Funkció | Jegyzetek |
|---|---|
| REST-végpontok | Használja inkább a natív Cosmos DB REST API-t |
| Adatbázis-szabályzatok | A házirend-predikátumok relációs lekérdezési szemantikát igényelnek |
| Tárolt eljárások | DAB-entitásokként nem támogatott |
| Relationships | A tárolók közötti kapcsolatok nem támogatottak |
Rendezés ($orderby) |
A GraphQL-lekérdezések nem támogatottak |
| Aggregation | Nem támogatott |
| Több mutáció | Nem támogatott |
| Munkamenet-környezet | SQL-specifikus funkció |
PostgreSQL
Minimális verzió
A PostgreSQL 11 vagy újabb verziójára van szükség. A DAB PostgreSQL-illesztőként használja Npgsql .
Nem támogatott adattípusok
A DAB nem támogatja a következő PostgreSQL-adattípusokat:
| Adattípus | Jegyzetek |
|---|---|
bytea |
Bináris sztring; a szerializálás nem támogatott |
date |
Használja a timestamp vagy timestamptz formátumot |
smalldatetime |
Nem natív PostgreSQL-típus |
datetime2 |
Nem natív; jellemzően a timestamp |
timestamptz |
Időbélyeg időzónával; nem támogatott |
time |
Dátum nélküli nap időpontja |
localtime |
Rendszeróra-alapú idő |
Tárolt eljárások
A tárolt eljárások nem támogatottak a PostgreSQL-entitások esetében. Használjon inkább táblákat és nézeteket.
MySQL
Minimális verzió
A MySQL 8 vagy újabb verziójára van szükség.
Nem támogatott adattípusok
A DAB nem támogatja a következő MySQL-adattípusokat:
| Adattípus | Jegyzetek |
|---|---|
UUID |
Univerzálisan egyedi azonosítók |
DATE |
Naptárdátumok |
SMALLDATETIME |
Kevésbé pontos dátum- és időtárolás |
DATETIME2 |
Nem natív; Használja datetime |
DATETIMEOFFSET |
Dátumok és időpontok időzónával |
TIME |
Dátum nélküli nap időpontja |
LOCALTIME |
Aktuális idő a rendszeróra alapján |
Tárolt eljárások
A tárolt eljárások nem támogatottak a MySQL-entitások esetében. Használjon inkább táblákat.
Azure Synapse Analytics (dedikált SQL-készlet)
Támogatott objektumok
A dedikált SQL-készlet a táblákat, a nézeteket és a tárolt eljárásokat támogatja– ugyanúgy, mint az SQL Server és az Azure SQL. A kiszolgáló nélküli SQL-készlet nem támogatott.
Nem támogatott funkciók
| Funkció | Jegyzetek |
|---|---|
| Több mutáció | Nem támogatott |