Bu makalede Mssql Serverda Server Role kavramına değinmiş olacağız. SQL Server’daki role, kullanıcıların veya grupların sistemdeki kaynaklara erişimini kontrol etmek için kullanılan güvenlik yapılarıdır. Roller, kullanıcıların belirli yetkilerle sınırlı bir şekilde veritabanı üzerinde işlem yapmalarını sağlar. MSSQL Server’da iki tür rol bulunur: Veritabanı Rolleri ve Sunucu Rolleri.
Sql server’da herhangi bir login oluşturacağımız zaman kullanıcıya server bazında bazı rollerin verilmesi gerekmektedir. Default olarak public rolündedir. Login ilk oluşturduğumuzda bu şekilde oluşmaktadır. Daha sonra kullanıcının isteklerine göre herhangi bir veritabanı rolü tahsis edilmektedir.
Server roles kısmında instance bazında yetki vereceğimiz alandır.

Public olarak oluşturulmuş veritabanında yapılan işlemler sınırlıdır. Bunun için yukarıdaki bazı özel yetkilerin verilmesi gerekmektedir.
public : Herkese kısıtlı haklar verilir. Herhangi bir role seçmesek bile default olarak her logine atanır. Bu role seçili iken instance bazında veya database bazında başka rollerde verilebilir.
Şimdi bazı server rollerini deneyelim ilk başta public rolüne sahip bir bir kullanıcı oluşturuyorum.
ROLLOGIN kullanıcısıyla login olduktan sonra instance bazı bir değişiklik yapalım bakalım public rolündeyken bize izin verecek mi?

Görmüş olduğumuz gibi hata mesajıyla karşılaştık bunun için administrator kullanıcımızla ROLLOGIN login’nine gerekli yetkiyi verelim bakalım server seviyesinde değişiklik yapabiliyor mu?

Bunun için kullanıcımıza serveradmin yetkisi veriyorum. Server admin nedir ona değinelim.
serveradmin : Sunucu üzerinde ayarları yapabildiğimiz sunucuya açma kapatma restart etme vb. yetkileri vardır. SQL Server’ı yönetme ve yapılandırma yetkisine sahiptir. Sunucu üzerinde yapılandırmalar yapabilir, sunucu parametrelerini değiştirebilir ancak veritabanlarına doğrudan müdahale edemez.

İlgili kullanıcımızın server seviyesinde değişiklikler yaptığını görmüş olduk.
Şimdi bu kullanıcımız ile bir veritabanı oluşturalım bakalım server admin olmasına rağmen buna izin verecek mi?

Görmüş olduğumuz gibi herhangi bir şekilde bir database oluşturmamıza izin vermiyor bunun için server rollerinden dbcreator rolünün verilmesi gerekmektedir.

İlgili rolümüzü verdikten sonra ROLLOGIN kullanıcısıyla bir db oluşturmaya çalışayım bakalım aynı hata mesajıyla karşılaşacakmıyız.

dbcreator : Bu role ile veritabanı üzerinde düzenleme, yeni bir veritabanı oluşturma, drop etme gibi hakları vardır. Veritabanı yöneticisi diyebiliriz. Yeni veritabanları oluşturabilir, mevcut veritabanlarını silebilir ve yapılandırabilir. Veritabanı seviyesinde yönetim yapabilir.
Not: Bazen bir login’e dbcreator yetkisi verildiğinde bu login kendi veritabanını oluşturur. Veritabanı altında security kısmında dbo kullanıcısı veritabanı oluşturan kullanıcı olmaktadır.
Önceden logine vermiş olduğumuz serveradmin ve dbcreater rollerini tekrardan geri aldıktan sonra ROLLOGIN kullanıcısının herhangi bir login oluşurabiliyor mu oluşturuyorsa hangi rolün kullanılması gerekmektedir buna bakalım

Bu şekilde login oluşturacağımız zaten kullanıcının ilgili yetkisi olmadığını görmüş oluyoruz bunun için S1\administrator kullanıcısından ROLLOGIN login’ine securityadmin yetkisi veriyorum.

securityadmin : sysadmin yapısında olan bir role’dür. Sql server üzerinde kullanıcıları denetlemek şifrelerini sıfırlamak veya değiştirme işlemidir kısacası login bazında her işlemle görevlidir.

Yeni bir login oluşturmanın yanında yeni login oluşturulduğu sysadmin yetkisi bile verilebilir bu aslında sys admin yetkisine eş değerdir. Bu yüzden bu rollerin dikkatli bir şekilde minumum yetkilerler oluşturulması gerekmektedir.
sysdmin :En yüksek yetkiye sahip roldür. Tüm sunucu ve veritabanı işlemlerini gerçekleştirebilir. Sistemdeki her türlü yapılandırma, veri erişimi, yedekleme, kullanıcı yönetimi gibi işlemleri yapabilir.
setupadmin : Paylaşım sunucularından veya aynı domainde başka bir sunucudan gerçek sisteme linked server kullanarak bağlanabilir.
diskadmin : Dosya yöneticisidir. Disk üzerinde yer alan dosyaların yönetilmesi, düzenlenmesi gibi disk kaynaklı işlemlerin yapılması gerektiğinde kullanıcıya verilecek roldür.
processadmin : İşlemci yöneticisi SQL Server üzerinde gerçekleştirdiğimiz tüm işlemlerin kontrolü, izlenmesi, denetlenmesi ve gerektiğinde de bu processleri KILL etme yetkisine sahiptir. Active monitördeki procesleri kill edebilir.
İlgili logine processadmin yetkisi verilmeden önce ROLLLOGIN kullanıcının active monitör kısmında bir değer veya ifade gözükmüyor.


Şimdi loginimize yukarıdaki gibi processadmin verdikten sonra tekrar aktif monitör kısmını açalım bir session’ı kill edelim.

Şimdi ise herhangi bir session’ı kill edelim.

bulkadmin : Bulk Insert Admin diyebileceğimiz bu rol,Excel ya da diğer veri kaynaklarından toplu insert yapılabilmesi için kullanılır. BULK INSERT çalıştırabilir.
Bu komutu kullanabilmek için ROLLOGIN kullanıcısına veritabanı bazında yetki veriyoruz.


Daha sonra ROLLOGIN login’iyle login oluyoruz.

USE TEST
GO
BULK INSERT CSVYUKLEME
FROM 'C:\A\CSV.txt'
WITH
(
DATAFILETYPE = 'nchar',
FIELDTERMINATOR = ',',
ROWTERMINATOR = '|',
CODEPAGE='1254'
);

Bulk insert yetkisinin olmadığını gösteriyor bunun için ROLLOGIN kullanıcısına bulkadmin yetkisi veriyorum.

Bu işlemi yaptıktan sonra tekrar insert işlemi gerçekleştirelim.

Bulk insert komutumuz başarılı bir şekilde çalışmış oldu.
exec sp_srvrolepermission
Bu komut ile hangi server role’ün ne gibi yetkileri olduğunu görebiliriz.

164’e yakın server role’ün toplam yetkisi vardır.


Başka bir makalede görüşmek dileğiyle..
“Yürüyüşünde ölçülü ol, sesini yükseltme; çünkü seslerin en çirkini eşeğin anırmasıdır.”Lokman-19