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.
A Data API Builder lehetővé teszi, hogy minden adatbázis saját adott funkciókkal rendelkezzen. Ez a cikk az egyes adatbázisokhoz támogatott funkciókat ismerteti.
Adatbázis verziótámogatása
Számos hagyományos adatbázishoz minimális verzióra van szükség a Data API Builder (DAB) használatával való kompatibilitáshoz.
| Minimális támogatott verzió | |
|---|---|
| SQL Server | 2016 |
| MySQL | 8 |
| PostgreSQL | 11 |
Ezzel szemben az Azure-felhőadatbázis-szolgáltatások a DAB-val a dobozon kívül működnek anélkül, hogy egy adott verziót kellene megkövetelni.
| Minimális támogatott verzió | |
|---|---|
| Azure SQL | n/a |
| Azure Cosmos DB for NoSQL | n/a |
| Azure Cosmos DB for PostgreSQL | n/a |
Azure SQL és SQL Server
Az SQL-hez egyedi tulajdonságok tartoznak, beleértve az Azure SQL-t és az SQL Servert is.
SESSION_CONTEXT
Az Azure SQL és az SQL Server támogatja a függvény használatát az SESSION_CONTEXT aktuális felhasználó identitásának eléréséhez. Ez a funkció akkor hasznos, ha az Azure SQL-ben és az SQL Serverben elérhető sorszintű biztonság (RLS) natív támogatását szeretné alkalmazni.
Az Azure SQL és az SQL Server esetében a Data API Builder kihasználhatja a SESSION_CONTEXT a felhasználó által megadott metaadatoknak a mögöttes adatbázisba való küldéséhez. Ezek a metaadatok a Hozzáférési jogkivonatban található jogcímek alapján érhetők el a Data API Builder számára. Az adatbázisba küldött adatok ezután további biztonsági szint konfigurálására (például biztonsági szabályzatok konfigurálásával) használhatók az olyan műveletek adataihoz való hozzáférés további megakadályozása érdekében, mint a SELECT, UPDATE, DELETE. A SESSION_CONTEXT adatok az adatbázis-kapcsolat során mindaddig elérhetők az adatbázis számára, amíg a kapcsolat be nem záródik. Ugyanezek az adatok egy tárolt eljáráson belül is használhatók.
További információ az adatok beállításáról SESSION_CONTEXT : sp_set_session_context (Transact-SQL).
Konfigurálja SESSION_CONTEXT a options konfigurációs fájl szakaszának tulajdonságát data-source . További információ: data-source konfigurációs referencia.
{
...
"data-source": {
"database-type": "mssql",
"options": {
"set-session-context": true
},
"connection-string": "<connection-string>"
},
...
}
Másik lehetőségként használja az --set-session-context argumentumot a dab init paranccsal.
dab init --database-type mssql --set-session-context true
Az EasyAuth/JWT-jogkivonatban található összes jogcímet a rendszer a SESSION_CONTEXT mögöttes adatbázisba küldi. A jogkivonatban található összes jogcím le lesz fordítva a lekérdezésen keresztül SESSION_CONTEXT átadott kulcs-érték párokra. Ezek a jogcímek magukban foglalják, de nem korlátozódnak a következőkre:
| Description | |
|---|---|
aud |
Audience |
iss |
Issuer |
iat |
Issued at |
exp |
Expiration time |
azp |
Application identifier |
azpacr |
Az ügyfél hitelesítési módszere |
name |
Subject |
uti |
Egyedi jogkivonat-azonosító |
A jogcímekkel kapcsolatos további információkért tekintse meg a Microsoft Entra ID hozzáférési jogkivonat jogcímeinek hivatkozását.
Ezek a jogcímek SQL-lekérdezésekké lesznek lefordítva. Ez a csonkolt példa bemutatja, hogyan sp_set_session_context használható ebben a környezetben:
EXEC sp_set_session_context 'aud', '<AudienceID>', @read_only = 1;
EXEC sp_set_session_context 'iss', 'https://login.microsoftonline.com/<TenantID>/v2.0', @read_only = 1;
EXEC sp_set_session_context 'iat', '1637043209', @read_only = 1;
...
EXEC sp_set_session_context 'azp', 'a903e2e6-fd13-4502-8cae-9e09f86b7a6c', @read_only = 1;
EXEC sp_set_session_context 'azpacr', 1, @read_only = 1;
..
EXEC sp_set_session_context 'uti', '_sSP3AwBY0SucuqqJyjEAA', @read_only = 1;
EXEC sp_set_session_context 'ver', '2.0', @read_only = 1;
Ezt követően a munkamenet adataival sorszintű biztonságot (RLS) valósíthat meg. További információ: sorszintű biztonság megvalósítása munkamenet-környezettel.
Azure Cosmos DB
Az Azure Cosmos DB különböző API-jaihoz egyedi tulajdonságok tartoznak.
Séma a NoSQL-hez készült API-ban
Az Azure Cosmos DB for NoSQL sémafüggetlen. Ahhoz, hogy a Data API Buildert a NoSQL API-val használhassa, létre kell hoznia egy GraphQL-sémafájlt, amely tartalmazza a tároló adatmodelljét képviselő objektumtípus-definíciókat. A Data API Builder azt is elvárja, hogy a GraphQL objektumtípus-definíciói és mezői tartalmazzák a GraphQL sémairányelvét authorize , ha szigorúbb olvasási hozzáférést szeretne kikényszeríteni, mint anonymousa .
Ez a sémafájl például egy tárolón Book belüli elemet jelöl. Ez az elem legalább titleAuthors a tulajdonságokat tartalmazza.
type Book @model(name:"Book"){
id: ID
title: String @authorize(roles:["metadataviewer","authenticated"])
Authors: [Author]
}
Ez a példaséma a DAB-konfigurációs fájl alábbi entitáskonfigurációjának felel meg. További információ: entities konfigurációs referencia.
{
...
"Book": {
"source": "Book",
"permissions": [
{
"role": "anonymous",
"actions": [ "read" ]
},
{
"role": "metadataviewer",
"actions": [ "read" ]
}
]
}
...
}
Az @authorize irányelv a roles:["metadataviewer","authenticated"] mezőhöz való hozzáférést csak a title szerepkörrel metadataviewer rendelkező felhasználókra és authenticateda . Hitelesített kérelmezők esetén a rendszerszerepkör authenticated automatikusan ki van rendelve, így nincs szükség fejlécre X-MS-API-ROLE .
Ha a hitelesített kérést a környezetében metadataviewerkell végrehajtani, akkor a kérelem fejlécét a következőre X-MS-API-ROLE kell beállítani metadataviewer: . Ha azonban névtelen hozzáférésre van szükség, ki kell hagynia az engedélyezett irányelvet.
Az @model irányelv arra használható, hogy korrelációt hozzon létre a GraphQL-objektumtípus és a futtatókörnyezeti konfiguráció megfelelő entitásneve között. Az irányelv formátuma: @model(name:"<Entity_Name>")
Részletesebb példaként az @authorize irányelv a felső szintű típusdefiníciónál alkalmazható. Ez az alkalmazás kizárólag az irányelvben meghatározott szerepkörökre korlátozza a típushoz és a mezőkhöz való hozzáférést.
type Series @model(name:"Series") @authorize(roles:["editor","authenticated"]) {
id: ID
title: String
Books: [Book]
}
{
"Book": {
"source": "Series",
"permissions": [
{
"role": "authenticated",
"actions": [ "read" ]
},
{
"role": "editor",
"actions": [ "*" ]
}
]
}
}
Tárolóközi lekérdezések az API for NoSQL-ben
A graphQL-műveletek nem támogatottak a tárolók között. A motor a következő hibaüzenettel válaszol: Adding/updating Relationships is currently not supported in Azure Cosmos DB for NoSQL.
Ezt a korlátozást megkerülheti úgy, hogy az adatmodellt úgy frissíti, hogy az entitásokat ugyanabban a tárolóban, beágyazott formátumban tárolja. További információ: adatmodellezés az Azure Cosmos DB for NoSQL-ben.