İçeriğe atla
Şimdi yükleniyor
AKAşkın KILIÇ
  • Anasayfa
  • Azure & Bulut
    • Microsoft Azure
    • Bulut Altyapı
    • Microsoft 365
  • Yazılım
    • DevOps
    • Geliştirici Araçları
    • Konteyner & K8s
  • AI & Veri
    • Yapay Zeka
    • Veri & Analitik
  • Güvenlik
    • Güvenlik & Kimlik
    • Kurumsal Teknoloji
  • Hakkımda
    • İletişim
×
  • Azure
  • Bulut Altyapı
  • DevOps
  • Geliştirici Araçları
  • Güvenlik & Kimlik
  • Konteyner & Kubernetes
  • Kurumsal Teknoloji
  • Microsoft 365
  • Microsoft Azure
  • Veri & Analitik
  • Yapay Zeka
  • Başlangıç
  • Güvenlik & Kimlik
  • SQL MCP Server ile Kullanıcı Kimliğini Koruyan Denetim
Bulut Altyapı Güvenlik & Kimlik Veri & Analitik Azure SQL Audit, Data API Builder (DAB) 2.0, Microsoft Entra ID, On-Behalf-Of (OBO), SQL MCP Server Aşkın KILIÇ 03/08/2026 2 Yorumlar

SQL MCP Server ile Kullanıcı Kimliğini Koruyan Denetim

SQL MCP Server ile Kullanıcı Kimliğini Koruyan Denetim
📑 İçindekiler
  1. SQL MCP Server'da üç kimlik doğrulama yaklaşımı
  2. DAB 2.0 ile OBO yapılandırması
  3. Kimliği doğrulamak: WhoAmI örneği
  4. Aynı yapılandırma: REST, GraphQL ve MCP
  5. Azure SQL denetimi ve Log Analytics
  6. Ajan erişimini hesap verebilir kılmak
  7. İlgili İçerikler
  8. Kaynaklar ve İleri Okuma

⏱️ 4 dk okuma📅 3 Ağustos 2026

Yapay zeka ajanları veritabanına eriştiğinde kurumsal soru artık “ajanın izni var mıydı?” değil, “hangi kullanıcının izniyle bu işlem yapıldı?” olarak değişiyor. Data API builder (DAB) 2.0 üzerinde çalışan SQL MCP Server, Microsoft Entra ID tabanlı On-Behalf-Of (OBO) kimlik doğrulamasını destekleyerek bu soruya net bir yanıt üretir: Azure SQL denetim kayıtları artık ajanı ya da servisi değil, sorguyu tetikleyen gerçek kullanıcıyı gösterebiliyor.

SQL MCP Server’da üç kimlik doğrulama yaklaşımı

SQL MCP Server tarafında veritabanına bağlanmak için üç temel yöntem var ve her biri denetim kayıtlarına farklı biçimde yansıyor.

Kullanıcı adı ve parola: Popülaritesi azalsa da hala geçerli olan bu yaklaşımda bağlantı dizesindeki kimlik, denetim kayıtlarında operatör olarak görünür. İşlemi kimin başlattığı bilinmez.

Managed Identity (MI): Parola ihtiyacını ortadan kaldırır ama kayıt sonucu değişmez; loglara MCP sunucusunun kimliği düşer, gerçek kullanıcı değil.

On-Behalf-Of (OBO) / pass-through: Microsoft Entra ID ile çalışır. Kullanıcı token’ı ajandan MCP sunucusuna, oradan da Azure SQL’e taşınır. MCP sunucusu bu token’ı aşağı akış token’ıyla değiştirir ve SQL bağlantısı kullanıcı adına açılır. Böylece denetim kayıtları işlemi başlatan gerçek kullanıcıyı işaret eder.

Akış özetle şöyle: Kullanıcı Entra ID ile kimlik doğrular, ajan token’ı MCP sunucusuna iletir, sunucu token değişimi yaparak Azure SQL’e kullanıcı kimliğiyle bağlanır ve SQL, log’a operatör olarak kullanıcıyı yazar.

DAB 2.0 ile OBO yapılandırması

OBO, DAB veri kaynağı bölümünde yapılandırılır. Bağlantı dizesi çıplak bir Azure SQL bağlantı dizesi olmalıdır; User ID, Password veya Authentication alanları yer almaz. DAB, SQL bağlantısını açtığında kullanıcıya özel erişim token’ını enjekte eder.

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

Her kullanıcı farklı bir veritabanı bağlantısı aldığı için yanıt önbelleklemesi ile OBO aynı anda kullanılamaz. DAB’ın yapılandırma doğrulayıcısı, ikisini birlikte etkinleştiren yapılandırmaları reddeder. OBO token önbelleği ise kullanıcı bazında tutulur.

