Güvenlik Yönetimi(SQL)

CyBeR-Security

Yeni üye
22 Şub 2008
8
0
SQL Server, girisleri dogrulamak için WinNT’ye güvenir ya da kendi kendine girisleri dogrular.

WinNT’nin Dogruladigi Girisleri SQL Server Nasil Denetler

Asagidaki adimlar, WinNT’nin dogruladigi loginleri SQL Server’in nasil isledigini tanimlar.

v Bir kullanici SQL Server’a baglandigi zaman client SQL Server’a güven baglantisi açar.

Client güven baglantisi açtigi için SQL Server, WinNT’nin login account’u zaten onayladigini bilir.

v Eger SQL Server, SQL Server login accounts listesindeki kullanicinin WinNT user account veya group account’unu syslogins sistem tablosunda bulursa baglantiyi kabul eder.

SQL Server’in bir sifreyi yeniden onaylamaya ihtiyaci yok; çünkü WinNT zaten onu onaylamistir.

Not: SQL Server, WinNT’de yaratilan veya WinNT’den kaldirilan gruplari tanimaz. Grubu SQL Server’dan kaldirip tekrar eklemek gerekir; çünkü SQL Server grubu teshis etmek için WinNT güvenlik kimlik numarasini (Security identification number) kullanir.

v Bu durumda kullanicinin SQL Server login account’u, SQL Server login account olarak tanimlanmis ya WinNT kullanici ya da grup account’udur.

v Eger çoklu SQL Server bilgisayarlari güvenli domain gruplarinin içine katilirsa tek bir NT domain’e giris bütün SQL Server’lara erisim saglamak için yeterlidir.

Kendisinin Dogruladigi Girisleri SQL Server Nasil Denetler

SQL Server kendi dogruladigi girisleri onaylamak için asagidaki adimlari ele alir:

v Bir kullanici, SQL Server login account’u ve sifresiyle baglandigi zaman, SQL Server syslogins tablosunda yer alan girisi onaylar ve belirlenmis sifre önceki kaydedilmis sifreye uyar.

Eger SQL Server kullaniciya yer verecek login account’a sahip degilse, authentication basarisiz olur ve baglanti reddedilir.
Authentication Mode Seçme

Network ortamlari ve server’in güvenlik ihtiyaçlari, SQL Server’da kullanilacak authentication modu belirler. Authentication Mode’u ayarlamak için SQL Server Enterprise Manager kullanilabilir.

WinNT Authentication Mode’un Avantajlari

Tüm client’larin destekledigi güvenli baglantilar içindeki network ortaminda WinNT Authentication Modu kullan. WinNT authentication, SQL Server authenticationdan farkli avantajlar sunar.

Ø Geçersiz bir sifreden sonra, account lockout, minimum sifre uzunlugu, sifre sonu, denetleme (auditing) ve sifrelerin güvenlik onayi ve encryption’I gibi bir çok özellik saglar.

Ø Tek bir login account eklemeyle, SQL Server’a kullanici gruplari eklemeye olanak saglar.

Ø Baska bir login account ve sifre hatirlamadan SQL Server’a kolayca erisebilmeye olanak tanir.

Mixed Modun Avantajlari

Mixed Mode ve SQL Server authentication mekanizmasi, asagidaki avantajlari sunar.

Ø Mixed Mode, SQL Server’a baglanmak için Windows NT client’lari, Internet client’lari, mixed client gruplari olmayanlara olanak saglar.

Ø SQL Server authentication, WinNT üzerine baska güvenlik katmanlari eklemeye izin verir.

Bir Authentication Mode’u Tamamlamak için Gerekli Adimlar

Authentication’I tamamlamak, için sistem administration account’undan asagidaki isleri yapmak gerekir.

WinNT authentication modu için 1-5 arasindaki adimlari, Mixed Mode için ise 1-6 arasindaki adimlari icra etmek gerekir.

1. Güvenli baglantilarin (Multi-Protocol, Named Pipes veya TCP/IP socketleri) destekledigi protocollerin dogrulugunu kanitlamak

2. SQL Server’in login güvenlik modu’nu ayarlamak için, SQL Server Enterprise Manager’I kullanmak.

3. Güvenlik seçeneginin aktif olabilmesi için dur ve MSSQLServer servisi yeniden baslat.

4. Güvenli baglantilar üzerinde SQL Server’a erisimi olan kullanicilar ve WinNT gruplari yaratmak. WinNT gruplarini ve kullanicilarini yönetme iznine sahip degilsen, WinNT administrator bu görevi senin için yapar.

5. WinNT gruplarina ve kullanicilarina, SQL Server’a erisim izni vermek için SQL Server Enterprise Manager’I kullanmak.

6. Güvenli baglantilar üzerinden baglanamayan bütün kullanicilar için server’a erisim izni vermek. Bir login ID ve sifre yarat ve herbir kullanici için geçerli bir lisan belirle.

Login Account’lari Yaratma

WinNT kullanicilarindan veya gruplarindan login account’lar yaratilabilir veya yeni SQL Server login account’lar yaratilabilir. Ayrica default login account’lardan biri de kullanilabilir.

Login ID, SQL Server tarafindan bilinen bir kullanici ismidir. Login ID’ler ayrica loginler olarak söz edilirler.

SQL Server’a log olmak için, bir kullanici, geçerli login ID ve sifre saglamali.

Login account’lar master..syslogins sistem tablosunda tutulur. Bir login SQL Server’a eklendigi zaman bu geçerli bir veritabanini görevlendirir. Default veritabanini login account’a verme, veritabaninda bir kullanici account’u yaratmaz. Kullanici islemleri için default bir context ayarlar. Kullanici account, login için yaratilmadikça, (eger varsa) guest kullanici account’u kullanilarak veritabanina erisebilir.

