Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Bagian menentukan data-source detail akses database. Ini juga mendefinisikan opsi database.
Pengaturan sumber data
| Property | Description |
|---|---|
| sumber data | Objek yang berisi pengaturan konektivitas database |
| data-source.database-type | Database yang digunakan di backend: mssql, , postgresql, mysql, cosmosdb_nosqlcosmosdb_postgresql |
| data-source.connection-string | String koneksi untuk jenis database yang dipilih |
| sumber data.options | Properti khusus database (misalnya, opsi untuk SQL Server, Cosmos DB, dll.) |
| data-source.options.database | Nama Azure Cosmos DB untuk database NoSQL (diperlukan saat database-type = cosmosdb_nosql) |
| data-source.options.container | Nama kontainer Azure Cosmos DB for NoSQL (diperlukan saat database-type = cosmosdb_nosql) |
| data-source.options.schema | Jalur ke file skema GraphQL (diperlukan saat database-type = cosmosdb_nosql) |
| data-source.options.set-session-context | Memungkinkan pengiriman klaim JSON Web Token (JWT) sebagai konteks sesi (hanya SQL Server) |
| data-source.health | Objek yang mengonfigurasi pemeriksaan kesehatan untuk sumber data |
| data-source.health.enabled | Mengaktifkan titik akhir pemeriksaan kesehatan |
| data-source.health.name | Pengidentifikasi yang digunakan dalam laporan kesehatan |
| data-source.health.threshold-ms | Durasi maksimum dalam milidetik untuk kueri pemeriksaan kesehatan |
| data-source.user-delegated-auth | Objek yang mengonfigurasi autentikasi yang didelegasikan pengguna On-Behalf-Of (OBO) (hanya mssql) |
| data-source.user-delegated-auth.enabled | Mengaktifkan autentikasi OBO |
| data-source.user-delegated-auth.provider | IdP OBO (saat ini EntraId saja) |
| data-source.user-delegated-auth.database-audience | Audiens target untuk token SQL hilir |
Gambaran umum format
{
"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>"]
}
Sumber data
| Parent | Property | Type | Required | Default |
|---|---|---|---|---|
$root |
data-source |
objek | ✔️ Ya | - |
Properti berlapis
| Parent | Property | Type | Required | Default |
|---|---|---|---|---|
data-source |
database-type |
enum | ✔️ Ya | None |
data-source |
connection-string |
string | ✔️ Ya | None |
data-source |
options |
objek | ❌ Tidak | None |
Nilai properti
database-type |
Description | Versi Min |
|---|---|---|
mssql |
SQL in Fabric | - |
mssql |
Azure SQL Database | - |
mssql |
Azure SQL MI | - |
mssql |
SQL Server | 2016 |
dwsql |
Azure Synapse Analytics | - |
dwsql |
Gudang Kain | - |
dwsql |
Titik akhir Fabric SQL Analytics | - |
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>
}
}
}
Contoh: Azure SQL & 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
Kami menggunakan SqlClient untuk Azure SQL dan SQL Server, yang mendukung varian string koneksi ini .
Mengkonsumsi SESSION_CONTEXT
Untuk Azure SQL dan SQL Server, penyusun API Data dapat menyertakan info Klaim di SQL SESSION_CONTEXT.
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;
Contoh: 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
"Opsi" yang ditentukan (database, container, dan schema) khusus untuk Azure Cosmos DB.
Variabel lingkungan
Gunakan variabel lingkungan untuk menyimpan rahasia teks biasa dari file konfigurasi Anda.
Tip
Penyusun API Data mendukung @env() fungsi dan .env file.
"data-source": {
"database-type": "mssql",
"connection-string": "@env('SQL_CONNECTION_STRING')"
}
Ketahanan koneksi
Pembuat API Data menggunakan Backoff Eksponensial untuk mencoba kembali permintaan database setelah kesalahan sementara.
| Attempts | First | Second | Third | Fourth | Fifth |
|---|---|---|---|---|---|
| Seconds | 2s | 4s | 8s | 16s | 32s |
Identitas Layanan Terkelola (MSI)
Identitas Layanan Terkelola (MSI) didukung dengan DefaultAzureCredential yang ditentukan dalam Azure.Identity pustaka. Pelajari selengkapnya tentang Identitas terkelola di Microsoft Entra untuk Azure SQL.
User-Assigned Identitas Terkelola (UAMI)
Untuk Identitas Terkelola yang Ditetapkan Pengguna, tambahkan properti Autentikasi dan ID Pengguna ke string koneksi Anda saat menggantikan id klien Identitas Terkelola yang Ditetapkan Pengguna Anda: Authentication=Active Directory Managed Identity; User Id=<UMI_CLIENT_ID>;.
identitas terkelola System-Assigned (SAMI)
Untuk Identitas Terkelola yang Ditetapkan Sistem, tambahkan properti Autentikasi dan kecualikan argumen UserId dan Password dari string koneksi Anda: Authentication=Active Directory Managed Identity;.
Kesehatan (Sumber data)
| Parent | Property | Type | Required | Default |
|---|---|---|---|---|
data-source |
health |
objek | No | – |
Penyusun API Data mendukung beberapa file konfigurasi, masing-masing dengan sumber datanya sendiri. Blok konfigurasi ini memungkinkan setiap sumber data memiliki konfigurasi kesehatannya sendiri.
Properti berlapis
| Parent | Property | Type | Required | Default |
|---|---|---|---|---|
data-source.health |
enabled |
boolean | No | true |
data-source.health |
name |
string | No | database-type |
data-source.health |
threshold-ms |
integer | No | 1000 |
Periksa nama
Karena beberapa file konfigurasi dapat menunjuk ke sumber data dengan jenis yang sama, sumber data tersebut tidak dapat dibedakan dalam laporan kesehatan. Gunakan name untuk menetapkan label unik yang dapat diidentifikasi yang hanya digunakan dalam laporan kesehatan.
Memeriksa perilaku
Kueri paling sederhana—khusus untuk jenis database—dijalankan terhadap sumber data yang diberikan untuk memvalidasi bahwa koneksi dapat dibuka.
threshold-ms Gunakan properti untuk mengonfigurasi durasi maksimum yang dapat diterima (dalam milidetik) agar kueri tersebut selesai.
Format
{
"data-source": {
"health": {
"enabled": <true> (default) | <false>,
"name": <string>,
"threshold-ms": <integer; default: 1000>
}
}
}
Autentikasi yang didelegasikan pengguna
| Parent | Property | Type | Required | Default |
|---|---|---|---|---|
data-source |
user-delegated-auth |
objek | No | – |
Autentikasi yang didelegasikan pengguna on-Behalf-Of (OBO) untuk SQL Server dan Azure SQL. Saat diaktifkan, DAB menukar token pengguna masuk dengan token SQL hilir sehingga database mengautentikasi sebagai pengguna panggilan aktual. Fitur ini hanya didukung untuk mssql sumber data dan memerlukan upstream autentikasi ID Entra.
Note
Fungsionalitas Pembuat API Data 2.0 yang dijelaskan di bagian ini saat ini dalam pratinjau dan mungkin berubah sebelum ketersediaan umum. Untuk informasi selengkapnya, lihat Apa yang baru dalam versi 2.0.
Properti berlapis
| Parent | Property | Type | Required | Default |
|---|---|---|---|---|
data-source.user-delegated-auth |
enabled |
boolean | No | salah |
data-source.user-delegated-auth |
provider |
enum (EntraId) |
No | EntraId |
data-source.user-delegated-auth |
database-audience |
string | Ya (saat diaktifkan) | None |
-
enabled—mengaktifkan atau menonaktifkan OBO. -
provider—idP untuk pertukaran token. Saat ini hanyaEntraIdyang didukung. -
database-audience—audiens target untuk token SQL hilir (misalnya,https://database.windows.net).
Variabel lingkungan yang diperlukan
Ketika OBO diaktifkan, DAB membaca variabel lingkungan berikut untuk pertukaran token:
| Variabel | Description |
|---|---|
DAB_OBO_CLIENTID |
ID aplikasi (klien) pendaftaran aplikasi ID Entra |
DAB_OBO_CLIENTSECRET |
Rahasia klien untuk pendaftaran aplikasi |
DAB_OBO_TENANTID |
ID penyewa Entra ID |
Pengumpulan koneksi per pengguna
Ketika OBO diaktifkan, DAB mempertahankan kumpulan koneksi SQL terpisah per pengguna sehingga token akses satu pengguna tidak pernah digunakan kembali untuk permintaan pengguna lain.
Note
Pengumpulan koneksi per pengguna hanya berlaku saat autentikasi OBO aktif. Penyebaran standar tidak terpengaruh.
Format
{
"data-source": {
"database-type": "mssql",
"connection-string": "@env('SQL_CONNECTION_STRING')",
"user-delegated-auth": {
"enabled": <true> | <false> (default),
"provider": <string>,
"database-audience": <string>
}
}
}
Example
{
"data-source": {
"database-type": "mssql",
"connection-string": "@env('SQL_CONNECTION_STRING')",
"user-delegated-auth": {
"enabled": true,
"provider": "EntraId",
"database-audience": "https://database.windows.net"
}
}
}
Penting
OBO hanya didukung untuk mssql. Properti database-audience diperlukan ketika OBO diaktifkan. Menjalankan konfigurasi ini terhadap sumber data non-MSSQL gagal validasi.