Veri kaynağı

data-source bölümünde veritabanı erişim ayrıntıları tanımlanmıştır. Ayrıca veritabanı seçeneklerini tanımlar.

Veri kaynağı ayarları

Property Description
veri kaynağı Veritabanı bağlantı ayarlarını içeren nesne
data-source.database-type Arka uçta kullanılan veritabanı: mssql, postgresql, mysql, , cosmosdb_nosql, cosmosdb_postgresql
data-source.connection-string Seçili veritabanı türü için bağlantı dizesi
data-source.options Veritabanına özgü özellikler (örneğin, SQL Server, Cosmos DB, vb.)
data-source.options.database NoSQL için Azure Cosmos DB veritabanının adı (gerektiğinde database-type = cosmosdb_nosql)
data-source.options.container NoSQL için Azure Cosmos DB kapsayıcısının adı (gerektiğinde database-type = cosmosdb_nosql)
data-source.options.schema GraphQL şema dosyasının yolu (için database-type = cosmosdb_nosqlgereklidir)
data-source.options.set-session-context JSON Web Belirteci (JWT) taleplerini oturum bağlamı olarak göndermeyi etkinleştirir (yalnızca SQL Server)
data-source.health Veri kaynağı için sistem durumu denetimlerini yapılandıran nesne
data-source.health.enabled Sistem durumu denetimi uç noktasını etkinleştirir
data-source.health.name Sistem durumu raporunda kullanılan tanımlayıcı
data-source.health.threshold-ms Sistem durumu denetimi sorgusu için milisaniye cinsinden en uzun süre
data-source.user-delegated-auth AçıkBehalf-Of (OBO) kullanıcı temsilcisi kimlik doğrulamasını yapılandıran nesne (yalnızca mssql)
data-source.user-delegated-auth.enabled OBO kimlik doğrulamasını etkinleştirir
data-source.user-delegated-auth.provider OBO kimlik sağlayıcısı (şu anda EntraId yalnızca)
data-source.user-delegated-auth.database-audience Aşağı akış SQL belirteci için hedef kitle

Biçime genel bakış

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

Veri kaynağı

Parent Property Type Required Default
$root data-source object ✔️ Evet -

İç içe özellikler

Parent Property Type Required Default
data-source database-type enum ✔️ Evet None
data-source connection-string string ✔️ Evet None
data-source options object ❌ Hayır None

Mülk değerleri

database-type Description En Düşük Sürüm
mssql Dokuda SQL -
mssql Azure SQL Veritabanı -
mssql Azure SQL MI -
mssql SQL Server 2016
dwsql Azure Synapse Analytics -
dwsql Doku Ambarı -
dwsql Doku SQL Analytics uç noktası -
postgresql PostgreSQL ver. 11
mysql MySQL ver. 8
cosmosdb_nosql NoSQL için Azure Cosmos DB -
cosmosdb_postgresql PostgreSQL için Azure Cosmos DB -

Format

{
  "data-source": {
    "database-type": <string>,
    "connection-string": <string>,
    "options": {
      "<key-name>": <string>
    }
  }
}

Örnek: 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

Bu bağlantı dizeleri değişkenlerini destekleyen Azure SQL ve SQL Server için kullanırızSqlClient.

Tüketen SESSION_CONTEXT

Azure SQL ve SQL Server için, Veri API oluşturucusu SQL'in SESSION_CONTEXTtalep bilgilerini içerebilir.

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;

Örnek: 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

Belirtilen "seçenekler" (database, containerve schema) Azure Cosmos DB'ye özeldir.

Ortam değişkenleri

Düz metin gizli dizilerini yapılandırma dosyanızın dışında tutmak için ortam değişkenlerini kullanın.

Tip

Veri API'sinin @env() oluşturucusu hem işlevi .envhem de dosyaları destekler.

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

Bağlantı dayanıklılığı

Veri API oluşturucusu, geçici hatalardan sonra veritabanı isteklerini yeniden denemek için Üstel Geri Alma kullanır.

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

Yönetilen Hizmet Kimlikleri (MSI)

Yönetilen Hizmet Kimlikleri (MSI) kitaplıkta DefaultAzureCredential tanımlı olarak Azure.Identity desteklenir. Azure SQL için Microsoft Entra'da Yönetilen kimlikler hakkında daha fazla bilgi edinin.

yönetilen kimlikleri (UAMI) User-Assigned

