# SQL Server'da Kullanıcı ve Rol Yönetimi: Değişiklikler Nasıl İzlenmeli?

Veritabanı güvenliğinin temeli kullanıcı ve rol yönetimi. Ama bu alandaki değişiklikler çoğunlukla en az izlenen değişiklikler.

Neden Bu Kadar Kritik? Bir kullanıcıya yanlış rol atandı. Ya da bir rol fazla yetkiyle tanımlandı. Ya da ayrılan çalışanın hesabı silinmedi. Bu değişikliklerin hiçbiri sistemi hemen bozmaz. Sessizce orada durur, ta ki biri o yetkiyi kullanana kadar. Güvenlik ihlallerinin önemli bir kısmı teknik açıklardan değil, yanlış yönetilen yetkilerden kaynaklanır.

İzlenmesi Gereken Değişiklikler Yeni kullanıcı oluşturma Kim oluşturdu? Hangi amaçla? Hangi yetkiler verildi? Rol ataması ve değişikliği Bir kullanıcıya yeni rol atandı ya da mevcut rol değiştirildi. Kim onayladı? Yetki genişletme Bir kullanıcıya GRANT ile yeni yetki verildi. Hangi nesne için, hangi seviyede? Hesap durumu değişikliği Hesap devre dışı bırakıldı ya da yeniden etkinleştirildi. Kim yaptı, neden?

Mevcut Durum Analizi sql-- Veritabanındaki tüm kullanıcıları ve rollerini listele SELECT dp.name AS KullaniciAdi, dp.type\_desc AS KullaniciTipi, dp.create\_date AS OlusturmaTarihi, dp.modify\_date AS SonDegisiklikTarihi, STRING\_AGG(r.name, ', ') AS Roller FROM sys.database\_principals dp LEFT JOIN sys.database\_role\_members rm ON dp.principal\_id = rm.member\_principal\_id LEFT JOIN sys.database\_principals r ON rm.role\_principal\_id = r.principal\_id WHERE dp.type IN ('S', 'U', 'G') -- SQL user, Windows user, Windows group GROUP BY dp.name, dp.type\_desc, dp.create\_date, dp.modify\_date ORDER BY dp.modify\_date DESC; sql-- Nesne bazlı yetkileri listele SELECT dp.name AS KullaniciAdi, p.class\_desc AS NesneTipi, OBJECT\_NAME(p.major\_id) AS NesneAdi, p.permission\_name AS Yetki, p.state\_desc AS YetkiDurumu FROM sys.database\_permissions p JOIN sys.database\_principals dp ON p.grantee\_principal\_id = dp.principal\_id WHERE dp.type IN ('S', 'U', 'G') AND p.major\_id > 0 ORDER BY dp.name, OBJECT\_NAME(p.major\_id);

Periyodik Yetki Denetimi Altı ayda bir şu kontrolleri yapın: Aktif olmayan hesaplar: son 90 günde hiç login olmamış kullanıcılar büyük ihtimalle artık gerekli değil. sqlSELECT name AS KullaniciAdi, type\_desc AS Tip, create\_date AS OlusturmaTarihi, LOGINPROPERTY(name, 'LastSuccessfulLogon') AS SonBasariliGiris FROM sys.server\_principals WHERE type IN ('S', 'U') AND is\_disabled = 0 ORDER BY SonBasariliGiris; Aşırı yetkili hesaplar: sysadmin rolünde kaç kişi var? Gerçekten bu kadar kişinin sysadmin olması gerekiyor mu? sqlSELECT sp.name AS KullaniciAdi, sp.type\_desc AS Tip FROM sys.server\_principals sp JOIN sys.server\_role\_members srm ON sp.principal\_id = srm.member\_principal\_id JOIN sys.server\_principals r ON srm.role\_principal\_id = r.principal\_id WHERE r.name = 'sysadmin' ORDER BY sp.name;

Yetki Değişikliklerini Değişiklik Sürecine Dahil Etmek Yetki değişiklikleri şema değişiklikleriyle aynı onay sürecinden geçmeli. Fark şu: yetki değişikliklerinde güvenlik ekibinin de onayı olmalı, sadece teknik onay yetmez. Yeni kullanıcı oluşturma talebi geldiğinde şu bilgiler istenmeli: hangi amaçla, hangi sistemlere erişim gerekiyor, kim talep etti, kim onaylıyor, ne zaman erişime gerek kalmayacak? Son soru özellikle önemli. Geçici erişimlerin bitiş tarihi baştan belirlenirse erişim temizliği otomatik hatırlatıcıyla yönetilebilir.

Sonuç Kullanıcı ve rol yönetimi değişiklik yönetiminin en sık ihmal edilen ama en kritik alanlarından biri. Sistematik izleme ve periyodik denetim bu alandaki riskleri büyük ölçüde azaltır. Detaylı bilgi için: sqlchangeguard.com