SQL Server’a WinNT Login’I Ekleme

SQL Server Enterprise Manager veya sp_grantlogin sistem stored procedure’I, WinNT kullanicisinin veya grup account’unun SQL Server’a baglanmasina izin verir. Sadece güvenlik veya sistem administrator’I sp_grantlogin’I çalistirabilir.

Syntax Sp_grantlogin {‘login’}

Login parametresi, eklenecek olan WinNT kullanici veya grup ismidir. WinNT kullanici veya grubu, bir WinNt domain ismi ile sinirli olmali. Kullanici veya grup ismi 128 karakter ile sinirlidir.

SQL Server’a WinNT loginleri eklemek için, asagidaki adimlar göz önüne alinir.

1. SQL Server, bir WinNT grubu için tek bir login’e sahip olmasindan dolayi, WinNT grup üyeleri degistigi zaman SQL Server’a hiç bir degisiklik kabul edilmez. Bu durum orphaned object’leri engeller. (SQL Server’da bulunmayan kullanicilara ait olan object’ler)

2. Çikarilan WinNT grup veya kullanicisi, SQL Server’dan çikarilamaz. Bu orphaned object’lerin olusumunu engeller.

WinNT grup veya kullanicisi çikarilacagi zaman, network erisimini engelleyecek sekilde ilk olarak WinNT’den çikarilmasi gerekir. Daha sonra SQL Server’dan çikarilmali.

3. Tüm grup üyeleri SQL Server’a baglanirsa, bir WinNT grup account’u için bir login account eklenir.

4. Eger kullanici, izni onaylanmis bir grubun üyesi degilse, WinNT kullanici account’u için bir login account’u eklenir.

5. Kullanicilar, WinNT gruplarinin üyesi olarak, SQL Server’a log olsa bile, SQl Server hala kullanicilarin kimliklerini (tanimlarini) bilir. USER_NAME fonksiyonu, WinNT grubunun üyesi olan kullanicilarin kullanici domainini ve login ismini döndürür.

WinNT login account’lari yönetmek için asagidaki tablodaki sistem stored procedure’lar kullanilabilir.
Sistem Stored Procedure
Tanim

Sp_revokelogin
WinNT kullanicisi ve ya grubu için SQL Server’dan login girislerini kaldirir

Sp_denylogin
WinNT kullanicisi ve ya grubunun SQL Server’a baglanmasini önler.


Bir SQL Server Login’I Ekleme

SQL Server’da, veritabani kullanici ismi, kullanicinin veritabanina erismesi için, login ID olarak belirlenen bir isimdir. Bir kullanicinin islevi, kullanici isimlerine verilen izinlere baglidir.

WinNT ‘de, bir kullanici ismi, WinNT bilgisayari veya domain tarafindan bilinen bir isimdir. Bir kullanicinin, domain veya bilgisayara girebilmesi için, kullanici ismine ve sifreye sahip olmasi gerekir. Kullanicinin islevi, WinNT haklarina ve o kullanici için onaylanan izinlere ve üyesi oldugu WinNT grupalarina baglidir.

SQL Server login’I yaratmak için sp_addlogin sistem stored procedure’I veya SQL Server Enterprise Manager kullanilir. Bunu, sadece sistem veya güvenlik adminstrator’I çalistirabilir.

Syntax sp_addlogin {‘login’} [,’password’ [,’database’]]

sp_addlogin, master veritabaninin, syslogins tablosuna bir kayit ekler. sp_addlogin çalistirildiktan sonra, kullanici, bu account’la SQL Server’a log olabilir. Kullanicilar sifrelerini sp_password kullanarak degistirebiliyorlar.

SQL Server login’lerive sifreleri 128 karaktere kadar olabilir ve bu karakterler büyük harfler, semboller, rakamlar içerebilir. Fakat login’ler asagidakileri içermez:

• Backslash karakterini

• Varolan bir login account’u - sa gibi

• Bosuk karakterini

Sistem administratorlari, kullanicinin sifresini, eski sifre yerine NULL koyarak degistirebilir.

Default Login Account’lar

SQL Server iki default login account’a sahip. Bunlar sa, BULTIN\\Administrators:

Sa

SQL Server üzerindeki ve bütün veritabanlarindaki tüm haklara sahip olan özel bir logindir. (Sistem administrator). Sa, temel uygulamalardan bagimsiz olan yönetimsel ve islemsel fonksiyonlardan sorumludur.

SQL Server’I yönetme, SQL Server’I kurma, server’lari ve client’lari konfigüre etme, kullanilan diske alanini, bellegi ve baglantilari denetleme ve yönetme, aygitlari ve veritabanlarini yaratma, SQL Server kullanicilarini yetkilendirme ve izinlerini onaylama, veri transferi yapma, veritabanlarini yedekleme ve açma, kopyalamayi tamamlama, SQL Server performansini denetleme, sistem problemlerini teshis etme islemlerini yapabilir. Ayrica sa, SQL Server’da varolan veri hakkinda, uygulama tasarimcisina (application designer) tavsiye verir.

Sa, SQL Server sistem yöneticisinin kontrol etmesine izin vermedigi koruma sisteminin haricinde isletir. Sa, ayrica veritabani sahibi olarak düsünülür. Sa sifresi bilinirse, sisteme onun haklari ile girilebilir.

Builtin/Administrators

Tüm WinNT yöneticileri için, default login account olarak saglanir. SQL Server üzerindeki ve bütün veritabanlarindaki bütün haklara sahiptir.

Kullanicilara ve Rollere Login’ler Belirleme

SQl Server’a loginler ekledikten sonra, bunlar, kullanicilarin erismek istedikleri veritabanlarindaki, kullanici account’lara ve rollere map edilir.

