Udostępnij za pośrednictwem


Źródło danych

Sekcja data-source definiuje szczegóły dostępu do bazy danych. Definiuje również opcje bazy danych.

Ustawienia źródła danych

Property Description
źródło danych Obiekt zawierający ustawienia łączności z bazą danych
data-source.database-type Baza danych używana w zapleczu: mssql, , postgresqlmysql, , cosmosdb_nosqlcosmosdb_postgresql
data-source.connection-string Parametry połączenia dla wybranego typu bazy danych
data-source.options Właściwości specyficzne dla bazy danych (na przykład opcje dla programu SQL Server, usługi Cosmos DB itp.)
data-source.options.database Nazwa bazy danych Azure Cosmos DB for NoSQL (wymagana, gdy database-type = cosmosdb_nosql)
data-source.options.container Nazwa kontenera usługi Azure Cosmos DB for NoSQL (wymagana, gdy database-type = cosmosdb_nosql)
data-source.options.schema Ścieżka do pliku schematu GraphQL (wymagane, gdy database-type = cosmosdb_nosql)
data-source.options.set-session-context Umożliwia wysyłanie oświadczeń tokenu internetowego JSON (JWT) jako kontekstu sesji (tylko program SQL Server)
data-source.health Obiekt konfigurując kontrole kondycji źródła danych
data-source.health.enabled Włącza punkt końcowy sprawdzania kondycji
data-source.health.name Identyfikator używany w raporcie kondycji
data-source.health.threshold-ms Maksymalny czas trwania w milisekundach dla zapytania sprawdzania kondycji
data-source.user-delegated-auth Obiekt konfigurując uwierzytelnianie delegowane przez użytkownika (tylko mssql)Behalf-Of (OBO)
data-source.user-delegated-auth.enabled Włącza uwierzytelnianie OBO
data-source.user-delegated-auth.provider Dostawca tożsamości OBO (obecnie EntraId tylko)
data-source.user-delegated-auth.database-audience Docelowi odbiorcy dla podrzędnego tokenu SQL

Omówienie formatu

{
  "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>"]
}

Źródło danych

Parent Property Typ Required Default
$root data-source obiekt ✔️ Tak -

Właściwości zagnieżdżone

Parent Property Typ Required Default
data-source database-type wyliczenie ✔️ Tak None
data-source connection-string ciąg ✔️ Tak None
data-source options obiekt ❌ Nie None

Wartości właściwości

database-type Description Minimalna wersja
mssql SQL w sieci szkieletowej -
mssql Azure SQL Database -
mssql Zarządzane wystąpienie Azure SQL -
mssql SQL Server 2016
dwsql Azure Synapse Analytics -
dwsql Magazyn tkanin -
dwsql Punkt końcowy usługi SQL Analytics w sieci szkieletowej -
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>
    }
  }
}

Przykład: Azure SQL i 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

Używamy dla SqlClient usług Azure SQL i SQL Server, które obsługują te warianty parametrów połączenia.

Spożywanie SESSION_CONTEXT

W przypadku usług Azure SQL i SQL Server konstruktor interfejsu API danych może zawierać informacje o oświadczeniach w usługach SESSION_CONTEXTSQL .

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;

Przykład: 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

Określone opcje (database, containeri schema) są specyficzne dla usługi Azure Cosmos DB.

Zmienne środowiskowe

Użyj zmiennych środowiskowych, aby zachować wpisy tajne zwykłego tekstu z pliku konfiguracji.

Tip

Konstruktor interfejsu @env() API danych obsługuje zarówno funkcję, jak i .env pliki.

"data-source": {
  "database-type": "mssql",
  "connection-string": "@env('SQL_CONNECTION_STRING')"
}

Odporność połączenia

Konstruktor interfejsu API danych używa wycofywania wykładniczego w celu ponawiania żądań bazy danych po błędach przejściowych.

Attempts First Second Third Fourth Fifth
Seconds 2s 4s 8s 16s 32s

Tożsamości usługi zarządzanej (MSI)

Tożsamości usługi zarządzanej (MSI) są obsługiwane przez funkcję zdefiniowaną DefaultAzureCredential w Azure.Identity bibliotece. Dowiedz się więcej o tożsamościach zarządzanych w usłudze Microsoft Entra for Azure SQL.

tożsamości zarządzane User-Assigned (UAMI)

W polu Tożsamość zarządzana przypisana przez użytkownika dołącz właściwości Authentication (Uwierzytelnianie ) i User ID (Identyfikator użytkownika) do parametrów połączenia podczas zastępowania identyfikatora klienta tożsamości zarządzanej przypisanej przez użytkownika: Authentication=Active Directory Managed Identity; User Id=<UMI_CLIENT_ID>;.

tożsamość zarządzana System-Assigned (SAMI)

