Giriş Hesapları

Eyl 08, 2013

Giriş (Login) Hesaplarının Yaratılması:

Giriş hesapları Master..syslogins tablosunda tutulur ve de yeni bir kullanıcı açıldığında otomatik olarak master..syslogins tablosuna yeni bir kayıt eklenir. SQL sunucusuna bağlanma sırasında giriş hesabı olmayan kişiler eğer varsa misafir giriş hesabını kullanarak veritabanına ulaşabilirler.

Sistem yöneticileri SQL Server'a  bir NT giriş hesabı eklemek için ya Enterprise Manager'ı kullanırlar ya da sp_grantlogin saklı yordamını kullanırlar.
sp_grantlogin şu şekilde kullanılır:

sp_grantlogin  'login'
Buradaki giriş; eklenilecek olan NT kullanıcısı ya da grubun ismidir. Bu saklı yordamın yanısıra sp_revokelogin ve sp_denylogin saklı yordamları da kullanılır.

sp_revokelogin; NT kulanıcı ya da grubunun SQL Sunucuya bağlanmasını sağlayan hesabı kaldırır. 

sp_denylogin; NT kullanıcısının ya da grubunun SQL Sunucuya bağlanmasını engeller.

Sistem yöneticileri SQL sunucusu giriş hesabını yaratmak için ya Enterprise Manager'ı kullanırlar ya da sp_addlogin saklı yordamını kullanırlar:
sp_addlogin 'login' , 'password' , 'database'

Böylece Master veritabanındaki syslogins tablosuna yeni bir kayıt eklenir. Böylece kişi, o hesabını kullanarak SQL sunucuya bağlanabilir.

Kullanıcılar sp_password saklı yordamlarını kullanarak şifrelerini değiştirebilirler:

sp_password 'old password' , 'new password' , 'login' 

şeklinde kullanılır.

Veritabanı Kullanıcı Hesapları(Account) ve Roller:
Kullanıcılar doğrulandığında ve SQL Sunucusuna giriş yapmaya izinli olduktan sonra veritabanında hesapları olmalıdır. Kullanıcı hesaplar ve roller veritabanı içinde bir kullanıcıyı tanır ve nesneleri kontrol eder ve cümleleri çalıştırmaya izinli olur.

Veritabanı Kullanıcı Hesapları :
Kullanıcı hesapları, güvenlik izinlerini uygulamak için kullanılır. WinNT kullanıcıları veya grupları veya SQL Server giriş hesaplarılarıdır. Kullanıcı hesapları bir veritabanına özgüdür. 

Kullanıcılara Giriş Hesabının Verilmesi:
Bir kullanıcı hesabını veritabanına eklemek için ya "Enterprise Manager" kulanılır ya da sp_grantdbaccess saklı yordamı kullanılır.
sp_grantdbaccesss 'login' , 'name_in_db ' 
şeklinde yazılır.
Bunun dışında sp_revokedbaccess saklı yordamı o anki veritabanında kullanılmakta olan alanın çıkarılmasını sağlar.
"sa giriş (sistem admini)" ve "sistem yöneticileri (sysadmin)" rolüne dahil kişiler her veritabanının içinde bulunan dbo adı verilen özel bir alana sahiptir. Sistem yöneticilerinin veritabanındaki nesneler üzerinde yaptığı değişiklikler otomotik olarak dbo'ya ait görünür.Kullanıcı alanları bulunmayan kişiler de, misafir kullanıcı hesabını kullanarak veritabanına erişebilirler.

Veritabanı Rolleri :

Kullanıcıları, izinlerin uygulanabildiği tek parçalar içinde bir araya toplamayı sağlar. Sunucu seviyesi ve veritabanı seviyesinin her ikisinde de roller mevcuttur. Ayrıca kendi kullanıcı tanımlı veritabanı rolleri de kullanıcı tarafından tanımlanabilir. SQL Server, ortak yönetim fonksiyonları için öncelikli tanımlı server ve veritabanı rolleri sağlar. Böylece özel kullanıcılara yönetim izinleri kolayca verilebilir. 

  1. Sabit Veritabanı Rolleri:

    Veritabanı seviyesindeki rolleri belirtir. Her veritabanının sysusers tablosunda bu hakları görmek mümkündür.