Bir veritabanindaki sysusers sistem tablosu, herbir WinNT kullanicisi, WinNT grubu, SQL Server kullanicisi veya rolü için bir row içerir. Izinler, sysusers tablosundaki loginlere uygulanir ve sysprotects tablosunda tutulur.

Örnegin; WinNT payroll grubunun üyesinin northwind veritabanina erisimi onaylanir. Maria SQL Server’ baglandiktan sonra asagidakilere sahip olur:

• Geçerli bir baglantiya sahiptir; çünkü WinNT kullanici account’u, WinNT payroll grubunun içindedir.

• Northwind veritabanindaki hiçbir izne sahip degildir. Sadece payroll grubu izinlerine sahiptir.

Kullanici Account’lara Loginler Belirleme

Bir veritabanina erismek için, bir login ya belirlenmis kullanici account’unu ya da default kullanici account’unu kullanir.

Kullanici Account’u Ekleme

Bir kullanici account’u eklemek için sp_grantdbaccess sistem stored procedure’u veya SQL Server Enterprise Manager çalistirilmali. Sadece dbo ve database access administratorlar çalistirabilir.

Syntax sp_grantdbaccess {‘login’} [,’name_in_db’]

Login parametresi, veritabanindaki yeni account için login ismidir. Bu WinNT kullanicisi, WinNT grubu veya SQL Server kullanicisi olabilir.

Name_in_db parametresi veritabanindaki account için seçimlik bir isimdir. Asagidaki sistem stored procedure’ler veritabani erisimini yönetmek için kullanilir.

Sistem Stored Procedure
Tanim

Sp_revokedbaccess
Geçerli veritabanindan bir güvenlik account’unu kaldirir.

Sp_change_users_login
Geçerli veritabanindaki, SQL Server login ve SQL Server user arasindaki iliskiyi kaldirir.


Default Kullanici Account’lar

Default kullanici account’lar, ikiye ayrilir: dbo ve guest olarak.

DBO Account

Sa login ve sysadmin rol üyeleri, tüm veritabanlari içerisindeki özel kullanici account’una map edilir. Bu dbo olarak adlandirilir. Sistem administrator’in yarattigi nesneler otomatik olarak dbo’ya baglanir. Dbo kullanicisi kaldirilamaz. Database owner (DBO) veritabani yaraticisidir. Sadece bir DBO vardir. DBO veritabani içindeki bütün ayricaliklara sahiptir ve diger kullanicilara erisim ve yetenek saglar.

Kullanici, kendi veritabaninda, DBO olarak taninir. Baska veritabanlarinda DBO, kendi veritabani kullanici ismi ile bilinir.

DBO özelligi, farkli kullaniciya verilebilir. Diger login ID’ler DBO’ya alias olabilmelerine ragmen, sadece bir login ID, DBO olabilir.
Guest User Account

Guest User Account, kullanici account’u olmadan loginlerin veritabanina erismesine izin verir. Asagidaki her iki durumla da karsilasildiginda, loginler guest user kimligini üstlenir.

q Loginin, SQL Server’a erisimi var ama kendi user account’u yoluyla izni yok.

q Veritabani bir guest user account içerir.

Master ve tempdb veritabanlari hariç herhangi bir veritabanina guest user eklenebilir ve veritabanindan kaldirilabilir.

Eger guest user, baska user account’uysa, izinler guest user’a uygulanir.

Rollere Loginler Belirleme
Roller, kullanicilari izinlerin uygulandigi tek parçalar içinde birlestirmektir.

SQL server , çok kullanilan administrative fonksiyonlar için predefined server ve veritebeni rolleri saglar. Böylece seçilmis administrative izinler belirli kullanicilara kolayca verilebilir.

Organizasyonunuzdaki isçilerin yaptiklari isleri temsil etmek için kendi veritabani rollerinizi yaratabilirsiniz. Onlari rol üyesi olarak basitçe ekleyebilir ve kaldirabilirsiniz. Isçiler , Çalismaya basladiklarinda veya çalisma ortamini terk ettiklerinde , izinler tekrar tekrar onaylanmaz ve iptal edilmez. Pozisyon degisirse , rol için izinlerin degistirilmesi çok kolaydir. Böylece tüm rol üyeleri içinde otomatik olarak degisirler.

Fixed Server Roles
Fixed Server Roller , server seviyesindeki administrative ayricaliklari saglar. Bunlar , server seviyesindeki kullanici veritabanlarina bagli olmadan yönetilirler , ve master syslogins sistem tablosunda tutulurlar.
Role
Izin

Veritabani yaraticilari (dbcreator)
Veritabanlarini yaratir ve degistirir.

Disk Yöneticileri (diskadmin)
Disk dosyalarini yönetir.

Process Yöneticileri (processadmin)
SQL Server Processleri yönetir.

Güvenlik Yöneticileri (securityadmin)
Server loginleri yönetir ve audit eder (denetler).

Server Yöneticileri (serveradmin)
Server-wide ayarlarini yapar

Setup Yöneticileri (setupadmin)
Kopyayi kurar.

Sistem Yöneticileri (sysadmin)
Herhangi bir aktiviteyi yerine getirir.



Fixed Rol’e Bir Login Account Belirleme

Fixed Server üyesi olarak bir login account eklemek için SSEM veya sp_addsrurolemember kullanilir.

Syntax sp_addsrurolemember login , role

Server Rol’e bir login eklendigi zaman , login’in rol üyesi oldugunu göstermek için sysloins tablosundaki uygun row güncellenir , ve server rol’e bagli izinlere sahip olur.

Fixed Server Rol’e login account’lar belirlemek için asagidaki adimlari gözönüne alalim:

• Fixed server Roller eklenemez , degistirilemez veya kaldirilamaz.

