Baglantilar


21 Kasım 2007
Kategori: Genel

SQL Server Güvenliği

 

Windows 2000/2003 Server da var olan kullanıcı yetkileri, kullanıcıların domain içinde veya lokaldeki üyelikleri sistem güvenliği için çok önemlidir. Aynı şekilde  SQL Server 2000’de de kullanıcılara tanımlanan oturumları, izinleri ve rolleri detaylı bir şekilde bilmek ve bu gereksinimlere göre tanımlamalar yapmak sistem güvenliğini sağlamak açısından belirleyici özelliklerdir.Atadığınız roller ve izinler veritabanına bağlanan kullanıcıların hangi tür veriye ulaşabileceklerini veya neleri yapıp yapamayacaklarını belirler.

 

SQL Server Güvenlikleri dört ana başlıktan oluşmaktadır. Bunlar;

  • SQL Server Kimlik DoÄŸrulama Kipleri
  • Sunucu Oturumları
  • Ä°zinler
  • Roller

 

1.Adım Olarak SQL Server Kimlik Doğrulama Kipleri

SQL Server’da iki tür kimlik doğrulama kipi vardır

Windows Authentication Only:Windows etki alanında bulunan kullanıcı ve grup hesaplarını kullanabilirsiniz.Domain’de (etki alanında) tanımlı kullanıcılara birde SQL Server oturum açma adı ve parolası vermenize gerek kalmadan veritabanlarına erişim yapabilirler.

Karma Güvenlik: Veritabanına şirket dışından erişim oluyorsa, etki alanı kullanılmıyorsa Karma Güvenlik kipiyle veritabanlarına erişim sağlanabilir.

SQL Server kimlik doğrulama kiplerini görmek için Enterprise Manager tıklayın çalışmak istediğiniz Sunucuyu içeren sunucu grubuna erişin, sonra da ve Enterprise Manager ağaç yapısındaki sunucu adını farenin sağ düğmesiyle tıklayın ve özelikleri seçin. Security tabında kimlik doğrulama modları yer almaktadır.

 

2.Adım Olarak Sunucu Oturumları

İki tür kimlik doğrulama kipi bulunduğu gibi iki türde sunucu oturumu mevcuttur. Etki alanın oturumlarını, etki alanında ya da yerel kullanıcı hesabını yerel grup hesaplarında ya da evrensel veya genel etki alanı grup hesapları olabilen etki alanı hesaplarını kullanarak yaratabilirsiniz. SQL Server oturumlarınız unique (benzersiz) bir oturum adı ve parola belirleyerek yaratırsınız. Varsayılan ayar olarak gelen oturumlar aşağıda yer almaktadır.

  • Yerel Administrators grup
  • Yerel Administrator hesabı
  • sa oturumu
  • guest oturumu
  • dbo oturumu

 

3.Adım Olarak İzinler

İzinler, kullanıcıların SQL Server üzerinde yada bir veritabanında yapabileceklerini belirler ve kullanıcılara oturum kimlik’ine ,grup üyeliğine ve rol üyeliğine göre verirler.Kullanıcıların veritabanında bir değişiklik yapma yada bir şeyi silme gibi eylemleri gerçekleştirmeden önce uygun izinlere sahip olmaları gerekmektedir.

SQL Server izinler üç ana başlıkta toplanır:

  • Nesne izinleri (object permissions)
  • Bildiri izinleri (statement permissions)
  • KendiliÄŸinden izinler (implicit permissions)

 

Nesne İzinleri:Tablo ,görünüm ve sütunları erişimi düzenleyen izinlerdir.Örneğin sadece raporlama üzerinde çalışan bir kullanıcıya bir tablodan sadece bilgi seçme (select) hakkı verilebilir,bu kullanıcı tabloya herhangi bir bilgi ekleme(insert),güncelleme(update) ve silme(delete) yetkisi vermeyebiliriz

 

Nesne Türü                                   Eylemler

Column                                          select ve update

Row                                               N/A(Tablo düzeyinde ayarlanır)

Stored Procedure                           Execute

Table                                              Select,insert,update,delete ve references

View                                              Select,insert,update,delete

 

Bildiri İzinleri:Bir veritabanı yaratmak veya bir veritabanına nesne eklemek için kullanılan yönetici izinleridir.Bu tür izinleri System Administrators rolüne sahip üyeler kullanabilir.Varsayılan ayarlarda normal oturumlara bildiri izinleri verilmez,daha sonra isteğe bağlı olarak verilebilir.Örneğin bir kullanıcıya veritabanını yedekleme izni vermek istiyorsanız backup database yürütme izni verilmelidir.Bu tür izinler verilebilir ve daha sonra o kullanıcıda geri alınabilir izinlerdir.Bu izinler aşağıda yer almaktadır:

Create Database: Kullanıcının Veritabanı yaratıp yaratmayacağı belirler.

Create Default: Kullanıcının tablo sütunu içinde varsayılan bir değer yaratıp yaratmayacağını belirler.

