Ana içeriğe geç
Kesit SQL
İleri · Sertifika Hazırlık

DP-300: Azure SQL'de güvenlik, izleme ve otomasyon

Entra kimlik doğrulama, denetim, Query Store, DMV'ler, otomatik ayar, elastic jobs, Agent.

Uygulamada aç, 5 alıştırmayı çözÜcretsiz, hesap gerekmez, kurulum yok.

Bu sayfa dersin okuma sürümüdür. Metin bir kutuyu çalıştırmanı ya da adıma geçmeni söylüyorsa dersi uygulamada aç.

Sınavın konu alanları

Microsoft'un çalışma rehberine göre DP-300 kabaca şu alanlardan oluşur: veri platformu kaynaklarını planlama ve uygulama, güvenli ortam uygulama, veritabanı performansını izleme/yapılandırma/optimize etme, otomasyon ve yüksek erişilebilirlik ile felaket kurtarma. Oranlar dönem dönem güncellenir; resmi sayfayı kontrol et.

Güvenlik

-- Entra ID (Azure AD) kullanıcısını veritabanına ekle (contained user)
CREATE USER [ayse@sirket.com] FROM EXTERNAL PROVIDER;
ALTER ROLE db_datareader ADD MEMBER [ayse@sirket.com];

-- Dinamik veri maskeleme
ALTER TABLE dbo.customers ALTER COLUMN email
  ADD MASKED WITH (FUNCTION = 'email()');

-- Satır düzeyinde güvenlik: kullanıcı yalnızca kendi bölgesini görür
CREATE FUNCTION sec.fn_bolge(@bolge NVARCHAR(50))
RETURNS TABLE WITH SCHEMABINDING AS
RETURN SELECT 1 AS izin WHERE @bolge = CAST(SESSION_CONTEXT(N'bolge') AS NVARCHAR(50));
CREATE SECURITY POLICY sec.bolge_filtresi
  ADD FILTER PREDICATE sec.fn_bolge(city) ON dbo.customers WITH (STATE = ON);
ÖzellikKorur
TDEDiskteki veri (varsayılan açık)
Always EncryptedHassas sütunlar; sunucu bile düz metni görmez
Dinamik veri maskelemeYetkisiz kullanıcının gördüğü değer (veri değişmez)
RLSHangi satırların görüleceği
Denetim (Auditing), Defender for SQLKim ne yaptı, şüpheli etkinlik ve zafiyet değerlendirmesi
Veri keşfi ve sınıflandırmaHassas sütunların etiketlenmesi

İzleme ve performans

-- En çok CPU kullanan sorgular (Query Store)
SELECT TOP (10) q.query_id, t.query_sql_text,
       SUM(rs.count_executions) AS calisma,
       SUM(rs.avg_cpu_time * rs.count_executions) / 1000 AS toplam_cpu_ms
FROM sys.query_store_query q
JOIN sys.query_store_query_text t ON t.query_text_id = q.query_text_id
JOIN sys.query_store_plan p ON p.query_id = q.query_id
JOIN sys.query_store_runtime_stats rs ON rs.plan_id = p.plan_id
GROUP BY q.query_id, t.query_sql_text
ORDER BY toplam_cpu_ms DESC;

-- Kaynak kullanımı (Azure SQL Database)
SELECT TOP (20) end_time, avg_cpu_percent, avg_data_io_percent, avg_log_write_percent
FROM sys.dm_db_resource_stats ORDER BY end_time DESC;

-- Bekleme türleri
SELECT TOP (10) wait_type, wait_time_ms FROM sys.dm_db_wait_stats ORDER BY wait_time_ms DESC;

-- Otomatik ayar
ALTER DATABASE CURRENT SET AUTOMATIC_TUNING (FORCE_LAST_GOOD_PLAN = ON, CREATE_INDEX = ON);

Otomasyon

OrtamZamanlanmış görev
SQL Server / Managed Instance / VMSQL Server Agent işleri, bakım planları
Azure SQL DatabaseElastic jobs, Azure Automation, Logic Apps, Azure Functions
DağıtımARM/Bicep şablonları, PowerShell, Azure CLI, DACPAC ile şema dağıtımı

HA/DR

Geo-replication ve failover groups (Azure SQL), Always On availability groups ve failover cluster instance (VM), log shipping, otomatik yedeklemeler, belirli bir ana geri yükleme (PITR) ve uzun süreli saklama (LTR). RPO (ne kadar veri kaybı göze alınır) ve RTO (ne kadar sürede geri dönülür) hedeflerine göre seçilir.

Alıştırmalara geç (5)