Kimliği doğrulamak: WhoAmI örneği

Resmi OBO belgelerinde küçük bir WhoAmI görünümü, aktif bağlantıda SQL’in gördüğü kimliği göstermek için kullanılır:

CREATE VIEW [dbo].[WhoAmI] AS
SELECT SUSER_NAME() AS [UserName];

Bu görünüm DAB üzerinden kimliği doğrulanmış kullanıcılara açılır:

{
"WhoAmI": {
"source": {
"object": "dbo.WhoAmI",
"type": "view",
"key-fields": [ "UserName" ]
},
"rest": {
"enabled": true
},
"permissions": [
{
"role": "authenticated",
"actions": [ { "action": "read" } ]
}
]
}
}

Uygulama tarafında kullanıcı tarayıcıda Entra ID ile oturum açar, taşıyıcı (bearer) token’ı DAB’a iletir, DAB de bu token’ı signed-in kullanıcı için Azure SQL token’ıyla değiştirir:

const headers = await getAuthHeaders();
const response = await fetch(`${API_URL}/api/WhoAmI`, {
method: "GET",
headers
});
const payload = await response.json();
const sqlUserName = payload.value[0].UserName;
console.log(`SQL sees this request as: ${sqlUserName}`);

Sonuçta SQL, isteği bir servis hesabı olarak değil, oturum açan gerçek kullanıcı olarak görür.

Aynı yapılandırma: REST, GraphQL ve MCP

Aynı DAB çalışma zamanı REST, GraphQL ve MCP uç noktalarını birlikte sunabilir. OBO örneğinde MCP, Entra ID kimlik doğrulaması ve kullanıcı-delege yetkilendirmesiyle aynı yapılandırma içinde /mcp yolu üzerinden etkinleştirilir. Bir MCP aracı isteği de aynı WhoAmI varlığını okuyabilir:

{
"tool": "read_records",
"arguments": {
"entity": "WhoAmI"
}
}

Burada temel ayrım netleşir: Eylemi ajan gerçekleştirir ama SQL bu eylemi yetkilendiren kullanıcı bağlamını kaydeder. DAB varlık izinlerini uygulamaya devam eder, Azure SQL ise isteğin arkasındaki kullanıcıyı doğrular.

Azure SQL denetimi ve Log Analytics

Azure SQL denetimi veritabanı olaylarını Blob storage, Event Hubs veya Log Analytics’e yazabilir. Denetim şemasında database_principal_name, server_principal_name, statement ve OBO ile bağlanan orta katman uygulamasını tanımlayan obo_middle_tier_app_id gibi alanlar bulunur.

Log Analytics’te SQL’in gördüğü kullanıcıyı listelemek için şu tarz bir sorgu kullanılabilir:

AzureDiagnostics
| where Category == "SQLSecurityAuditEvents"
| where database_name_s == ""
| project
event_time_t,
action_name_s,
database_principal_name_s,
server_principal_name_s,
obo_middle_tier_app_id_s,
statement_s
| order by event_time_t desc

Bu sorgu kullanıcıyı, gerçekleştirilen SQL eylemini, çalıştırılan ifadeyi ve OBO yolundaki orta katman uygulamayı tek görünümde toplar. Ortaya çıkan tablo, ajan tabanlı sistemler için daha güçlü bir denetim sınırı oluşturur.

Ajan erişimini hesap verebilir kılmak

Basit uygulamalarda yönetilen kimlik veya servis kimlik bilgisiyle bağlanmak yeterli olabilir. Hassas verilere dokunan kurumsal ajanlarda ise veritabanının gerçek çağıranı bilmesi gerekir. SQL MCP Server ve DAB’ın OBO desteği tam da bu boşluğu doldurur: Ajan araçları çağırır, DAB izinleri uygular, Azure SQL ise “bunu kim yaptı?” sorusuna yanıt verebilir.

İlgili İçerikler

  • SQL MCP Server’ı App Service’te Çalıştırmak: Container’siz Yol
  • SQL Server 2025’te Güvenlik ve MCP: Tek Motor Yeter mi?
  • SQL MCP Server: Veritabanını Ajanlara Açmanın Yolu