Create Function: Kullanıcının veritabanında kendi tanımladığı bir işlev değer yaratıp yaratmayacağını belirler.

Create Procedure: Kullanıcının saklı yordam değer yaratıp yaratmayacağını belirler.

Create Rule: Kullanıcının bir tablo sütunu değer yaratıp yaratmayacağını belirler.

Create Table: Kullanıcının bir tablo değer yaratıp yaratmayacağını belirler.

Create View: Kullanıcının bir görünüm değer yaratıp yaratmayacağını belirler.

Backup Database: Kullanıcının veritabanını yedekleyip yedekleyemeyeceğini belirler.

Backup Log: Kullanıcını işlem günlüğünü yedekleyip yedekleyemeyeceğini belirler.

 

Kendiliğinden İzinler: Önceden tanımlı rollerin üyeleri yada veritabanı nesnesi sahiplerin kendiliğinden olan izinleridir. Kendiliğinden olan izinler değiştirilemezler. Örneğin System Administrators’ın SQL Server’da tüm eylemleri gerçekleştirebilmesi gibi.

 

4.Adım Olarak Roller

Bir grup kullanıcıya kolayca izin atayabilmek için kullanılan ve değiştirilemeyen önceden tanımlı izinlerdir.

  • Sunucu Rolleri
  • Veritabanı Rolleri

 

Sunucu Rolleri: Sunucuyu yönetebilmek için kullanılır. Sunucu rolleri sunucu düzeyinde ayarlanır ve önceden tanımlıdırlar. Bu izinler tüm sunuyu etkiler ve değiştirilemezler.

Resimdeki sunucu rollerinin açıklamaları ise şu şekildedir.

Bulk Insert Administrators(bulkadmin): Veritabanına yığın eklemeleri yapmaları gereken etki alanı hesapları için tanımlanmış roldür. Bu rolün üyeleri bulkadmin’e üyeler ekleyebilir ve Aşağıda belirtilen izinlere sahiptirler.

Database Creators(dbcreator): Veritabanı yaratma, değiştirme ve iptal etme yetkisini içeren roldür. Aşağıda belirtilen izinlere sahiptirler.

 

Disk Administrators(diskadmin):Disk dosyalarını düzenleyebilme yetkisi verilmek istenen kullanıcılara atanan roldür. Aşağıda belirtilen izinlere sahiptirler.

Process Administrators(processadmin): SQL Server işlemleri denetleyebilme yetkisine sahip kullanıcılar bu role eklenirler. Process admin’e üye ekleyebilirler ve işlemleri kesebilirler.

Securtiy Administrators(securityadmin):Oturumları düzenler, veritabanı izinleri yaratır ve hata günlüklerini okuması gereken kullanıcılar bu role eklenirler. Aşağıdaki izinlere sahiptir.

Server Administrators(serveradmin): Sunucu ayarlamaları yapabilmesi ve sunucuyu kapatılabilmesi gereken kullanıcılar bu role eklenirler ve aşağıda yer alan izinlere sahiptirler.

Setup Administrator(setupadmin):Bu role üye kullanıcılara setup admine üye ekleyebilir ve bağlı sunucular ekleyip silebilirler.Aşağıda yer alan izinlere sahiptirler.

System Administrators(sysadmin): SQL Server üzerinde tam denetime sahip olması istenen kullanıcılarda sysadmin’de olmalıdırlar. SQL Server’da tüm uygulamaları yerine getirebilirler.

Veritabanı Rolleri: Veritabanı üzerinde izinler atamak istediğinizde veritabanı rollerini kullanabilirsiniz. Bu roller veritabanları için tek tek ayarlanır, yani bir kullanıcının her veritabanında farklı rolleri olabilir.

 SQL Server’da önceden tanımlı veritabanı rolleri mevcuttur. Önceden tanımlı roller yerleşiktir ve değiştirilemeyen izinleri vardır. Aşağıda önceden tanımlı roller ve açıklamaları yer almaktadır.

db_accesadmin: Bir veritabanına oturum ekleme ve çıkarma yetkisine sahip olması gereken kullanıcılar bir role üye edilmelidir.

db_backupoperator: Veritabanı yedeklemesi yapması gereken kullanıcılar bu role üye olmalıdırlar.

db_datareader: Veritabanından veriyi görüntüleyebilirler.

db_datawriter: Veritabanı üzerinde değişiklik yapabilme yetkisine sahip kullanıcılar bu role üye yapılmadırlar. Bu role üye kullanıcılar delete, insert ve update işlemlerini yapabilirler.

db_ddladmin: Bu role üye kullanıcılar SQL Server’ın veri tanımlama dili (data definition language-ddl)ile ilgili haklara sahip olurlar.

db_denydatareader: Veritabanı oturumunda olan kullanıcıların veriye erişimini kısıtlamak için oluşturulan roldür. Veritabanındaki tüm nesnelerde select izinlerini yasaklayabilir veya geri alabilirler.

db_denydatawriter: Bu rolün üyeleri Veritabanındaki tüm nesnelerden insert,update ve delete izinlerini yasaklayabilir yada geri alabilirler.

