Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Data API Builder 2.0, Microsoft Entra ID kullanan Microsoft SQL veritabanları için, bazen doğrudan geçirilen kimlik doğrulaması olarak da adlandırılan On-Behalf-Of (OBO) kimlik doğrulamasını destekler. 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.
Standart kimlik doğrulaması ile DAB, çağıranın belirtecini doğrular ancak kendi kimlik bilgilerini (yönetilen kimlik veya bağlantı dizesi) kullanarak veritabanına bağlanır. OBO ile DAB, veritabanının gerçek kullanıcı kimliğini görmesi için bir belirteç değişimi gerçekleştirir.
Uyarı
Bu bölümde açıklanan Veri API'si oluşturucu işlevselliği 2.0 ve sonraki sürümlerde kullanılabilir. Daha fazla bilgi için bkz. Sürüm 2.0'daki yenilikler.
OBO ne zaman kullanılır?
OBO, SQL veritabanının gerçek çağıranın kim olduğunu bilmesi gerektiğinde doğru seçimdir:
| Scenario | OBO kullanılasın mı? |
|---|---|
| Kullanıcı kimliğine bağlı satır düzeyi güvenlik ilkeleri | Evet |
| Kullanıcı başına veritabanı erişim günlükleri gerektiren uyumluluk denetimi | Evet |
| Saydam kullanıcı belirlemenin önemli olduğu MCP senaryoları | Evet |
| DAB'nin kendi kimlik bilgileriyle bağlandığı basit API erişimi | Hayır |
| MSSQL olmayan veritabanları | Hayır |
Önemli
Bugün, OBO yalnızca Entra Kimliğine sahip Microsoft SQL veritabanları için desteklenmektedir.
Önkoşullar
- Veri API oluşturucusu CLI sürüm 2.0 veya üzeri
-
dab-config.jsoniledata-source.database-typemssqlolarak ayarlanmış - Veritabanı için belirteç istemek için uygun API izinlerine sahip bir Entra Id uygulama kaydı
- DAB tarafından kabul edilen JWT'leri veren bir yukarı akış kimlik sağlayıcısı (Entra Kimliği veya yapılandırdığınız özel bir sağlayıcı)
- Microsoft Entra Id belirteçlerini kabul etmek üzere yapılandırılmış bir MSSQL veritabanı
Bağlantı dizesi gereksinimi
Önemli
OBO etkinleştirildiğinde, bağlantı dizesi bir anahtar sözcük (örneğinAuthentication=Authentication=Active Directory Managed Identity. Kitaplık, bağlantı dizesinde zaten Microsoft.Data.SqlClient bulunan bir bağlantıda AccessToken ayarlanmışsa bir istisna fırlatır. Yalnızca sunucu, veritabanı ve şifreleme ayarlarını içeren çıplak bir bağlantı dizesi kullanın:
Server=tcp:<server>.database.windows.net,1433;Database=<db>;Encrypt=true;TrustServerCertificate=true
OBO ile DAB 2.0, sistem durumu denetimleri ve iç işlemler için otomatik olarak bir MSI belirteci alır ve kimliği doğrulanmış istekler için kullanıcı başına OBO belirtecini ekler.
1. Adım: Gerekli ortam değişkenlerini ayarlama
DAB, OBO belirteç değişimi için aşağıdaki ortam değişkenlerini okur:
| Variable | Açıklama |
|---|---|
DAB_OBO_CLIENT_ID |
Entra Id uygulama kaydının uygulama (istemci) kimliği |
DAB_OBO_TENANT_ID |
Entra Id kiracı kimliği |
DAB_OBO_CLIENT_SECRET |
İstemci sırrı için uygulama kaydı |
export DAB_OBO_CLIENT_ID="1234-abcd-5678-efgh"
export DAB_OBO_TENANT_ID="abcd-1234-efgh-5678"
export DAB_OBO_CLIENT_SECRET="supersecretvalue"
2. Adım: Veri kaynağını yapılandırma
OBO'yu dab-config.json içindeki data-source bölümünde etkinleştirin. Veri kaynağı olmalıdır mssql.
{
"data-source": {
"database-type": "mssql",
"connection-string": "@env('SQL_CONNECTION_STRING')",
"user-delegated-auth": {
"enabled": true,
"provider": "EntraId",
"database-audience": "https://database.windows.net"
}
}
}
| Mülkiyet | Açıklama |
|---|---|
enabled |
OBO'u açar veya kapatır |
provider |
Token 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 (OBO etkinleştirildiğinde gereklidir) |
3. Adım: Önbelleğe almayı devre dışı bırakma
OBO yapılandırıldığında önbelleğe alma devre dışı bırakılmalıdır. Her kullanıcı ayrı bir veritabanı bağlantısı aldığından, bir kullanıcının bağlantısından önbelleğe alınan sonuçlar başka bir kullanıcıya sunulmamalıdır.
{
"runtime": {
"cache": {
"enabled": false
}
}
}
4. Adım: CLI kullanarak yapılandırma
Ayrıca, OBO'u tamamen CLI'dan da yapılandırabilirsiniz:
dab configure --data-source.database-type mssql
dab configure --runtime.cache.enabled false
dab configure --data-source.user-delegated-auth.enabled true
dab configure --data-source.user-delegated-auth.provider EntraId
dab configure --data-source.user-delegated-auth.database-audience "https://database.windows.net"
Tam yapılandırma örneği
{
"data-source": {
"database-type": "mssql",
"connection-string": "@env('SQL_CONNECTION_STRING')",
"user-delegated-auth": {
"enabled": true,
"provider": "EntraId",
"database-audience": "https://database.windows.net"
}
},
"runtime": {
"cache": {
"enabled": false
}
}
}
Burada SQL_CONNECTION_STRING anahtar sözcüğü olmayan Authentication= çıplak bir bağlantı dizesi olmalıdır; örneğin:
Server=tcp:<server>.database.windows.net,1433;Database=<db>;Encrypt=true;TrustServerCertificate=true
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. Satır düzeyi güvenlik kimin bağlı olduğuna bağlı olduğunda, kullanıcılar arasında bağlantının yeniden kullanılmasının sessizce yanlış erişim vermediğinden emin olabilirsiniz.
Uyarı
OBO kullanırken, SQL bağlantı dizesi uygulama adı alanına koyabileceğiniz tüm özel değerler kesilebilir.