Kaynaklar ve İleri Okuma

  • Audit Frontier AI Agents with SQL MCP Server – Azure SQL Dev Corner (orijinal yazı)
  • SQL MCP Server ve NL2SQL yaklaşımı
  • DAB MCP için kimlik doğrulama yapılandırması
  • Data API builder: On-Behalf-Of kavramı
  • DAB OBO hızlı başlangıç örneği
  • Azure SQL Database Azure Monitor ile izleme
  • Azure SQL Dev Corner ana blog
  • Veritabanına Akıllı Soru Sorabilen AI: Data API Builder MCP ile Güvenli Analiz Dönemi
  • Data API Builder 2.0: REST Yolunu İş Yapına Göre Kurmak
🤖Bu yazı yapay zeka (büyük dil modelleri) ile hazırlanmış, insan editör tarafından incelenmiştir. İçerik üretim sürecimiz.
Aşkın KILIÇ
Aşkın KILIÇYazar

20+ yıl deneyimli Azure Solutions Architect. Microsoft sertifikalı bulut mimari ve DevOps danışmanı. Azure, yapay zekâ ve bulut teknolojileri üzerine Türkçe teknik içerikler üretiyor.

AZ-305AZ-104AZ-500AZ-400DP-203AI-102

İlgili Yazılar

Bulut Maliyet Optimizasyonu: Hâlâ Geçerli Prensipler
Bulut Maliyet Optimizasyonu: Hâlâ Geçerli Prensipler19 Nis 2026
Azure DevOps Server Mayıs Yamaları: Neyi, Neden, Nasıl Kontrol Etmeli?
Azure DevOps Server Mayıs Yamaları: Neyi, Neden, Nasıl Kontrol Etmeli?17 May 2026
Windows 11 arm64 VS2026 İmajı GitHub Actions'ta GA
Windows 11 arm64 VS2026 İmajı GitHub Actions'ta GA23 Ağu 2026
GitHub Code Scanning’de Toplu Düzeltme: PR’lar Hızlandı
GitHub Code Scanning’de Toplu Düzeltme: PR’lar Hızlandı7 Nis 2026

Bu içerik işinize yaradı mı?

Benzer içerikleri kaçırmamak için YouTube ve GitHub hesaplarımı takip edin.

YouTube GitHub

Haftalık Bülten

Her pazar özenle seçilmiş teknoloji yazıları doğrudan e-postanıza gelsin.

Etiket Azure SQL Audit Data API Builder (DAB) 2.0 Microsoft Entra ID On-Behalf-Of (OBO) SQL MCP Server
Önceki yazı

az webapp deploy’da Zenginleştirilmiş Hata Çıktıları

Sonraki yazı

Visual Studio’da GitHub Copilot: Temmuz 2026 Güncellemesi

İlginizi Çekebilir

Kubernetes v1.37 Memory QoS Beta: Ne Değişti?
Aşkın KILIÇ 4

Kubernetes v1.37 Memory QoS Beta: Ne Değişti?

16/09/2026
GitHub Advanced Security Zorunlu Kılma: Ne Değişti?
Aşkın KILIÇ 3

GitHub Advanced Security Zorunlu Kılma: Ne Değişti?

16/09/2026
Kodlama Ajanları Neden Azure SQL Database Seçiyor?
Aşkın KILIÇ 4

Kodlama Ajanları Neden Azure SQL Database Seçiyor?

15/09/2026

2 comments

comments user
Emre Ç. 03/08/2026 20:38

OBO akışıyla asıl kullanıcı kimliğinin SQL audit loglarına düşmesi gerçekten kritik bir özellik. Çoğu sistemde servis hesabı görünüyor, gerçek kişiyi takip etmek zorlaşıyor. Peki bu yapıda ajan zinciri uzadığında, yani ajan başka bir ajana delege ettiğinde kimlik korunmaya devam ediyor mu?

Yanıtla
comments user
Kaan T. 03/08/2026 23:53

OBO akışıyla SQL loglarında gerçek kullanıcıyı görebilmek ciddi bir fark yaratıyor, özellikle kurumsal ortamlarda “bu sorguyu kim çalıştırdı?” diye saatlerce uğraşmak yerine direkt denetim izine bakabilmek çok değerli. DAB 2.0 bu işi ne kadar kolaylaştırıyor pratikte, production’da deneyen oldu mu?

Yanıtla

Yorum gönder Yanıtı iptal et

Yazı Ara