Kullanıcı Tarafından Atanan Yönetilen Kimlik için, Kimlik Doğrulaması ve Kullanıcı Kimliği özelliklerini bağlantı dizenize eklerken, Kullanıcı Tarafından Atanan Yönetilen Kimliğinizin istemci kimliğini yazın: Authentication=Active Directory Managed Identity; User Id=<UMI_CLIENT_ID>;.

System-Assigned Yönetilen Kimlik (SAMI)

Sistem Tarafından Atanan Yönetilen Kimlik için , Authentication özelliğini ekleyin ve UserId ve Password bağımsız değişkenlerini bağlantı dizenizin dışında tutun: Authentication=Active Directory Managed Identity;.

Sistem Durumu (Veri kaynağı)

Parent Property Type Required Default
data-source health object No

Veri API oluşturucusu, her biri kendi veri kaynağına sahip olan birden çok yapılandırma dosyasını destekler. Bu yapılandırma bloğu, her veri kaynağının kendi sistem durumu yapılandırmasına sahip olmasını sağlar.

İç içe özellikler

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

Adı denetle

Birden çok yapılandırma dosyası aynı türdeki veri kaynaklarını işaret ettiğinden, bu veri kaynakları sistem durumu raporunda ayırt edilemez. Yalnızca sistem durumu raporunda kullanılan benzersiz, tanımlanabilir bir etiket atamak için kullanın name .

Davranışı denetleme

Veritabanı türüne özgü olabilecek en basit sorgu, bağlantının açıldığını doğrulamak için verilen veri kaynağında yürütülür. Bu sorgunun threshold-ms tamamlanması için kabul edilebilir en uzun süreyi (milisaniye olarak) yapılandırmak için özelliğini kullanın.

Format

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

Kullanıcı tarafından atanan kimlik doğrulaması

Parent Property Type Required Default
data-source user-delegated-auth object No

SQL Server ve Azure SQL içinBehalf-Of (OBO) kullanıcı tarafından atanan kimlik doğrulaması. Etkinleştirildiğinde, DAB gelen kullanıcı belirtecini aşağı akış SQL belirteci ile değiştirir, böylece veritabanı gerçek çağıran kullanıcı olarak kimlik doğrulaması yapar. Bu özellik yalnızca veri kaynakları için mssql desteklenir ve Entra Id kimlik doğrulaması yukarı akışı gerektirir.

Note

Bu bölümde açıklanan Veri API oluşturucusu 2.0 işlevselliği şu anda önizleme aşamasındadır ve genel kullanılabilirlik öncesinde değişebilir. Daha fazla bilgi için bkz. Sürüm 2.0'daki yenilikler.

İç içe özellikler

Parent Property Type Required Default
data-source.user-delegated-auth enabled boolean No false
data-source.user-delegated-auth provider sabit listesi (EntraId) No EntraId
data-source.user-delegated-auth database-audience string Evet (etkinleştirildiğinde) None
  • enabled—OBO'u açar veya kapatır.
  • provider—belirteç değişimi için kimlik sağlayıcısı. Şu anda yalnızca EntraId desteklenmektedir.
  • database-audience—aşağı akış SQL belirtecinin hedef kitlesi (örneğin, https://database.windows.net).

Gerekli ortam değişkenleri

OBO etkinleştirildiğinde, DAB belirteç değişimi için aşağıdaki ortam değişkenlerini okur:

Variable Description
DAB_OBO_CLIENTID Entra Id uygulama kaydının uygulama (istemci) kimliği
DAB_OBO_CLIENTSECRET Uygulama kaydı için gizli dizi
DAB_OBO_TENANTID Entra Id kiracı kimliği

Kullanıcı başına bağlantı havuzu

OBO etkinleştirildiğinde, DAB kullanıcı başına ayrı SQL bağlantı havuzları tutar, böylece bir kullanıcının erişim belirteci hiçbir zaman başka bir kullanıcının isteği için yeniden kullanılmaz.

Note

Kullanıcı başına bağlantı havuzu yalnızca OBO kimlik doğrulaması etkin olduğunda uygulanır. Standart dağıtımlar etkilenmez.

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

Önemli

OBO yalnızca için mssqldesteklenir. database-audience OBO etkinleştirildiğinde özelliği gereklidir. MsSQL olmayan bir veri kaynağında bu yapılandırmayı çalıştırmak doğrulamada başarısız oluyor.