W polu Tożsamość zarządzana przypisana przez system dołącz właściwość Authentication i wyklucz argumenty UserId i Password z parametrów połączenia: Authentication=Active Directory Managed Identity;.

Kondycja (źródło danych)

Parent Property Typ Required Default
data-source health obiekt No

Konstruktor interfejsu API danych obsługuje wiele plików konfiguracji, z których każdy ma własne źródło danych. Ten blok konfiguracji umożliwia każdemu źródle danych posiadanie własnej konfiguracji kondycji.

Właściwości zagnieżdżone

Parent Property Typ Required Default
data-source.health enabled boolean No true
data-source.health name ciąg No database-type
data-source.health threshold-ms liczba całkowita No 1000

Sprawdź nazwę

Ponieważ wiele plików konfiguracji może wskazywać źródła danych tego samego typu, te źródła danych nie mogą być rozróżniane w raporcie kondycji. Służy name do przypisywania unikatowej, możliwej do zidentyfikowania etykiety używanej tylko w raporcie kondycji.

Sprawdzanie zachowania

Najprostsze możliwe zapytanie — specyficzne dla typu bazy danych — jest wykonywane względem danego źródła danych w celu sprawdzenia, czy połączenie można otworzyć. threshold-ms Użyj właściwości , aby skonfigurować maksymalny dopuszczalny czas trwania (w milisekundach) dla tego zapytania do ukończenia.

Format

{
  "data-source": {
    "health": {
      "enabled": <true> (default) | <false>,
      "name": <string>,
      "threshold-ms": <integer; default: 1000>
    }
  }
}

Uwierzytelnianie delegowane przez użytkownika

Parent Property Typ Required Default
data-source user-delegated-auth obiekt No

Uwierzytelnianie delegowane przez użytkownika wBehalf-Of (OBO) dla programu SQL Server i usługi Azure SQL. Po włączeniu język DAB wymienia token użytkownika przychodzącego dla podrzędnego tokenu SQL, aby baza danych uwierzytelniła się jako rzeczywisty użytkownik wywołujący. Ta funkcja jest obsługiwana tylko w przypadku mssql źródeł danych i wymaga uwierzytelniania entra ID nadrzędnego.

Note

Funkcja narzędzia Data API Builder 2.0 opisana w tej sekcji jest obecnie dostępna w wersji zapoznawczej i może ulec zmianie przed ogólną dostępnością. Aby uzyskać więcej informacji, zobacz Co nowego w wersji 2.0.

Właściwości zagnieżdżone

Parent Property Typ Required Default
data-source.user-delegated-auth enabled boolean No fałszywy
data-source.user-delegated-auth provider wyliczenie (EntraId) No EntraId
data-source.user-delegated-auth database-audience ciąg Tak (po włączeniu) None
  • enabled— włącza lub wyłącza funkcję OBO.
  • provider— dostawca tożsamości dla wymiany tokenów. Obecnie obsługujemy tylko EntraId.
  • database-audience— docelowy odbiorca tokenu SQL podrzędnego (na przykład https://database.windows.net).

Wymagane zmienne środowiskowe

Po włączeniu funkcji OBO usługa DAB odczytuje następujące zmienne środowiskowe dla wymiany tokenów:

Zmienna Description
DAB_OBO_CLIENTID Identyfikator aplikacji (klienta) rejestracji aplikacji Entra ID
DAB_OBO_CLIENTSECRET Wpis tajny klienta dla rejestracji aplikacji
DAB_OBO_TENANTID Identyfikator dzierżawy identyfikatora entra

Buforowanie połączeń poszczególnych użytkowników

Gdy funkcja OBO jest włączona, usługa DAB utrzymuje oddzielne pule połączeń SQL na użytkownika, dzięki czemu token dostępu jednego użytkownika nigdy nie jest ponownie używany dla żądania innego użytkownika.

Note

Buforowanie połączeń poszczególnych użytkowników ma zastosowanie tylko wtedy, gdy uwierzytelnianie OBO jest aktywne. Wdrożenia standardowe nie mają wpływu.

Format

{
  "data-source": {
    "database-type": "mssql",
    "connection-string": "@env('SQL_CONNECTION_STRING')",
    "user-delegated-auth": {
      "enabled": <true> | <false> (default),
      "provider": <string>,
      "database-audience": <string>
    }
  }
}

Przykład

{
  "data-source": {
    "database-type": "mssql",
    "connection-string": "@env('SQL_CONNECTION_STRING')",
    "user-delegated-auth": {
      "enabled": true,
      "provider": "EntraId",
      "database-audience": "https://database.windows.net"
    }
  }
}

Ważna

Funkcja OBO jest obsługiwana tylko dla systemu mssql. Właściwość jest wymagana database-audience , gdy jest włączona funkcja OBO. Uruchomienie tej konfiguracji względem źródła danych innego niż MSSQL kończy się niepowodzeniem weryfikacji.