Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
In deze verwijzing worden functies, gedragingen en vereisten beschreven die specifiek zijn voor een of meer databaseplatforms die worden ondersteund door Data API Builder (DAB). Zie Beschikbaarheid van functies voor een vergelijkingsmatrix voor meerdere databases.
Ondersteuning voor databaseversies
DAB ondersteunt de volgende databaseplatforms. Minimale versievereisten zijn van toepassing op zelfbeheerde implementaties. PaaS-databases (Platform-as-a-Service) hebben geen minimale versievereiste omdat de service de versie beheert.
| Databaseplatform | Afkorting | Minimumversie | Aantekeningen |
|---|---|---|---|
| SQL Server | SQL-serie | 2016 | |
| Azure SQL | SQL-serie | N/B (PaaS) | |
| Microsoft Fabric SQL | SQL-serie | N/B (PaaS) | |
| Azure Cosmos DB voor NoSQL | Cosmos DB | N/B (PaaS) | Alleen GraphQL; geen REST-eindpunten |
| PostgreSQL | PGSQL | 11 | |
| MySQL | MySQL | 8 | |
| Azure Synapse Analytics (toegewezen SQL-pool) | SQLDW | N/B (PaaS) | Serverloze SQL-pool wordt niet ondersteund |
Belangrijk
Controleer of zowel uw lokale ontwikkelingsdatabase als elke geïmplementeerde database voldoet aan de minimale versievereiste. DAB maakt verbinding met hetzelfde stuurprogramma in beide omgevingen. Een oudere versie op beide locaties veroorzaakt runtimefouten.
SQL Server en Azure SQL
SESSION_CONTEXT
Voor SQL Server en Azure SQL kan DAB geverifieerde gebruikersclaims doorgeven aan de database door aan te roepen sp_set_session_context voordat elke query wordt uitgevoerd. Met dit mechanisme kunnen beveiligingsbeleid op sql-niveau en opgeslagen procedures de identiteit van de beller lezen vanuit de database-engine.
Wanneer set-session-context dab is ingeschakeld in de DAB-configuratie, verzendt DAB alle geverifieerde claims als sleutel-waardeparen:
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;
Veelvoorkomende claims die worden verzonden, omvattenroles, suboiden eventuele aangepaste claims die uw id-provider in de JWT bevat.
SESSION_CONTEXT inschakelen
Instellen --set-session-context true wanneer u belt dab init:
dab init \
--database-type mssql \
--connection-string "@env('SQL_CONNECTION_STRING')" \
--set-session-context true
Of stel de eigenschap rechtstreeks in:dab-config.json
{
"data-source": {
"database-type": "mssql",
"connection-string": "@env('SQL_CONNECTION_STRING')",
"options": {
"set-session-context": true
}
}
}
Waarschuwing
set-session-context Als u de functie inschakelt, wordt het opslaan van antwoorden voor die gegevensbron uitgeschakeld. Omdat elke aanvraag afzonderlijke sessiewaarden instelt, mogen reacties van de ene gebruikerssessie in de cache niet aan een andere worden geleverd.
SESSION_CONTEXT gebruiken in SQL
Na het inschakelen set-session-contextkunnen uw SQL-objecten de claimwaarden lezen:
-- 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));
Zie Beveiliging op rijniveau implementeren met sessiecontext voor een volledig overzicht.
SESSION_CONTEXT en groepsgewijze verbindingen
DAB stelt alle sessiecontextwaarden aan het begin van elke aanvraag opnieuw in. Omdat set-session-context de semantiek van verbindingen per gebruiker echter wordt afgetrokken, wordt hergebruik van verbindingen tussen gebruikers automatisch vermeden wanneer deze optie is ingeschakeld.
Verbindingsreeksvarianten
DAB gebruikt Microsoft.Data.SqlClient voor SQL Server en Azure SQL. De bibliotheek ondersteunt deze indelingen voor verbindingsreeksen.
Algemene indelingen:
| Verificatiemethode | Verbindingsreekspatroon |
|---|---|
| SQL-aanmelding | Server=tcp:<server>.database.windows.net;Database=<db>;User ID=<user>;Password=<pwd>; |
| Beheerde identiteit | Server=tcp:<server>.database.windows.net;Database=<db>;Authentication=Active Directory Managed Identity; |
| User-Assigned Beheerde Identiteit | Server=tcp:<server>.database.windows.net;Database=<db>;Authentication=Active Directory Managed Identity;User ID=<client-id>; |
| StandaardReferenties voor Azure | Server=tcp:<server>.database.windows.net;Database=<db>;Authentication=Active Directory Default; |
Aanbeveling
Sla verbindingsreeksen op in omgevingsvariabelen en verwijs ernaar met @env('SQL_CONNECTION_STRING'). Voor productie-implementaties slaat u de verbindingsreeks op in Azure Key Vault en verwijst u ernaar.@akv()
Niet-ondersteunde gegevenstypen
De volgende SQL Server- en Azure SQL-gegevenstypen worden niet ondersteund door DAB:
| Gegevenstype | Reden |
|---|---|
geography |
Georuimtelijk type; serialisatie wordt niet ondersteund |
geometry |
Planar ruimtelijk type; serialisatie wordt niet ondersteund |
hierarchyid |
Hiërarchisch gegevenstype; serialisatie wordt niet ondersteund |
json |
Systeemeigen JSON-type (momenteel in preview) |
rowversion |
Type rijversiering; niet opgenomen in API-antwoorden |
sql_variant |
Kolommen van het type variabele; typedeductie wordt niet ondersteund |
vector |
Vectortype (momenteel in preview) |
xml |
XML-type; serialisatie wordt niet ondersteund |
Azure Cosmos DB voor NoSQL
Schemavereiste
In tegenstelling tot relationele databases is Azure Cosmos DB for NoSQL schemaneutraal. DAB kan geen Cosmos DB-container introseren om GraphQL-typen te genereren. U moet een GraphQL-schemabestand (.gql) opgeven waarmee uw documentstructuur wordt gedefinieerd.
Het schemabestand maakt gebruik van standaard GraphQL Schema Definition Language (SDL) met twee aangepaste instructies:
| Richtlijn | Verplicht | Description |
|---|---|---|
@model |
Ja | Wijst een GraphQL-type toe aan een DAB-entiteitsnaam |
@authorize |
No | Beperkt veld- of typetoegang tot specifieke rollen |
@model richtlijn
De @model(name: "...") instructie is vereist voor elk GraphQL-type dat u beschikbaar maakt via DAB. De name waarde moet exact overeenkomen met de naam van de entiteit in uw DAB-configuratiebestand.
type Book @model(name: "Book") {
id: ID
title: String
year: Int
}
@authorize richtlijn
De @authorize instructie biedt toegangsbeheer op veld- en typeniveau voor Cosmos DB GraphQL-query's. Het accepteert een roles parameter met de rollen die toegang hebben tot het veld of type.
type Book @model(name: "Book") {
id: ID
title: String @authorize(roles: ["authenticated", "librarian"])
internalNotes: String @authorize(roles: ["editor"])
}
U kunt ook op typeniveau toepassen @authorize :
type InternalReport @model(name: "InternalReport") @authorize(roles: ["auditor"]) {
id: ID
summary: String
}
Belangrijk
De @authorize instructie voegt toe aan machtigingen op entiteitsniveau. Zowel de instructie als het machtigingsblok van de entiteit moet toestaan dat de aanvraag voor toegang slaagt. Als een veld maar de entiteit geen machtigingsvermelding editorheeft@authorize(roles: ["editor"]), wordt de aanvraag geweigerd.
Opmerking
@authorize(policy: "...") wordt niet ondersteund. Alleen gebruiken @authorize(roles: [...]) .
Zie Data API Builder instellen voor Azure Cosmos DB for NoSQL voor een volledige installatiehandleiding.
REST API is niet beschikbaar
DAB genereert geen REST-eindpunten voor Azure Cosmos DB voor NoSQL. Azure Cosmos DB biedt een uitgebreide systeemeigen REST API voor documentbewerkingen. Alleen GraphQL-eindpunten worden gegenereerd. OpenAPI-documenten worden niet gegenereerd voor Cosmos DB-entiteiten.
Als u toegang wilt krijgen tot gegevens via REST, gebruikt u de Azure Cosmos DB REST API rechtstreeks.
Niet-ondersteunde functies voor Cosmos DB
De volgende functies worden niet ondersteund voor Azure Cosmos DB for NoSQL:
| Feature | Aantekeningen |
|---|---|
| REST-eindpunten | Gebruik in plaats daarvan de systeemeigen Cosmos DB REST API |
| Databasebeleid | Beleidspredicaten vereisen semantiek voor relationele query's |
| opgeslagen procedures | Niet ondersteund als DAB-entiteiten |
| Relaties | Relaties tussen containers worden niet ondersteund |
Sorteren ($orderby) |
Niet ondersteund in GraphQL-query's |
| Aggregation | Niet ondersteund |
| Meerdere mutaties | Niet ondersteund |
| Sessiecontext | SQL-specifieke functie |
PostgreSQL
Minimumversie
PostgreSQL 11 of hoger is vereist. DAB gebruikt Npgsql als postgreSQL-stuurprogramma.
Niet-ondersteunde gegevenstypen
De volgende PostgreSQL-gegevenstypen worden niet ondersteund door DAB:
| Gegevenstype | Aantekeningen |
|---|---|
bytea |
Binaire tekenreeks; serialisatie wordt niet ondersteund |
date |
Gebruik timestamp of timestamptz |
smalldatetime |
Geen systeemeigen PostgreSQL-type |
datetime2 |
Niet systeemeigen; doorgaans verwerkt door timestamp |
timestamptz |
Tijdstempel met tijdzone; niet ondersteund |
time |
Tijdstip zonder datum |
localtime |
Systeemkloktijd |
opgeslagen procedures
Opgeslagen procedures worden niet ondersteund voor PostgreSQL-entiteiten. Gebruik in plaats daarvan tabellen en weergaven.
MySQL
Minimumversie
MySQL 8 of hoger is vereist.
Niet-ondersteunde gegevenstypen
De volgende MySQL-gegevenstypen worden niet ondersteund door DAB:
| Gegevenstype | Aantekeningen |
|---|---|
UUID |
Universally Unique Identifiers |
DATE |
Kalenderdatums |
SMALLDATETIME |
Minder nauwkeurige datum- en tijdopslag |
DATETIME2 |
Niet systeemeigen; Gebruiken datetime |
DATETIMEOFFSET |
Datums en tijden met tijdzone |
TIME |
Tijdstip zonder datum |
LOCALTIME |
Huidige tijd op basis van de systeemklok |
opgeslagen procedures
Opgeslagen procedures worden niet ondersteund voor MySQL-entiteiten. Gebruik in plaats daarvan tabellen.
Azure Synapse Analytics (toegewezen SQL-pool)
Ondersteunde objecten
Toegewezen SQL-pool ondersteunt tabellen, weergaven en opgeslagen procedures, hetzelfde als SQL Server en Azure SQL. Serverloze SQL-pool wordt niet ondersteund.
Niet-ondersteunde functies
| Feature | Aantekeningen |
|---|---|
| Meerdere mutaties | Niet ondersteund |