• Herhangi bir fixed server rol üyesi , role baska login account’lar ekleyebilir.

• Sp_addsrvrolemember , kullanici tanimli bir islemle çalistirilamaz.

ÖRNEK :

Sysadmin server rolüne , Win NT Kullanicisi Corporote\\Elenos eklemek için:

EXEC sp_addsrvrolemember ‘Corporote\\Elenas’ , sysadmin

Ayrica , sp_dropsrvrolemember kullanilarak fixed server role’den bir üye kaldirilabilir.

Fixed Database Rolleri

Fixed database rol’leri veritabani seviyesindeki administrative ayricaliklarini saglar. Fixed database rolleri , herbir veritabanindaki sysusers sistem tablosu içinde tutulur.
Role
Izin

Public
Bir veritabanindaki kullanicilar için tüm geçerli olan izinleri saglar.

Db_owner
Herhangi bir veritabani rolü aktivitesini icra eder

Db_accessadmin
Veritabani kullanicilarini, gruplari, ve rolleri ekler veya kaldirir.

Db_ddladmin
Veritabani nesnelerini ekler, degistirir veya kaldirir.

Db_securityadmin
Statement ve nesne izinlerini belirler.

Db_backupoperator
Veritabanini yedekler ve açar.

Db_datareader
Herhangi bir tablodan veri okur.

Db_datawriter
Veri ekler, degistirir veya bütün tablolardan veri siler.

Db_denydatareader
Herhangi bir tablodan veri okumaz.

Db_denydatawriter
Herhangi bir tablodan veri degistirmez.



Public Rol

Public rol , veritabani kullanicilarina özel bir veritabani rolüdür.

Public Rol

• Veritabanindaki kullanicilar için tüm default izinleri denetler.

• Ona görev verecek kullanicilara , gruplara veya rollere sahip degildir. Çünkü bunlar zaten ona baglidir.

• Master , msdb , tempdb , model ve tüm kullanici veritabanlarinin içinde bulunur.

• Kaldirilamaz

Uygun izinler olmadan , bir kullanici SQL server’a baglanabilir ama sadece sinirlandirilmis task’lari çalistirabilir. Izinler olmadan , bir kullanici , public role verilmis izinlere sahip olabilir ve asagidakileri yapabilir:

• PRINT ifadesi gibi , izine sahip olmayan statement’leri çalistirma

• Sistem tablosu bilgilerini inceleyebilir ve master veritabanindan ve kullanici veritabanindan bilgi almak için belirli sistem stored procedure ‘leri çalistirabilir.

• Guest access ile herhangi bir veritabanina erisebilir.

Fixed Database Rol’e Güvenlik Account ‘lari Belirleme
Fixed veritabani rolünün üyesine bir güvenlik account ‘u eklemek için SSEM veya sp_addrolemember kullanilir. Sadece db_owner rolünün üyeleri , sp_addrolemember’I çalistirabilir. Role owner’lar kendi rollerine üye eklemek için sp_addrolemember’I çalistirir.

Syntax sp_addrolemember role , security_account
Fixed role güvenlik acc**tlari belirlenirken asagidaki adimlar göz önüne alinir:

• Fixed database roller , eklenemez , degistirilemez veya kaldirilamaz.

• Herhangi bir fixed database rolünün üyesi , olarak baska login accountlar ekleyebilir.

Ayrica bir rol’den, güvenlik account’unu kaldirmak için sp_droprolemember kullanilir.

Kullanici Tanimli Veritabani Rolleri

Kullanici Tanimli veritabani rolleri yaratma, ortak izinlere sahip kullanici gruplarini yaratmaya olanak saglar. Bir veritabanina kullanici tanimli rol ekleme asagidaki nedenlere baglidir:

q Eger WinNT kullanici account’larini yönetme iznine sahip degilsek

q Insanlarin SQL Server’daki belirlenmis aktiviteleri çalistirmaya ihtiyaçlari oldugu zaman ve uygun olmayan WinNT grubu varsa, kullanici tanimli rol eklenir.

Örnegin bir sirket farkli departmanlardan çalisanlari içeren yeni bir komite olusturabilir. Bu çalisanlar veritabanindaki özel bir proje tablosuna erisime ihtiyaç duyabilirler. Bunun için kullanici tanimli rol tanimlanabilir ve sonra role özel WinNT kullanici account’u eklenebilir. Izinler uygulamaya kondugu zaman roldeki özel kullanici accountlari tablo erisimine ulasir.

Kullanici Tanimli Veritabani Rolü Yaratma

SQL Server Enterprise Manager veya sp_addrole sistem stored procedure ile yeni bir veritabani rolü yaratilabilir. Herbir kullanici tanimli rol için, geçerli veritabaninin sysusers tablosuna bir giris eklenir. Sadece security admin ve dbo üyeleri sp_addrole sistem stored procedure’i çalistirabilir.

Syntax sp_addrole role, owner

Veri tabani rolü yaratmak için asagidaki adimlari inceleyelim:

# Sp_addrole sistem stored procedure, geçerli veritabanina yeni bir SQL Server rolü ekler

# Role izinler uygulandigi zaman, sanki izin üyenin kendi account’una uygulanmis gibi, herbir rol üyesi izinleri elde eder.

Örnek: dbo kullanicisi tarafindan, Managers isimli yeni bir rol eklemek için asagidaki ifade çalistirilmali.

EXEC sp_addrole Managers, dbo

Kullanici Tanimli Veritabani Rolüne Bir Güvenlik Account’u Belirleme

Bir rol eklendikten sonra, SQL Server Enterprise Manager veya sp_addrolemember sistem stored procedure kullanilarak, rol üyesi olarak kullanicilar ve roller eklenbilir. Sadece db_owner, fixed database rol üyeleri, fixed database rollerine üye eklemek için sp_addrolemember sistem stored procedure’I çalistirabilir.

