Makale Özeti

SQL Server 2005 güvenlik açısından daha sağlam bir yapı ile karşımıza çıkmaktadır. Bu yenilikleri öğrenerek, database çözümümüzün planını yapabiliriz.

Makale


 

SQL Server 2005 güvenlik açısından daha sağlam bir yapı ile karşımıza çıkmaktadır. Bu yenilikleri öğrenerek, database çözümümüzün planını yapabiliriz.

 

 

  • SQL Server logins  için Password policy : SQL Server’in eski versiyonlarında da olduğu gibi, Microsoft Windows güvenlik sistemi veya SQL Server güvenlik sistemi aracılığıyla SQL Server 2005’e erişebiliriz. Buradaki farklılık daha önce Windows güvenlik sisteminde varolan password policy’lerini SQL Server login’lere de uygulayabilmemiz. Windows kullanıcı için var olan şifre sınırlandırmalarını artık SQL Server 2005’te de aynı durum geçerlidir.

 

  • Hiyerarşik Güvenlik Seviyeleri (Scopes) : Hiyerarşik güvenlik seviyeleri (scopes) farklı seviyelerdeki nesnelerin, principals, securables ve permissions’ların hiyerarşik düzenlenmesinin sağlayarak eski SQL versiyonlarına göre güvenliğin daha iyi  ve kolay yönetilebilmesini sağlar.

 

  • Kullanıcı ve şemanın bağımsızlığı: SQL 2005’te nesne isim uzayları nesne sahibinden bağımsız olarak, şema kullanılarak tanımlanır. Nesne sahibi ve nesne isim uzayının birbirinden bağımsız hale getirilmesi, daha esnek ve yönetilebilir bir framework sağlar.

 

  • Sınırlı metadata görüntülenmesi : SQL Server 2005’le gelen catalog viewler, metadatanın sınırlı olarak görüntülenmesini sağlar.  Varsayılan olarak kullanıcılar, izinli oldukları nesnelerin metadatalarını görebilirler.

 

  • Declarative execution context : CREATE komutu içerisinde yordam (procedure) ve foksiyonlar gibi programlanabilir modüllerin hangi güvenlik yetkileriyle çalışabileceğini ayarlayabiliriz.

 

SQL Server 2005’te güvenlik principals, securables ve permission’lar tabanlıdır.

 

Principallar: Sisteme erişen kullanıcılardır.

 

Windows seviyesinde

                                   Windows Grupları

                                   Domanin User Accountları

                                   Local User Accountlarını içerir.

 

SQL Server sistem’de          SQL Server Loginleri

                                               SQL Server Rolleri

 

Loginler de Windows login veya SQL Server Login’leri olabilirler. Defaut olararak Windows login etkindir. Windows accountları, SQL Server’daki Windows loginlere map edilmiştir.

 

Windows ve SQL Server loginlerin ikisi de sunucu rollerine atanabilirler. Bu aynı izinlere ihtiyaç duyan kullanıcı gruplarını ayarlamak açısından büyük kolaylık sağlar.

Windows kullanıcı şifreleri Windows işletim sistemi tarafından(Domain) kontrol edilir ve atanmış Windows kullanıcısına policy uygulayarak sınırlandırılabilir.

 

SQL Server loginleri için şifreler SQL Server tarafından kontrol edilir ve SQL Server tarafından yönetilen şifre policiyleri ile de sınırlandırılırlar. Şifre policy’leri yeni CREATE LOGIN statementinin bir parçası olarak tanımlanırlar.

 

 

Database Seviyesinde         

users (kullanıcılar)

database rolleri

uygulama (application) rolleri olmak üzere 3 seviye vardır.

 

Loginler database kullanıcılarına map edilirler ve kullanıcılar bir veya birden fazla database rolüne eklenebilirler. Uygulama rolleri,  client uygulama tabanlı alternatif güvenlik katmanı sağlamak için kullanılırlar.

 

Securables: Sistemde güvenliğini sağlamamız gereken nesnelerdir.

 

Securable’lar da  farklı seviyelerde var olurlar. Windows seviyesinde  SQL Server  ile ilişkili securable’lar, SQL Server’in kullandığı dosya ve registry keyleri içerirler. SQL Server seviyesinde securable’lar hiyerarşik düzeylerle organize edilmişlerdir.

 

Bunlar 

  • server seviyesi,
  • database seviyesi
  • şema seviyesidir. 

 

En geniş seviyesi olan Server seviyesinde  logins, http endpoints, serfifikalar, event notification (olay bildiricileri) gibi securable’lar içerirler. Server seviyesi SQL Server principal seviyesi ile uyum içindedir. Ayrıca server seviyesi  bir sonraki seviyeyi temsil eden bir veya birden fazla database içerir.

 

Database seviyesi, servisler, assemblyler, XML şemalar, roller, DDL eventler gibi securable’lar içerirler. Bir database, her biri nesneler için isim uzayı olarak görev yapan ve en düşük securable seviyesinde olan şemalar içerir.

 

Şema seviyesi tablolar, viewler, procedurler, queues gibi securable’lar içerir.

 

Permissionlar: Bir kullanıcının belirli aksiyonları veritabanı nesneleri üzerinde gerçekleştirmesi için gerekli olan yetkidir.

 

SQL Server’da  GRANT, REVOKE ve DENY komutları securable üzerinde principalların işlem yapmalarını kontrol ederler. Daha üst sevideki bir permission, daha düşük seviyelerdekilerde de geçerli olur. Permissionların bazılarını inceleyelim.


 

 

Securable

Permission

Tanımı

Server

ALTER ANY LOGIN

Server seviyesindeki herhangi bire login’i değiştirir.

 

CONNECT_SQL

SQL Server’a bağlanır.

 

CREATE LOGIN

Kullanıcı oluşturur

 

CONTROL SERVER

Full sistem yönetim kontrolü

Login

IMPERSONATE

Kullanıcının başka bir kullanıcının yetkisini kullanmasını sağlar.

 

ALTER

Kullanıcıyı değiştirir.

Database

CREATE TABLE

Veritabanında tablo oluşturur.

 

CONTROL

Veritabanın tüm kontolünü sağlar

 

ALTER ANY USER

Veritabanın daki herhangi bir kullanıcıyı değiştirir.

Schema

SELECT

Şemadaki herhangi bir nesneden satırları seçer

 

ALTER

Şemadaki herhangi bir nesneyi değiştirir

 

TAKE OWNERSHIP

Şemanın sahipliğini değiştirir.

User

ALTER

Belirtilen kullanıcıyı değiştirir.

 

Table

SELECT

Tablodan satırları seçer

 

ALTER

Tabloyu değiştirir.

 

CONTROL

Tabloyu tüm kontrol eder.

 

 

İyi Çalışmalar Dileklerimle...

 

Özgür ALTUNTAŞ