db_securityadmin: İzinleri ,nesne sahipliğini ve rolleri düzenleyebilmesi gereken kullanıcılar bu role üye edilmelidir.

 db_owner: Veritabanı üzerinde her türlü denetime gereksinimi olan kullanıcılar bu role üye edilmelidirler. Bu rolün üyeleri izinleri atayabilir, veritabanı ayarlarını değiştirebilir, veritabanına bakım uygulayabilir ve veritabanı üzerinde diğer tüm yönetim görevlerini gerçekleştirebilir.

public: Tüm veritabanı kullanıcılarına varsayılan olarak gelen bir roldür. En düşük izin ve ayrıcalıklarını taşımaktadır. Bir kullanıcıya public dışında atadığınız her rol, yeni ayrıcalık ve izin ekler.

 Yukarıda açıklamaları yapılan Veritabanı Rollerine istenirse kendinizde yeni Veritabanı Rolleri ekleyebilirsiniz. Yeni Rol eklemek istediğiniz veritabanına girin ve Roles’ın üzerinde farenin sağ tuşu ile New Database Role seçin.

Kendinizin eklemek istediğiniz yeni Veritabanı Rolünün adını yazın ve Standard Role altında yer alan Add butonuna basın ve bu role üye yapmak istediğiniz kullanıcıyı ekleyin.

Permissions butonuna basarak açılan pencereden eklediğiniz kullanıcının o veritabanındaki hangi işlemleri yapmasını ve yapmamasını istiyorsanız bu ayarlamaları yapın.

Columns butonuna basarak izni düzenlediğiniz veritabanında kullanıcının kolonlarda ne çeşit işlemler yapıp, yapamayacağını ayarlarsanız.

Bu işlemlerle oturum ile nesne izinleri sağlamış olursunuz.

Sunucu oturumlarının, İzinlerin ve Rollerin kullanıcılar üzerindeki etkilerini öğrendikten sonra çalışmak istediğiniz sunucuda bir kullanıcı yaratmayı ve tüm yukarıda anlatılanların nasıl yapıldığını bir örnekle tamamlayıp, SQL Server’da Güvenlik konusunu tamamlayalım.

 Varolan oturumları görmek için Enterprise Manager’ başlatın ve çalışmak istediğiniz sunucuya gelin, Sunucunun Security klasörünün altındaki Logins girişini seçin.

Resimde sağ tarafta yer alan Name,Type,Server Access,Default Language ve Default Database açıklamaları ise şu şekildedir.

Name :Oturum adı,

Type: Standard SQL Server’daki oturumları,Etki alanı kullanıcısı için Windows User ve Etki alanı grup hesaplarını Windows Group göstermektedir.

Server Access: Kullanıcın sunuya erişim iznini gösterir,Permit izinin var olduğunu,Deny olmadığını belirtir.

Default Database: Kullanıcı için varsayılan veritabanını.

Default Language: Kullanıcı için atan dili göstermektedir.

 Logins üzerinde farenin sağ tuşuna basın ve New Login seçin.

 

Yukarıdaki Resimde Windows Authentication’a göre açılan kullanıcı görülmektedir.

Yukarıdaki resimde ise SQL Server Authentication’a göre açılan kullanıcı görülmektedir.İstediğiniz  kimlik doğrulama tipine seçtikten sonra.Server Roles ve Database Access’leri tanımlamanız gerekmektedir.

Server Roles’da, kullanıcıya Sunucu üzerindeki rolleri tanımlanır bu rollerin ne tür izinler ve yetkiler verdiği daha önceki bölümlerde anlatılmıştı

Database Access’le  ise kullanıcının hangi veritabanına login olabileceğini ve bu veritabanı üzerinde nasıl izinleri sahip olacağı bu alanda tanımlanır.

Eğer daha sonraki günlerde SQL Server Authentication’a göre açılan kullanıcı şifresinin değiştirilmesi isteniyorsa Password alanına yeni şifre yazılır ve confirm kutusuna aynı şifre onaylanır.

Açılan kullanıcı şirketinizden ayrılmış veya herhangi bir sebepten dolayı kullanıcı için açılan hesabı kaldırmak istiyorsanız.Kaldırmak istediğiniz kullanıcın üzerinde farenin sağ tuşu ile tıklanır ve Delete (sil)seçilir.

 

 

Veritabanı Yöneticisi olarak, SQL Server Kimlik Doğrulama Kiplerini, Sunucu Oturumlarını, İzinleri ve Rolleri kâğıt üzerinde daha önceden belirler ve bu prosedüre göre işlemler yaparsanız sonradan çıkabilecek büyük güvenlik sorunlarını önlemiş ve daha az performansla daha kolay bir yönetim yapmış olursunuz.

 Kaynak:

microsoft.com

70-228: Microsoft SQL Server 2000 System Administration Training

Bir sonraki Makale’de Görüşmek Üzere…

 

- Bu yazı şu ana kadar 784 kez görüntülendi..
Sizin Yorumunuz



Yazilar için RSS aboneligi