Syntax sp_addrolemember role, security_account

Örnek: Managers rolüne, Alicia kullanicisini eklemek için, asagidaki ifade çalistirilir:

EXEC sp_addrolemember Managers, Alicia

Fixed database rol’e güvenlik account’lari belirlendigi zaman asagidaki adimlar göz önüne alinir.

• sp_addrolemember ile role bir güvenlik account’u eklendigi zaman, role uygulanan izinler yeni üyeye de uygulanir.

• Ayni security_account farkli rol üyelerine verilemez.

• Nesting roller sistem performansini düsürür.

Veritabani rollerinin yönetimi için asagidaki ek stored procedure’lar kullanilabilir.

Sistem Stored Proocedure
Tanim

Sp_droprole
Geçerli veritabanindan SQL Server rolünü kaldirir.

Sp_droprolemember
SQL Server rolünden bir security account kaldirilir.


Kullanicilara ve Rollere Izinler Belirlemek

Kullanici account’lara ve rollere loginler belirlendikten sonra, veritabani güvenligini yönetmek için izinler belirlenmeli.

Izinler, kullanicilarin hangi tip veritabani nesnelerini kullanabilecegini ve bunlari ne sekilde kullanabilecegini belirlerler. Kullanicilara veya gruplara verilen izinler çok önemlidir.
Izin Tipleri

SQL Server veritabani güvenligini yürütmek için izinleri kullanir. SQL Server, Transact-SQL ifadelerinin, view’larin, ve stored procedure’lerin kullanilmasi için yetki verir. Izinler herbir kullanicinin durumuna bagli olarak (sa, dbo, database object owner olarak).

SQL Server’da 3 tip izin var. statement, object ve predefined.
Statement
Object
Predefined

Create Database
Select
Fixed Role

Create Table
Insert Table
Object Owner

Create View
Update View


Create Procedure
Delete


Create Index
Select


Create Rule
Update Column


Create Default
References



Exec Stored Procedure



Statement Izinleri

Belirli Transact-SQL ifadeleri ile ilgili ayricaliklari kullanicilara verir. Veritabani veya item yaratma ile ilgili aktiviteler statement izinler olarak adlandirilir. Sysadmin, dbo, securityadmin rolleri statement izinleri verebilir. Statement izinleri, belirli Transaction-SQL ifadelerini islemek için ayricalik saglar. Statement izinleri, nesneye özgü degildir. Bunlar sysadmin, db_owner, veya db_securityadmin tarafindan onaylanirlar.

Statement izinleri, su ifadeleri uygular: CREATE DATABASE, CREATE DEFAULT, CREATE PROCEDURE, CREATE RULE, CREATE TABLE, CREATE VIEW, DUMP DATABASE, ve DUMP TRANSACTION. Ayrica komut izinleri olarak da adlandirilirlar.

Object Izinleri

Verilerle çalisma veya procedure’leri çalistirma izinleri verir. Belirli veritabani nesneleri üzerindeki belirli ifadelerin kullanimini denetler. Bunlar DBO tarafindan onaylanir ve iptal edilirler.

Tablo ve View Izinleri

SELECT, INSERT, UPDATE, DELETE ifadelerini kullanmaya izin verir.

Column Izinleri

SELECT, UPDATE ve REFERENCES izinleri belirli kolonlara uygulanabilir. Bir kullanici FOREIGN KEY constraint ile bir tabloya bir satir ekledigi zaman veya FOREIGN KEY constraint ile bir sütundaki veri degistirildigi zaman, SQL Server FOREIGN KEY constraint’teki referans edilmis veri ile sütun içindeki veriyi onaylar. Eger kullanicinin referans edilmis sütun veya tabloda SELECT izinleri yoksa kolon için REFERENCES izinleri kullaniciya verilmis olmali.

Stored Procedure Izinleri

EXECUTE izni, stored procedure için sadece nesne iznidir.

Predefined Izinler

Sadece fixed rol üyeleri veya db_owner’larbelirli aktiviteleri yerine getirebilirler. Bu aktiviteleri yerine getiren izinler, predefined izinler olarak adlandirilirlar.

Object Owner Izinleri

Kendi yarattiklari nesnelerin, aktivitelerini yerine getirmeye izinli olurlar. Table owner olan bir kullanici, tablo ile ilgili bütün aktiviteleri yerine getirebilir. Bu tablo ile çalisan kullanicilara, ekleme, silme, degistirme, tablo tanimlama izinleri verir.

Fixed Role Izinleri

Fixed roller yönetimsel izinlere sahiptirler. Örnegin; sysadmin rolünün bir üyesi olarak eklenen kullanici, SQL Server kurulumundaki herhangi bir seyi yapmak veya okumak için bütün izinlere sahiptir. Sysadmin rolü degistirilemez ve baska bir user account’a verilemez.

Granting, Denying, Revoking (Onaylama, Engelleme, Iptal Etme) Izinleri

Rol veya kullanici için izinler 3 durumludur. Bunlar onaylama, engelleme, iptal etmedir. Izinler kullaniciya onaylanmazsa veya engellenmezse, sanki iptal edilmis gibi olur. Izinler sysprotects sistem tablosunda tutulurlar.
Statement
Sysprotects tablosunda giris durumu
Tanim

GRANT (Onaylama)
Pozitif
Hareketi yerine getirebilir.

DENY (Engelleme)
Negatif
Hareketi yerine getiremez ve rol üyesi tarafindan önemsenmez.

REVOKE (Iptal etme)
Hiçbiri
Hareketi yerine getiremez ama rol üyesi tarafindan önemsenir.


Tüm onaylanmis izinler kümülatiftir. Hareketler onaylandigi zaman kullanicilar tarafindan icra edilebilirler.