Rol İzin
public Otomotik olarak belirlenen haklara sahiptir.
db_owner Herhangi bir veritabanı işlemi yapabilir.
db_accessadmin Veritabanı kullanıcı ya da rollerini ekler, çıkarır.
db_ddladmin Veritabanı objelerini ekler, çıkarır, değiştirir.
db_securityadmin Kişilere verilen izinleri belirler.
db_backupoperator Veritabanının yedeğini alır ve bilgi depolar.
db_datareader Tablodan bilgi okur.
db_datawriter Tablolara bilgi ekler, çıkarır, değiştirir.
db_denydatawriter Tablolardan bilgi okuyamaz.
db_denydatawriter Tablolardaki bilgiyi değiştiremez, oynama yapamaz.

Bir kişinin belli bir role dahil olması için sp_addrolemember saklı yordamı kullanılır.
sp_addrolemember role , security_account

Örnek: Exec sp_addrolemember db_securityadmin ,'dilek'
dendiğinde kullanıcının kendi veritabanında dilek'in db_securityadmin rolüne dahil olması sağlanır.

Kişinin belirlenen rolden çıkarılması için de sp_droprolemember kullanılır:
sp_droprolemember role, security_account

Örnek: Exec sp_droprolemember db_securityadmin , 'dilek '

    2.   Kullanıcının Tanımladığı Veritabanı Rolleri:

Veritabanı olan kişi belli bir grup kişinin veritabanında aynı haklara sahip olmasını istiyorsa o kişileri dahil edebileceği bir rol oluşturabilir.

Örnek:    Exec sp_addrole role4 , uysalme
denirse, kullanıcının kendi veritabanında role4 adında bir rol oluşturulmuş olur. sp_addrolemember yapısı kullanılarak role kişiler dahil edilebilir:
 
Örnek:    Exec sp_addrolemember role4 , dilek
sp_addrolemember yapısını kullanarak dilek'i role4'e eklenmiş olur.

Örnek:    Exec sp_droprolemember role4, dilek
                  Exec sp_droprole role4
sp_droprolemember kullanarak o roldeki tüm kişileri sildikten sonra ancak rolü kaldırmak mümkündür.
Sonuç olarak ekrana şu gelir :
           'dilek' dropped from role 'role4'.
            Role dropped. 

    3.   Uygulama Rolleri:

Bilinen rollerden farklı olan uygulama rollerinin yaratılmalarının sebebi kullanıcıların bilgiye ulaşmalarında ayrı bir şifre ile giriş yapmalarını sağlamak ve böylece bir güvenlik sistemi oluşturabilmektir. Rollerde kişiler vardır; ancak uygulama rollerinin kullanıcıları yoktur, yani şifreyi bilen bilgiye erişir. Uygulama rolünün aktive olması için kullanıcı, gerekli olan şifreyi girerek uygulamayı başlatmalıdır. Bu uygulama esnasında kişi o veritabanında tüm haklarını ve bir role dahilse o role tanınmış olan haklarını kaybeder; sadece genel haklarına ve o uygulama rolünün kendisine tanımış olduğu haklara sahip olur.
Ya "Enterprise Manager"ı kullanarak ya da "Transact-SQL" dilini kullanarak yeni bir uygulama rolü oluşturulabilir, oluşan yeni kayıt o veritabanının sysusers tablosuna otomotik olarak  geçer. Yeni bir uygulama rolü oluşturmak için şu  yapı kullanılır:

Exec sp_addapprole 'role' , 'password'    
  
Örnek:  Exec sp_addapprole 'bim' , '6ghsMU74'
Böylece adı bim olan bir uygulama rolü yaratılmış oldu; bu uygulamayı aktive etmek için gerekli olan şifre ise 6ghsMU74 tür.
TABLE1 üzerinde bim uygulama rolüne bazı haklar tanınsın:
          GRANT SELECT,INSERT,UPDATE,DELETE
          ON TABLE1
          TO bim
