data-sourceセクションでは、データベース アクセスの詳細を定義します。 また、データベース オプションも定義します。
データ ソースの設定
| Property | Description |
|---|---|
| data-source | データベース接続設定を含むオブジェクト |
| data-source.database-type | バックエンドで使用されるデータベース: mssql、 postgresql、 mysql、 cosmosdb_nosql、 cosmosdb_postgresql |
| data-source.connection-string | 選択したデータベースの種類の接続文字列 |
| data-source.options | データベース固有のプロパティ (SQL Server、Cosmos DB などのオプションなど) |
| data-source.options.database | Azure Cosmos DB for NoSQL データベースの名前 ( database-type = cosmosdb_nosql時に必要) |
| data-source.options.container | Azure Cosmos DB for NoSQL コンテナーの名前 ( database-type = cosmosdb_nosql時に必要) |
| data-source.options.schema | GraphQL スキーマ ファイルへのパス ( database-type = cosmosdb_nosql時に必要) |
| data-source.options.set-session-context | セッション コンテキストとして JSON Web トークン (JWT) 要求を送信できるようにします (SQL Server のみ) |
| data-source.health | データ ソースの正常性チェックを構成するオブジェクト |
| data-source.health.enabled | 正常性チェック エンドポイントを有効にします |
| data-source.health.name | 正常性レポートで使用される識別子 |
| data-source.health.threshold-ms | 正常性チェック クエリの最大期間 (ミリ秒単位) |
| data-source.user-delegated-auth | On-Behalf-Of (OBO) ユーザー委任認証を構成するオブジェクト (mssql のみ) |
| data-source.user-delegated-auth.enabled | OBO 認証を有効にする |
| data-source.user-delegated-auth.provider | OBO ID プロバイダー (現在 EntraId のみ) |
| data-source.user-delegated-auth.database-audience | ダウンストリーム SQL トークンの対象ユーザー |
書式の概要
{
"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>"]
}
データ ソース
| Parent | Property | タイプ | Required | Default |
|---|---|---|---|---|
$root |
data-source |
オブジェクト | ✔️ はい | - |
入れ子になったプロパティ
| Parent | Property | タイプ | Required | Default |
|---|---|---|---|---|
data-source |
database-type |
列挙型 | ✔️ はい | None |
data-source |
connection-string |
文字列 | ✔️ はい | None |
data-source |
options |
オブジェクト | ❌ いいえ | None |
プロパティ値
database-type |
Description | 最小バージョン |
|---|---|---|
mssql |
Fabric の SQL | - |
mssql |
Azure SQL Database | - |
mssql |
AZURE SQL MI | - |
mssql |
SQL Server | 2016 |
dwsql |
Azure Synapse Analytics | - |
dwsql |
Fabric Warehouse | - |
dwsql |
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>
}
}
}
例: 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
}
}
SESSION_CONTEXT を使用する
Azure SQL および SQL Server の場合、データ API ビルダーは 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;
例: 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
指定された "オプション" (database、 container、および schema) は、Azure Cosmos DB に固有です。
環境変数
環境変数を使用して、プレーンテキスト シークレットを構成ファイルから除外します。
"data-source": {
"database-type": "mssql",
"connection-string": "@env('SQL_CONNECTION_STRING')"
}
接続の弾力性
データ API ビルダーは、指数バックオフを使用して、一時的なエラーの後にデータベース要求を再試行します。
| Attempts | First | Second | Third | Fourth | Fifth |
|---|---|---|---|---|---|
| Seconds | 2s | 4s | 8s | 16s | 32s |
マネージド サービス ID (MSI)
マネージド サービス ID (MSI) は、Azure.Identity ライブラリで定義された DefaultAzureCredential でサポートされます。
Microsoft Entra for Azure SQL のマネージド ID の詳細について説明します。
ユーザー割り当てマネージド ID (UAMI)
ユーザー割り当てマネージド ID の場合は、Authentication プロパティと User ID プロパティを接続文字列に追加し、ユーザー割り当てマネージド ID のクライアント ID Authentication=Active Directory Managed Identity; User Id=<UMI_CLIENT_ID>; に置き換えます。
システム割り当てマネージド ID (SAMI)
システム割り当てマネージド ID の場合は、Authentication プロパティを追加し、接続文字列から UserId および Password 引数を除外します: Authentication=Active Directory Managed Identity;。
正常性 (データ ソース)
| Parent | Property | タイプ | Required | Default |
|---|---|---|---|---|
data-source |
health |
オブジェクト | No | – |
データ API ビルダーでは、複数の構成ファイルがサポートされ、それぞれに独自のデータ ソースが含まれています。 この構成ブロックを使用すると、各データ ソースに独自の正常性構成を設定できます。
入れ子になったプロパティ
| Parent | Property | タイプ | Required | Default |
|---|---|---|---|---|
data-source.health |
enabled |
boolean | No | true |
data-source.health |
name |
文字列 | No | database-type |
data-source.health |
threshold-ms |
整数 | No | 1000 |
名前を確認する
複数の構成ファイルが同じ種類のデータ ソースを指している可能性があるため、正常性レポートではそれらのデータ ソースを区別できません。
nameを使用して、正常性レポートでのみ使用される一意の識別可能なラベルを割り当てます。
動作を確認する
データベースの種類に固有の最も単純なクエリは、指定されたデータ ソースに対して実行され、接続を開くことができることを検証します。
threshold-ms プロパティを使用して、そのクエリが完了するまでの最大許容期間 (ミリ秒単位) を構成します。
Format
{
"data-source": {
"health": {
"enabled": <true> (default) | <false>,
"name": <string>,
"threshold-ms": <integer; default: 1000>
}
}
}
ユーザー委任認証
| Parent | Property | タイプ | Required | Default |
|---|---|---|---|---|
data-source |
user-delegated-auth |
オブジェクト | No | – |
SQL Server と Azure SQL のオンBehalf-Of (OBO) ユーザー委任認証。 有効にすると、DAB は受信ユーザー トークンをダウンストリーム SQL トークンと交換し、データベースが実際の呼び出し元ユーザーとして認証されるようにします。 この機能は、mssql データ ソースでのみサポートされており、アップストリームMicrosoft Entra ID認証が必要です。
Note
このセクションで説明する Data API Builder 2.0 の機能は現在プレビュー段階であり、一般公開前に変更される可能性があります。 詳細については、「 バージョン 2.0 の新機能」を参照してください。
入れ子になったプロパティ
| Parent | Property | タイプ | Required | Default |
|---|---|---|---|---|
data-source.user-delegated-auth |
enabled |
boolean | No | false |
data-source.user-delegated-auth |
provider |
enum (EntraId) |
No | EntraId |
data-source.user-delegated-auth |
database-audience |
文字列 | はい (有効な場合) | None |
-
enabled—OBO のオンとオフを切り替えます。 -
provider—トークン交換の ID プロバイダー。 現在、EntraIdのみがサポートされています。 -
database-audience—ダウンストリーム SQL トークンの対象ユーザー (たとえば、https://database.windows.net)。
必要な環境変数
OBO が有効になっている場合、DAB はトークン交換のために次の環境変数を読み取ります。
| Variable | Description |
|---|---|
DAB_OBO_CLIENT_ID |
Microsoft Entra ID アプリ登録のアプリケーション (クライアント) ID |
DAB_OBO_CLIENT_SECRET |
アプリ登録のクライアント シークレット |
DAB_OBO_TENANT_ID |
Microsoft Entra ID テナント ID |
ユーザーごとの接続プール
OBO が有効になっている場合、DAB はユーザーごとに個別の SQL 接続プールを維持し、あるユーザーのアクセス トークンが別のユーザーの要求に再利用されないようにします。
Note
ユーザーごとの接続プールは、OBO 認証がアクティブな場合にのみ適用されます。 標準デプロイは影響を受けません。
Format
{
"data-source": {
"database-type": "mssql",
"connection-string": "@env('SQL_CONNECTION_STRING')",
"user-delegated-auth": {
"enabled": <true> | <false> (default),
"provider": <string>,
"database-audience": <string>
}
}
}
例
{
"data-source": {
"database-type": "mssql",
"connection-string": "@env('SQL_CONNECTION_STRING')",
"user-delegated-auth": {
"enabled": true,
"provider": "EntraId",
"database-audience": "https://database.windows.net"
}
}
}
Important
OBO は、 mssqlでのみサポートされます。 OBO が有効な場合は、 database-audience プロパティが必要です。 MSSQL 以外のデータ ソースに対してこの構成を実行すると、検証に失敗します。