DENY ifadesi kullanicilarin hareketleri icra etmesini önlerler. Izinlerin kullanicilara dogrudan onaylanip onaylanmadigini önemser.

Asagidakiler gerçeklesirse, kullanicilar bir hareketi yapmaya izinli olurlar:

q Kullanicilar izinleri onaylarlarsa ya da bagli olduklari rol izinleri onaylarsa

q Izin kullaniciya yada kullanicinin bagli oldugu rollerden birine engellenmezse

Erisime Müsaade Ederek Izinleri Onaylama

GRANT SELECT

ON products

TO order



GRANT INSERT, UPDATE

ON products

TO Eva, Ivan, David

Izinler, veri ile çalismaya veya aktiviteleri çalistirmaya izin vermek için security account’lara uygulanir.

Izinler onaylanirken asagidaki adimlar göz önüne alinmali.

Ø Sadece, geçerli veritabaninda izinler onaylanabilir.

Ø Sysadmin, db_owner ve db_securityadmin rollerine ve object owner’lara izinleri onaylama hakki verilmistir.

Izinler SQL Server Enterprise Manager veya GRANT ifadesi ile onaylanir.

Asagida bir örnek görülmektedir.

USE northwind

GO



GRANT SELECT

ON products

TO order

GO



GRANT INSERT, UPDATE, DELETE

ON products

TO Eva, Ivan, David

GO

Yukaridaki örnekte; Order isimli role SELECT izni verilmis. Bundan sonra ek izinler birkaç kullaniciya verilmis (Eva, Ivan, David). (Zaten insert, update izinlerine sahipler. Select iznine sahip degiller. Ayrica select iznine de order rolü tarafindan sahip olurlar.) Products tablosu üzerindeki bütün izinlere sahipler; çünkü onlar ayrica order rolünün üyesiler.

Erisimi Engelleyerek Izinleri Engelleme

DENY SELECT, INSERT, UPDATE

ON products

TO Eva, Ivan, David

Belirli kullanici veya rollerin izinleri sinirlanmak istenebilir. Bir security account’a izinleri engelleme:

v Kullanici veya role önceden onaylanmis izinleri kaldirir

v Baska rolden miras alinmis (inherit) izinlerin aktifligini bozar

v Gelecekte Kullanici veya rolün herhangi bir rolden izinleri miras almayacagindan emin olur

Izinler engellendigi zaman asagidaki adimlar göz önüne alinmali:

• Sadece geçerli veritabanindaki iznler engellenebilir.

• Sysadmin, db_owner ve db_securityadmin rol üyelerine ve object owner’lara izinleri engelleme hakki verilmistir.

Izinleri engellemek için, SQL Server Enterprise Manager veya DENY ifadesi kullanilabilir.

USE northwind

GO



GRANT SELECT

ON products

TO order

GO



DENY SELECT, INSERT, UPDATE

ON products

TO Eva, Ivan, David

Yukaridaki örnekte; Order isimli role SELECT izni verilmis. Bundan sonra rol üyesi birkaç kullanicinin (Eva, Ivan, David) products tablosuna erisimleri engellenmis.

Onaylanmis ve Engellenmis Izinleri Iptal Etme

REVOKE SELECT, INSERT, UPDATE

ON products

FROM Eva, Ivan

Iptal etme ile onaylanmis veya engellenmis izinler etkisiz hale getirilebilir. Iptal Etme, iki hareket içinde benzerdir. Farklilik bir izni iptal etme, onaylanmis izinleri kaldirirken, kullanicinin veya rolün, izinleri miras almasina (inherit) engel olamaz. Ayrica DENY ifadesi iptal edilerek, önceki engellenmis izinler de kaldirilabilir. Izinler iptal edilirken asagidaki adimlar göz öüne alinmali:

• Sadece geçerli veritabanindaki iznler iptal edilebilir.

• Bir izni iptal etme, onaylanmis ve engellenmis izinler tarafindan yaratilan sysprotects sistem tablosuna girisleri kaldirir.

• Sysadmin, db_owner ve db_securityadmin rol üyelerine ve object owner’lara izinleri engelleme hakki verilmistir.

Önceki onaylanmis ve engellenmis izinleri iptal etmek için, SQL Server Enterprise Manager veya REVOKE ifadesi kullanilabilir.

USE northwind

REVOKE SELECT, INSERT, UPDATE

ON products

FROM Eva, Ivan

Yukaridaki örnek çoklu kullanicilardan çoklu statement (Select, insert, update gibi) izinleri iptal eder.

Güvenligi Planlama

Güvenlik planlanirken 5 ana madde göz önüne alinmali.

1. Geçerli Login Kullanicilari Tanimlamak

Sa veya BUILTIN\\Administrators Login’inin kullanilip kullanilmayacagi veya nasil kullanilacagi belirlenmeli.

Sa Login

Sa bir built- in administrator login olmasina ragmen rutin olarak kullanilmaz. Sistem yöneticisi sysadmin fixed server rol üyesi olmali ve kendi loginleriyle log olmali.

Not: SQL Server kuruldugu zaman, sa loginin bir sifresi bulunmaz. Sa loginle, SQL Server’a, yetkisiz kisilerin erisimini engellemek için sifrenin hemen degistirilmesi önerilir.

BUILTIN\\Administrators Login

BUILTIN\\Administrators WinNT yöneticileri için sysadmin rolünün bir üyesidir.

Kendi organizasyonunda SQL Server’a tam erisim saglamak için WinNT yöneticilerinin tamamini istemezsen, BUILTIN\\Administrators logini kaldirabilirsin veya sysadmin rolünden kaldirabilirsin. Istenirse login eski yerine konabilir ve izinleri belirlenebilir.

