Kimlik doğrulama ve yetkilendirme katmanları, GRANT / DENY / REVOKE.
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ç.
İki kapı: sunucu ve veritabanı
| Kavram | Düzey | Açıklama |
| Login | Sunucu (instance) | Sunucuya bağlanma kimliği. Windows (Active Directory) veya SQL Server kimlik doğrulaması. |
| User | Veritabanı | Login'in bir veritabanındaki karşılığı. Login olmadan (contained database) da olabilir. |
| Rol | Sunucu veya veritabanı | Yetkileri gruplar. Kullanıcıya tek tek değil, role yetki verilir. |
| Şema (schema) | Veritabanı | Nesnelerin klasörü (dbo, sales, hr). Yetki sınırı olarak kullanılır. |
-- 1. Sunucu düzeyinde login
CREATE LOGIN rapor_login WITH PASSWORD = N'Guclu!Parola#2025';
-- 2. Veritabanında kullanıcı
USE anadolu;
CREATE USER rapor_user FOR LOGIN rapor_login;
-- 3. Rol oluştur, yetkiyi role ver, kullanıcıyı role ekle
CREATE ROLE raporcular;
GRANT SELECT ON SCHEMA::sales TO raporcular;
ALTER ROLE raporcular ADD MEMBER rapor_user;
Hazır roller
| Rol | Yetki |
sysadmin (sunucu) | Her şey. Çok az kişide olmalı. |
db_owner | Veritabanında her şey |
db_datareader / db_datawriter | Tüm tabloları okuma / yazma |
db_ddladmin | Nesne oluşturma ve değiştirme |
GRANT, DENY, REVOKE
GRANT: izin verir.
DENY: açıkça yasaklar; her zaman kazanır. Kullanıcı bir rolden GRANT, başka bir rolden DENY alıyorsa erişemez.
REVOKE: daha önce verilen GRANT veya DENY'ı geri alır (nötr duruma döner).
GRANT EXECUTE ON dbo.usp_SiparisOzet TO raporcular; -- tabloya değil, prosedüre izin
DENY SELECT ON dbo.employees (salary) TO raporcular; -- tek sütunu gizle
REVOKE SELECT ON SCHEMA::sales FROM raporcular;
En az yetki ilkesiUygulamalara tablolara doğrudan erişim yerine yalnızca saklı yordamlara EXECUTE izni vermek hem güvenliği hem de değişiklik yönetimini kolaylaştırır (ownership chaining sayesinde prosedür, tabloya kullanıcının doğrudan yetkisi olmadan erişir).
Satır ve veri düzeyinde koruma
- Row-Level Security: Bir kullanıcının yalnızca kendi bölgesinin satırlarını görmesini sağlar (güvenlik predikatı fonksiyonu ile).
- Dynamic Data Masking: E-posta, telefon gibi alanları yetkisiz kullanıcıya maskeli gösterir (
a***@gmail.com).
- TDE (Transparent Data Encryption): Diskteki veri ve yedek dosyalarını şifreler.
- Always Encrypted: Veri istemcide şifrelenir; DBA bile açık halini göremez.