Uygulama rolünü aktive etmek için ise şu yapı kullanılır:
Exec sp_setapprole 'role' , N'password'

Örnek:  EXEC sp_setapprole 'bim', N'6ghsMU74'
yazarsak bim rolünü aktive etmiş oluruz ve ekranda şu yazı görülür:
           The application role 'bim' is now active.
Uygulama rolünün kaldırılması için de şu yapı kullanılır:
Exec sp_dropapprole 'role'

Örnek:  EXEC sp_dropapprole 'bim'
yazılırsa bim rolü veritabanından kaldırılmış olur.

    4.    Fixed Server Role:

Sunucu seviyesinde yönetim ayrıcalıkları sağlar. Bu roller, sunucu seviyesinde kullanıcı veritabanlarını etkilemeden yönetilirler.

Fixed server rolleri aşağıdaki gibidir:

  • Veritabanı yaratıcıları(dbcreator): Veritabanlarını yaratır ve değiştirir.
  • Disk yöneticileri(diskadmin): Disk dosyalarını yönetir.
  • İşlem yöneticileri(processadmin): SQL sunucu işlemlerini yönetir.
  • Güvenlik yöneticileri(securityadmin): Sunucu girişlerini yönetir ve denetler.
  • Sunucu yöneticileri(serveradmin): "Server wide" ayarlarını yapar.
  • Kurulum yöneticileri(setupadmin): Kopyayı kurar.
  • Sistem yöneticileri(sysadmin): Herhangi bir işlemi yerine getirir.

    5.    Fixed Database Rolü:

Bu rol, veritabanı seviyesinde yönetim ayrıcalıkları sağlar.

  • public: Veritabanında tüm kullanıcılar için gerekli izinleri sağlar.
  • db_owner: Herhangi bir veritabanı rolü işlemlerini gerçekleştirir.
  • db_accessadmin: Veritabanı kullanıcılarını, grupları, rolewlri ekler ya da kaldırır.
  • db_ddladmin: Veritabanı nesnelerini ekler, değiştirir ya da kaldırır.
  • db_securityadmin: Cümlecik ve nesne izinlerini belirler.
  • db_backupoperator: Veritabanını yedekler ve açar.
  • db_datareader: Herhangi bir tablodan veri okur.
  • db_datawriter: Veri ekler, değiştirir veya bütün tablolardan veri siler.
  • db_denydatareader: Herhangi bir tablodan veri okuma iznini kaldırır.
  • db_denydatawriter: Herhangi bir tablodan veri değiştirme iznini kaldırır.

Rollere Giriş Hesabının Verilmesi:

SQL Server sayesinde istenilen kişilere veritabanı üzerinde istenilen nesneler için çeşitli haklar verilebilir. Bu haklar, yönetici rollerindeki haklar da olabilir ya da bizzat kişinin oluşturduğu rollere verdiği haklar da olabilir.

Sabit sunucu rolleri: Sunucu seviyesinde yönetici haklarının verildiği rollere sabit sunucu rolleri denir.

Rol İzin
sysadmin Herhangi bir işi yapma hakkı var.
dbcreater Veritabanlarını oluşturur ve değiştirebilir.
diskadmin Disk dosyalarından sorumludur.
processadmin SQL Server işlerini yürütür.
serveradmin Sunucunun ayarlarından sorumludur.
setupadmin Replikasyon'u sağlar.
securityadmin Sunucu girişlerini sağlar, kontrol eder.

"Enterprise Manager" ya da "sp_addsrvrolemember" sistem saklı yordamını kullanarak kişilerin istenilen sunucu rollerine sahip olmaları  sağlanır.

Örnek: "dilek" kullanıcı ismi olan Dilek'e sysadmin sabit sunucu rolüne dahil olması için şu ifade kullanılır: 
Exec sp_addsrvrolemember 'dilek' , sysadmin

Örnek: Dilek'e verilen sysadmin hakkının geri alınması için ve sysamin sabit sunucu rolünden çıkarılması için ise şu ifade kullanılır:
Exec sp_dropsrvrolemember 'dilek' , sysadmin