Takip Edin

  • Takipçi
  • Takipçi
  • Takipçi
  • Abone
  • Takipçi
  • Microsoft Agent Framework Harness ile C# Ajan Kurmak
    17/09/2026 Microsoft Agent Framework Harness ile C# Ajan Kurmak
  • LLVM-libc Doğru Yuvarlamalı Matematik: Ne Değişiyor?
    17/09/2026 LLVM-libc Doğru Yuvarlamalı Matematik: Ne Değişiyor?
  • Copilot Bütçe Artış Talepleri Nasıl Yönetilir?
    16/09/2026 Copilot Bütçe Artış Talepleri Nasıl Yönetilir?
  • Microsoft Graph PowerShell 5.1 Desteği Ne Değişti?
    16/09/2026 Microsoft Graph PowerShell 5.1 Desteği Ne Değişti?
  • AI Kod Yazmayı Değiştirdi: Öğrenme Nasıl Değişiyor?
    16/09/2026 AI Kod Yazmayı Değiştirdi: Öğrenme Nasıl Değişiyor?
  • Copilot Cloud Agent Metriği: Kullanımı Ölçmek Kolaylaştı
    11/04/2026 Copilot Cloud Agent Metriği: Kullanımı Ölçmek Kolaylaştı
  • GitHub Code Scanning’de Toplu Düzeltme: PR’lar Hızlandı
    07/04/2026 GitHub Code Scanning’de Toplu Düzeltme: PR’lar Hızlandı
  • MCP Apps’i Kolaylaştıran Fluent API: Sahada Ne Değişiyor?
    08/04/2026 MCP Apps’i Kolaylaştıran Fluent API: Sahada Ne Değişiyor?
  • GitHub Copilot Cloud Agent İçin Runner Kontrolü: Kurumsal Düzen
    03/04/2026 GitHub Copilot Cloud Agent İçin Runner Kontrolü: Kurumsal Düzen
  • Yapay Zekâ Çağında Sanayi Politikası: Asıl Mesela Ne?
    06/04/2026 Yapay Zekâ Çağında Sanayi Politikası: Asıl Mesela Ne?
  • GitHub Copilot Pro Denemeleri Neden Durdu?
    11/04/2026 GitHub Copilot Pro Denemeleri Neden Durduruldu?
  • vcpkg'de Paralel Kurulum ve Güvenlik Yaması: Neler Değişti?
    06/04/2026 vcpkg’de Paralel Kurulum ve Güvenlik Yaması: Neler Değişti?
  • MCP Apps’i Kolaylaştıran Fluent API: Sahada Ne Değişiyor?
    08/04/2026 MCP Apps’i Kolaylaştıran Fluent API: Sahada Ne Değişiyor?
  • Yapay Zekâ Çağında Sanayi Politikası: Asıl Mesela Ne?
    06/04/2026 Yapay Zekâ Çağında Sanayi Politikası: Asıl Mesela Ne?
  • Microsoft Foundry Mart 2026: Sahadan İlk İzlenimler
    10/04/2026 Microsoft Foundry Mart 2026: Sahadan İlk İzlenimler

SİZİN İÇİN DERLEDİK

Microsoft Agent Framework Harness ile C# Ajan Kurmak
Geliştirici Araçları Microsoft Azure Yapay Zeka

Microsoft Agent Framework Harness ile C# Ajan Kurmak

17/09/2026 Aşkın KILIÇ
LLVM-libc Doğru Yuvarlamalı Matematik: Ne Değişiyor?
Geliştirici Araçları Microsoft Azure

LLVM-libc Doğru Yuvarlamalı Matematik: Ne Değişiyor?

17/09/2026 Aşkın KILIÇ
Copilot Bütçe Artış Talepleri Nasıl Yönetilir?
Kurumsal Teknoloji Microsoft Azure

Copilot Bütçe Artış Talepleri Nasıl Yönetilir?

16/09/2026 Aşkın KILIÇ
Microsoft Graph PowerShell 5.1 Desteği Ne Değişti?
Geliştirici Araçları Microsoft Azure

Microsoft Graph PowerShell 5.1 Desteği Ne Değişti?

16/09/2026 Aşkın KILIÇ
AI Kod Yazmayı Değiştirdi: Öğrenme Nasıl Değişiyor?
Geliştirici Araçları Microsoft Azure Yapay Zeka

AI Kod Yazmayı Değiştirdi: Öğrenme Nasıl Değişiyor?

16/09/2026 Aşkın KILIÇ
Kubernetes v1.37 Memory QoS Beta: Ne Değişti?
Bulut Altyapı Konteyner & Kubernetes

Kubernetes v1.37 Memory QoS Beta: Ne Değişti?

16/09/2026 Aşkın KILIÇ
GitHub Advanced Security Zorunlu Kılma: Ne Değişti?
Güvenlik & Kimlik Kurumsal Teknoloji

GitHub Advanced Security Zorunlu Kılma: Ne Değişti?

16/09/2026 Aşkın KILIÇ
Copilot Test Agent ile Test Kapsamı Nasıl Artar?
DevOps Geliştirici Araçları

Copilot Test Agent ile Test Kapsamı Nasıl Artar?

