Ana içeriğe geç
Kesit SQL
Orta · Veritabanı Yönetimi (DBA)

Yetki denetimi: bu kullanıcı gerçekte ne yapabilir?

LOGIN, USER, rol ve GRANT'ı kataloğu okuyarak denetlemek. En az yetki ilkesine göre karar vermek.

Uygulamada aç, 9 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ç.

Temel

Login, user, rol farkı SQL Server güvenliği dersinde. Burada asıl iş soru: bir yıl sonra hesaba bakıp "bu kişi neye erişiyor, neden?" diyebilmek.

Motor sınırıMotorda tek kullanıcı var: CREATE LOGIN, GRANT, DENY çalışmaz, hata verir. Görevlerde gerçek katalog görünümlerinin kurgu kopyalarını sorgularsın. Yetki gerçekte uygulanmaz.
-- Çalışmaz, başvuru. Yetki kişiye değil role verilir
CREATE LOGIN rapor_login WITH PASSWORD = N'<guclu parola>';
CREATE USER rapor_user FOR LOGIN rapor_login;
CREATE ROLE rol_rapor;
GRANT SELECT ON dbo.rapor_ozet TO rol_rapor;
ALTER ROLE rol_rapor ADD MEMBER rapor_user;
DENY SELECT ON dbo.bank_customers TO rapor_user;
REVOKE SELECT ON dbo.rapor_ozet FROM rol_rapor;

Kural: DENY kazanır

Katalog

GörünümNe var
sys.database_principalsKullanıcı ve roller. type S kullanıcı, R rol
sys.database_role_membersKim hangi rolde
sys.database_permissionsmajor_id nesne, grantee_principal_id alan, state G ya da D
SELECT r.name AS rol, u.name AS uye
FROM sys.database_role_members AS m
JOIN sys.database_principals AS r ON r.principal_id = m.role_principal_id
JOIN sys.database_principals AS u ON u.principal_id = m.member_principal_id
ORDER BY rol, uye;

En az yetki

Hesap işini yapacak kadar yetki alır, fazlası saldırı yüzeyidir: ele geçirilen raporlama hesabı silememeli. Saldırı senaryosu için SQL injection savunması dersine bak. Kısa kontrol listesi:

Alıştırmalara geç (9)