2. Guest User Account Fonksiyonlarini Belirlemek

Guest User Account veritabanina kullanici account’u olmadan erisen bir logine izin verir. Veritabaninin bir Guest User Account’unun olup olmayacagina karar vermeli. Eger olacaksa veritabanlarinda hangi izinlere sahip olacagi belirlenmeli.

3. Public Rol Izinlerini Belirlemek

Public rol, özel bir veritabani rolüdür. Her bir veritabaninda kullanicinin sahip oldugu izinleri kontrol eder. Herbir veritabaninda public rol’ün sahip olacagi izinlere karar verilmeli. Basta public rolün izinleri yoktur.

4. Loginleri Kullanici Account’lara ve Rollere Map Etmek

Veritabanina login’ler belirlenmeden önce, bir kullanici account’un veya bir rolün kullanilip kullanilmayacagini belirlemek gerekir. Genelde; asagidakiler önerilir.

q Eger WinNT grup üyelerilerinden sadece biri görevleri icra edebilirse, grup için kullanici account’u yaratabilir ve bunlar için izinler kullanabilirler.

q Eger birden fazla login görevleri icra edebilirse, bir rol yaratabilir ve rol’e login belirleyebilirler.

q Eger bir login ortak yönetimsel görevleri icra ederse, veritabani rolüne veya fixed server’a login map edilir.

5. DBO ile Nesneler Yaratmak

Hangi kullanicilarin veya rollerin nesneler yaratabilecegini belirlemek çok önemlidir. Sadece sysadmin, db_owner ve db_ddladmin fixed veritabani rolleri, veritabani nesneleri yaratabilirler. Bütün nesneler object owner olarak, dbo kullanicisiyla tanimlanir. Dbo ile nesne tanimlama, kullaniclarin owner ismi içermeyen nesnelerden söz etmesine olanak saglar. Aksi taktirde nesne, object owner olarak kullanici ismiyle yaratilir. Sysadmin rolden yaratilan herhangi bir rol dbo’ya sahiptir.

Nesne Owner’lari Degistirme

Veritabani nesneleri, tablolar, indexler, view’lar, default’lar, trigger’lar, rule’lar ve procedure’lerdir. Veritabani nesnesi yaratan kullanici, database object owner olarak adlandirilir ve otomatik olarak nesneler üzerindeki bütün haklara sahiptir. Nesneyi kullanmalari için diger kullanicilara izin verebilirler. Database object sahipligi devredilemez.

Eger nesneler dbo ile yaratilmamissa, sp_changeobjectowner sistem procedure ile object owner’lar degistirilebilir.

Syntax sp_changeobjectowner object, owner

Dbo owner’lari degistirmek için, asagidaki adimlar göz önüne alinabilir.

¨ Sadece db_owner ve db_ddladmin fixed veritabani rolleri ve securityadmin server rol üyeleri nesne owner’lari degistirebilirler.

¨ Bir veritabaninin owner’ini degistirme, yeni ownership bilgisiyle güncellenen nesneyi referans eden scriptleri ve batch file’lari gerektirir. SQL Server bu güncellemeyi otomatik olarak icra edemez.

Application Güvenligini Yönetme

Izinler ve Login authentication kullanilarak, veritabanina erisim güvence altina alinabilir. Method olarak stored procedure’lar, view’lar ve application roller kullanilabilir.

View’lar ve Stored Procedure’larla Güvenligi Yönetme

View’lar ve stored Procedure’lar bir uygulama için yaratilmis olan SQL Server nesneleriyle birlikte güvenligi kurmaya izin verir.

View’lar ve stored Procedure’lar, ilgili olduklari nesneler üzerindeki izinler yerine sadece View’lar ve stored Procedure’lar üzerindeki izinleri yönetme imkan saglar. Ayrica kullanicilari, tablo degisikliklerine karsi korur.

Güvenligi basitlestirmek için view’lari ve stored procedure’lari kullanmak:

ü Underlying tablolar üzerindeki izinler olmadan, bir view üzerindeki izinleri onaylar

Örnegin; bir tablodaki dogum tarihi gizli olsun. Kullanicilarin erisimleri engellensin. Ayrica kullanicilar tablodaki diger kolonlara erisebilmeliler. Dogum tarihi hariç diger kolonlari içeren bir view tanimlanir. View’a select izni vererek kullanicilarin gizli olmayan kolonlara erisimleri saglanir.

ü Degistirilmis tabloya erisim onayi vermeden stored procedure’I çalistirma izinlerini onaylar.

Örnegin eski veri, arsiv tablosuna kopyalanir ve daha sonra primary tablosundan silinir. Kullanicilara, dogrudan primary tablosundan bir row silme veya bunlari primary tablosundan silmeden,arsiv tablosuna bir row ekleme izni verilmez. Bir stored procedure yaratilarak her iki aktivite de birlikte çalistirilabilir. Daha sonra kullanicilara stored procedure’lari çalistirma izni verilir.

Asagidaki örnek bir view yaratir. Employee tablosundan employee bilgilerini yeniden alir ama birthdate ve homephone gibi verileri hesaba katmaz.

CREATE VIEW employee_view AS

SELECT FirstName, LastName, Title, Extension

FROM employees

Application Rollerini Kullanarak Client Application Güvenligini Yönetme

Uygulama rolleri, özel bir uygulama için güvenligi yürütmeye izin verir. Bunlar dolayli yollardan veriye erisim için kullanicilari sinirlar.

Örnegin; order entry clerklerin, sadece Order entry uygulamasini kullanirken products, orders, customer tablolarini güncelleyebilmesi istenebilir. Microsoft Excel gibi baska bir üründeki tablolara erisen clerkler istenmeyebilir. Bu durumda; order entry uygulamasi için bir uygulama rolü yaratilabilir.

