Makale Özeti

Bu yazımızda SQL Server 2005teki güvenlik yeniliklerinden ve temel kavramlardan bahsedeceğiz. Çok yakında Yazılım Güvenliği bölümünde SQL Server 2005te güvenlik üzerine, tek tek özel konular ve yeniliklere odaklanmış makaleler bulacaksınız.

Makale

SQL Server 2005’te güvenliğe giriş
Bu yazımızda SQL Server 2005teki güvenlik yeniliklerinden ve temel kavramlardan bahsedeceğiz. Çok yakında Yazılım Güvenliği bölümünde SQL Server 2005te güvenlik üzerine, tek tek özel konular ve yeniliklere odaklanmış makaleler bulacaksınız.

SQL Server 2005’te güvenlik yenilikleri
SQL Server 2005’te yapısal değişiklikleri de içeren önemli güvenlik yenilikleri vardır. Veritabanınızın güvenliğini planlarken, öncelikle yenilikleri ve getirilen hiyerarşik yapıda yer alan kavramları biliyor olmanız gerekir.
SQL Server girişleri (logins) için
Önceki versiyonla benzer bir şekilde SQL Server girişleri ya da Microsoft Windows girişleri kullanabilirsiniz. Bu sürümde farklı olarak, SQL Server girişlerine de parola (password) politikaları uygulayabilirsiniz. Windows girişlerine Windows’un uyguladığı politikalara benzer şekilde çalışır.
Hiyerarşik güvenlik kapsamları (scopes)
SQL Server 2005 hiyerarşik bir system kullanarak çeşitli kapsamlarda istikrarlı bir güvenlik modeli kurar. Bu modelde temel kavramlar olarak tanıtlanmış kimlikler (principal), emniyete alınabilir varlıklar (securables) ve izinler (permissions) yer alır. Yeni yaklaşım, güvenliği önceki versiyonlara göre daha yönetilebilir kılar.
Kullanıcı ve şemanın ayrılması
Eski versiyonlarda nesnelerin isim alanları sahipleriyle birebir bağlantılıydı. SQL Server 2005’te isim alanları şemalar tarafından belirlenir, isim alanı nesnenin sahibinden bağımsızdır. Böylece daha rahat yönetilen bir nesneler yapısı kurabilirsiniz.
Metadata görünürlüğünde kısıtlama
SQL Server 2005’te katalog görünümlerinin (catalog views) kullanımı metadata görünürlüğünü kısıtlamaktadır. Normalde, kullanıcılar sadece kendilerine izin verilen nesneler için metadatayı görebilirler.
Bildirimli çalışma ortamı
Yüklü yordamlar (stored procedure) ve fonksiyonlar gibi programlanabilir modüllerin çalışma ortamları artık CREATE ifadesinde açık olarak belirtilebiliyor. Böylelikle nesneyi oluşturan kişi, diğer nesnelere erişim konusunda sahiplik zincirlerinin mekanizmasıyla uğraşmadan, nesnenin hangi kullanıcı hesabıyla çalışacağını belirtebiliyor.

SQL Server 2005 güvenliğinde temel kavramlar


‘Principal’ nedir?
Dokümantasyonda principal terimi, bir SQL Server sistemindeki tanıtlanmış kimlikler ya da bir başka deyişle kimliği kanıtlanmış erişenler için kullanılır. Bir SQL Server sisteminde bulunabilecek farklı principal tiplerini tanımak, güvenlik sisteminizi kurabilmenizde faydalı olacaktır.
İzinleri principal’lara verebilirsiniz. SQL Server dokümantasyonunda iki tip principal ele alınır: Bölünemeyenler ve koleksiyonlar. Tekil kimlikler ilkine, roller ikincisine girer.
Principal’lar 3 seviyede bulunmaktadır: Windows, SQL Server ve veritabanı. Her üç seviyede olabilecek principal tiplerini şöyle verebiliriz:
Windows: Windows yerel kullanıcı hesabı, Windows domain (etki alanı) kullanıcı hesabı, Windows gurubu.
SQL Server: SQL Server girişi (login), SQL Server rolü
Veritabanı: Veritabanı kullanıcısı, Veritabanı rolü, Veritabanı gurubu, Uygulama rolü
Not: Veritabanı grupları temel olarak geriye dönük uyumluluk için desteklenmektedir. Onların yerine veritabanı rollerini kullanmanız gerekir.