15/09/2026 Aşkın KILIÇ
Kodlama Ajanları Neden Azure SQL Database Seçiyor?
Bulut Altyapı Güvenlik & Kimlik Veri & Analitik

Kodlama Ajanları Neden Azure SQL Database Seçiyor?

15/09/2026 Aşkın KILIÇ
CppCon 2026'da Visual Studio: C++ İçin Ne Değişti?
Bulut Altyapı Geliştirici Araçları Yapay Zeka

CppCon 2026’da Visual Studio: C++ İçin Ne Değişti?

15/09/2026 Aşkın KILIÇ
Kubernetes CBT API Beta: Alpha'dan Ne Değişti?
Bulut Altyapı Konteyner & Kubernetes

Kubernetes CBT API Beta: Alpha’dan Ne Değişti?

15/09/2026 Aşkın KILIÇ
MulticloudDB SDK Nedir? Tek Java API, Üç Sağlayıcı
Bulut Altyapı Geliştirici Araçları

MulticloudDB SDK Nedir? Tek Java API, Üç Sağlayıcı

14/09/2026 Aşkın KILIÇ

Hakkımda

Aşkın KILIÇ

Microsoft Azure Çözüm Uzmanı. Bulut bilişim, yapay zekâ, DevOps ve kurumsal güvenlik üzerine yazılar yazıyorum.

Devamını Oku →

Kategoriler

  • Azure
  • Bulut Altyapı
  • DevOps
  • Geliştirici Araçları
  • Güvenlik & Kimlik
  • Konteyner & Kubernetes
  • Kurumsal Teknoloji
  • Microsoft 365
  • Microsoft Azure
  • Veri & Analitik
  • Yapay Zeka

Popüler Etiketler

AI ajanları ASP.NET Core Azure azure app service Azure Cosmos DB Azure Developer CLI Azure DevOps Azure OpenAI azure sdk Azure SQL bulut bilişim CI/CD CodeQL code review copilot Copilot CLI DevOps geliştirici verimliliği GitHub GitHub Actions GitHub Copilot güvenlik Kimlik Doğrulama Kubernetes Kurumsal geliştirme kurumsal güvenlik kurumsal yapay zeka maliyet optimizasyonu MCP Microsoft Agent Framework Microsoft Azure Microsoft Entra ID Microsoft Foundry otomasyon performans Pull Request RAG SEO uyumlu verimlilik veri yönetimi Visual Studio Visual Studio 2026 VS Code yapay zeka Yazılım geliştirme
  • Gizlilik Politikası
  • Çerez Politikası
  • Kullanım Koşulları
  • Hakkımda
  • İletişim

© 2026 Aşkın KILIÇ | Tüm hakları saklıdır. | Powered By SpiceThemes

Çerez tercihleri Zorunlu çerezler sitenin çalışması için kullanılır. Analitik çerezler yalnız açık izninizden sonra Google Analytics ve Microsoft Clarity için etkinleştirilir. KVKK ve Çerez Politikası
✉

Haftalık Bülten

Azure, DevOps ve Yapay Zeka dünyasındaki en güncel içerikleri her hafta doğrudan e-postanıza alın.

Spam yok. İstediğiniz zaman iptal edebilirsiniz.
📱
Uygulamayı Yükle Ana ekrana ekle, çevrimdışı oku
Ana Sayfa
Kategoriler
💻 Geliştirici Araçları 453 yazı 🏗️ Bulut Altyapı 369 yazı 🤖 Yapay Zeka 308 yazı 🔧 DevOps 254 yazı ☁️ Microsoft Azure 245 yazı 🔒 Güvenlik & Kimlik 209 yazı 🏢 Kurumsal Teknoloji 91 yazı 📊 Veri & Analitik 65 yazı 🐳 Konteyner & Kubernetes 59 yazı 📧 Microsoft 365 22 yazı 📁 Azure 1 yazı
Ara
Popüler
Yapay Zeka Azure Kubernetes DevOps Copilot Docker
Paylaş
WhatsApp
İçindekiler
    ← az webapp deploy’da Zeng...
    Visual Studio’da GitHub ... →
    📩

    Gitmeden önce!

    Her pazar özenle seçilmiş teknoloji yazıları ve AI haberleri doğrudan e-postanıza gelsin. Ücretsiz, spam yok.

    🔒 Bilgileriniz güvende. İstediğiniz zaman ayrılabilirsiniz.

    📬 Haftalık bülten: Teknoloji + AI haberleri
    Beni Takip Et Yeni Azure / AI / DevOps yazılarını GitHub ve RSS üzerinden takip edin.
    GitHub RSS