Uygulama rolleri diger rollerden farklidir. Asagida diger rollerle, uygulama rolleri arasindaki farkliliklar

listelenmistir.

• Application rollerin, kullanici uygulamayi çalistirdigi zaman kullanicilar için aktiflestirilen, üyeleri yoktur. Bu, uygulama kullanicilarina özel haklar verir.

• Uygulama rolleri, aktif olabilmek için bir sifre isterler. Application rol sifresinin güvenligini korumak için basit encrypt anahtarlar kullanilabilir. Ayrica extended stored procedure kullanilarak sifre server’a yerlestirilebilir.

• Aktif uygulama rolü, kullanicinin veritabanindaki diger izinlerini umursamaz. SQL Server kullanici account veya rollerin sahip oldugu izinleri göz önüne almaz.

Uygulama Rolleri Yaratma

EXEC sp_addapprole SalesApp, hg_7532LR

GRANT SELECT

ON products

TO SalesApp

Application roller yaratilabilir ve bunlara izinler belirlenebilir.

Uygulama Rolleri Yaratma

Yeni bir uygulama rolü yaratmak için, SQL Server Enterprise Manager veya sp_addapprole stored procedure kullanilir. Sadece db_owner, db_securityadmin, ve sysadmin rollerinin üyeleri sp_addapprole stored procedure’i çalistirabilirler.

Syntax sp_addapprole role, password

Yeni uygulama rolleri yaratmak için asagidaki adimlara dikkat etmek gerekir.

§ sp_addapprole sistem stored procedure’ü yeni rol için, bir güvenlik account’u ekler. Bu durum, sysusers tablosuna bir kayit eklemeyle yapilir.

§ Password degeri bir sifredir. Rolü aktif yapmak için istenir ve encrypt edilmis forma dönüstürülür.

Asagidaki örnek SalesApp isimli ve sifresi hg_7532LR olan yeni bir uygulama rolü ekler.

EXEC sp_addapprole SalesApp, hg_7532LR



Application Rol Izinlerini Yönetme

SQL Server Enterprise Manager veya GRANT, DENY, ve REVOKE ifadeleri ile uygulama rol izinleri yönetilir.

Asagidaki örnek product tablosundan seçmek için SalesApp uygulama rolüne izinler verir.

GRANT SELECT

ON products

TO SalesApp

Uygulama Rollerini Aktif Hale Getirmek

Bir client, SQL Server’a herhangi bir login account’u ile baglandiktan sonra, client, application rolüyle birlesmis izinleri aktif hale getirmek için, sp_setapprole sistem stored procedure’ini çalistirir. sp_setapprole sadece Transact-SQL ifadeleriyle çalistirilabilir.

Syntax sp_setapprole {‘name’, ‘password ’}

Uygulama Rollerini aktif hale getirmek için asagidaki adimlara dikkat edilir.

v Geçerli uygulama, sifre saglamali.

v Eger kullanicilar veritabanini degistirirlerse, izinlere dayanan aktiviteleri icra etme hakkina sahip olurlar.

v Bir uygulama rolü sp_setapprole ile aktiflestirildikten sonra, kullanicilar SQL Server’dan kopana kadar rol aktif haldedir.

Asagidaki örnek; adi SalesAppRole ile sifresi AsDeFXX olan bir uygulama rolünü aktif hale getirir;

EXEC sp_setapprole ‘SalesAppRole’, ‘AsDeFXX’Sistem Stored Procedure
Tanim

Sp_dropapprole
Geçerli veritabanindan uygulama rolünü kaldirir.

Sp_approlepassword
Bir application rolünün password’ünü degistirir.


Tavsiye Edilen Uygulamalar

Güvenlik tamamlanirken asagidaki tavsiyeler dikkate alinmali:

i. Network ortami sadece güvenli hale getirilmis client baglantilarini desteklerse, WinNT authentication modu kullanilir. Mixed Modu sadece güvenli olmayan client’lara baglanmak için kullanilir.

ii. Sa login yerine sistem yöneticileri (sysadmin) rolünü kullan. Sa login, WinNT authentication kullanilsa bile SQL Server’a local olarak log olmak için kullanilir. Bu, sysadmin role’den yanlislikla tüm kullanicilar kaldirilirsa, yararli olabilir.

iii. WinNT kullanicilari veya gruplari kaldirilirken, ilk olarak network erisimi engellenerek WinNT’den kaldirilir. Daha sonra SQL Server’dan kaldirilir.

iv. Bütün nesneler, kolayca erisilebilir olmalari için dbo kullanicilariyla yaratilirlar.

Güvenligi saglamak için Stored procedure’leri ve view’lari kullanma, column-level güvenliginden çok daha hizli olabilir
 
Üst

Turkhackteam.org internet sitesi 5651 sayılı kanun’un 2. maddesinin 1. fıkrasının m) bendi ile aynı kanunun 5. maddesi kapsamında "Yer Sağlayıcı" konumundadır. İçerikler ön onay olmaksızın tamamen kullanıcılar tarafından oluşturulmaktadır. Turkhackteam.org; Yer sağlayıcı olarak, kullanıcılar tarafından oluşturulan içeriği ya da hukuka aykırı paylaşımı kontrol etmekle ya da araştırmakla yükümlü değildir. Türkhackteam saldırı timleri Türk sitelerine hiçbir zararlı faaliyette bulunmaz. Türkhackteam üyelerinin yaptığı bireysel hack faaliyetlerinden Türkhackteam sorumlu değildir. Sitelerinize Türkhackteam ismi kullanılarak hack faaliyetinde bulunulursa, site-sunucu erişim loglarından bu faaliyeti gerçekleştiren ip adresini tespit edip diğer kanıtlarla birlikte savcılığa suç duyurusunda bulununuz.