Emniyete alınabilir varlıklar nelerdir?
SQL Server 2005’in yetkilendirme sisteminin erişimlerini düzenlediği nesnelere emniyete alınabilir varlıklar (securables) denir. SQL Server’da güvenlik yapınızı tasarlayabilmek için ‘principal’lar gibi ‘securable’lar konusunda da bilgi sahibi olmanız gerekir.
Securable nesneler kapsam (scope) adı verilen iç içe yuvalanmış hiyerarşilerden oluşur. Bu kapsamların kendileri de güvenlik altına alınabilir varlıklardır. 3 güvenlik kapsamı vardır: Sunucu, veritabanı ve şema.
Sunucu kapsamı
Sunucu kapsamındaki emniyete alınabilir varlıklar şunlardır:
- Girişler (logins)
- HTTP bitim noktaları
- Sertifikalar
- Olay bildirimleri
- Veritabanları
Veritabanı kapsamı
Veritabanı kapsamındaki emniyete alınabilir varlıklar şunlardır:
- Kullanıcılar
- Roller
- Uygulama rolleri
- Assembly’ler
- Mesaj tipleri
- Servis anlaşmaları
- Servisler
- Full-text kataloglar
- DDL olayları
- Şemalar
Şema kapsamı
Şema kapsamındaki emniyete alınabilir varlıklar şunlardır:
- Tablolar
- Görünümler (Views)
- Fonksiyonlar
- Yordamlar (Procedures)
- Kuyruklar
- Tipler (types)
- Kurallar
- Varsayılan değerler (defaults)
- Sinonimler
- Birleştirmeler (Aggregates)


İzinler nelerdir?
SQL Server 2005 emniyete alınabilir varlıklara tanıtlanabilir kimlikler tarafından erişimi kontrol etmek için izinleri kullanır.
İzinler verilebilir, alınabilir ya da yasaklanabilir. SQL Server’da yer alan ‘securable’ların her biri gerekli ‘principal’lara atanabilecek iliştirilmiş izinlere sahiptir.
Bu alanda gelen bir yenilik, eskiden sunucu seviyesindeki izinler sabit sunucu rolleri ile yönetilirken, artık izinlerin sunucu kapsamında da atanabiliyor olmasıdır.
Verilebilecek pek çok izin vardır. Burada örnek olarak bunlardan bazılarını sıralayalım: (Tam liste için SQL Server 2005 Books Online’a bakınız.)
 

Securable  İzin  Tanım
Sunucu  CONNECT_SQL  Sunucuya bağlanmak
  CREATE LOGIN  Bir giriş (login) oluşturmak
  ALTER ANY LOGIN  Sunucu kapsamında herhangi bir girişi değiştirmek
  CONTROL SERVER  Tüm sistem yönetimi kontrolü
Login  ALTER  Login’de değişiklik yapmak
  IMPERSONATE  Login’in kılığına bürünmek
Veritabanı  CREATE TABLE  Veritabanında tablo oluşturmak
  ALTER ANY USER  Veritabanında herhangi bir kullanıcıda değişiklik yapmak
  CONTROL  Veritabanın tüm kontrolü
Kullanıcı  ALTER  Belirtilen kullanıcıda değişiklik yapmak
Şema  SELECT  Şemada yer alan herhangi bir nesneden okuma yapmak
  ALTER  Şemada yer alan herhangi bir nesnede değişiklik yapmak
  TAKE OWNERSHIP  Şemanın sahipliğini devralmak
Tablo  SELECT  Tablodan satırlar seçmek
  ALTER  Tabloyu değiştirmek
  CONTROL  Tablonun tüm kontrolü

Miras alınan izinler
SQL Server 2005 verilen bir kapsamdaki emniyete alınabilir nesnelere ilişkin miras alınan izinleri destekler. Mesela, bir veritabanı nesnesinde CONTROL hakkı olan bir tanıtlanmış kimlik, o veritabanındaki tüm securable’ların ve o veritabanında yer alan tüm şemelardaki tüm securable’ların CONTROL iznini almış olur.