SQL Server Sunucu ve Veritabanı Düzeyinde Roller
0

SQL Server rolleri. Veritabanında yetki verilecek kullanıcıların güvenlik amacıyla çeşitli rollerle kısıtlamalar yapmamız gerekmektedir. Yapılmak istenen işlemlere göre bu rolleri şekillendirmemiz gerekir. Bu makalemde Server ve Database düzeyindeki SQL Server rolleri detaylarına değineceğim.

1. SQL Server Rolleri : Sunucu Düzeyinde Roller

Alttaki grafikte Server rollerinin yetkinliklerini görebiliriz:

Resim-1

Tek tek server seviyesinde rollerimizi inceleyecek olursak, Security sekmesi altında Server Roles altında mevcut rollerimizi görüntüleyebiliriz.

Resim-2

Komutlar

Bu rollerimizin yetkinliklerini detaylı olarak görebilmek için aşağıdaki scripti çalıştırabiliriz:

  • sp_srvrolepermission ‘ServerLevelRolesName’

Server düzeyinde  aşağıdaki script ile isteniler yetki ataması yapılabilir:

  • EXEC sp_addsrvrolemember @loginame=’…’, @rolename=’…’

Verilen yetkiyi almak istediğimizde de aşağıdaki scriptten faydalanabiliriz:

  • EXEC sp_dropsrvrolemember @loginame=’…’, @rolename=’…’

Yetki atayıp, geri alma işlemlerini SecurityàLogins sekmesinden istediğimiz yetkiyi de server seviyesinde tanımlayabiliriz.

Roller

Server seviyesinde rollerimize geçecek olursak:

Bulkadmin:

Bu role sahip kullanıcılar BULK INSERT deyimini çalıştırabilir.

Genelde başka bir veri kaynağından ya da Excel’den veri çekme işlemleri için kullanılır.

sp_srvrolepermission ‘bulkadmin’ dediğimizde de aşağıdaki gibi yetkinliklerini görebiliyoruz.

ServerRolePermission
bulkadminAdd member to bulkadmin
bulkadminBULK INSERT

Dbcreator:

Bu role sahip olan kullanıcı başlıca olarak herhangi bir veritabanı Create edebilir, Alter edip düzenleyebilir, Drop edebilir veya herhangi bir veritabanını Restore edebilir.

Yazılımcılara test amaçlı bu yetki verilebilir.

ServerRolePermission
dbcreatorAdd member to dbcreator
dbcreatorALTER DATABASE
dbcreatorCREATE DATABASE
dbcreatorDROP DATABASE
dbcreatorExtend database
dbcreatorRESTORE DATABASE
dbcreatorRESTORE LOG
dbcreatorsp_renamedb

Diskadmin:

Bu role sahip kullanıcılar disk dosyalarını yönetebilir.

ServerRolePermission
diskadminAdd member to diskadmin
diskadminDISK INIT
diskadminsp_addumpdevice
diskadminsp_diskdefault
diskadminsp_dropdevice

Processadmin:

Bu role sahip kullanıcılar tüm processleri görebilir, yönetebilir ve Kill komutuyla istediği tüm processleri sonlandırabilir.

ServerRolePermission
processadminAdd member to processadmin
processadminKILL

Public:

Tüm SQL Server kullanıcıları, gruplarına vs. varsayılan olarak public rolü atanır. Bu rol ile sadece SQL Server’a bağlanabilir ancak herhangi bir işlem yapamaz.

Securityadmin:

Bu role sahip kullanıcıların girişleri ve özelliklerini yönetir. GRANT, DENY ve REVOKE sunucu düzeyinde izinleri atayabilirler. Ayrıca GRANT, DENY ve REVOKE veritabanı düzeyinde izinleri de atayabilirler.  SQL Server girişleri için şifreleri sıfırlayabilirler ve SQL Server hesabı oluşturup silebilirler. Rol oluşturamazlar. Kısacası SQL Server login bilgilerini yönetir.

ServerRolePermission
securityadminAdd member to securityadmin
securityadminGrant/deny/revoke CREATE DATABASE
securityadminRead the error log
securityadminsp_addlinkedsrvlogin
securityadminsp_addlogin
securityadminsp_defaultdb
securityadminsp_defaultlanguage
securityadminsp_denylogin
securityadminsp_droplinkedsrvlogin
securityadminsp_droplogin
securityadminsp_dropremotelogin
securityadminsp_grantlogin
securityadminsp_helplogins
securityadminsp_password
securityadminsp_remoteoption (update)
securityadminsp_revokelogin

Serveradmin:

Bu role sahip kullanıcılar sunucu genelinde yapılandırma seçeneklerini değiştirebilir ve sunucuyu kapatabilir.

ServerRolePermission
serveradminAdd member to serveradmin
serveradmindbcc freeproccache
serveradminRECONFIGURE
serveradminSHUTDOWN
serveradminsp_configure
serveradminsp_fulltext_service
serveradminsp_tableoption

Setupadmin:

Bu role sahip kullanıcılar linked server ekleyebilir, kaldırabilir ve bazı sistem stored procedure lerini yürütebilir.

ServerRolePermission
setupadminAdd member to setupadmin
setupadminAdd/drop/configure linked servers
setupadminMark a stored procedure as startup

Sysadmin:

En yetkin rolümüz system admindir. Bu role sahip kullanıcılar her işlemi gerçekleştirebilme yetkisine sahiptir. Bu yetkinin database adminleri dışında diğer kullanıcılarda bulunması önerilmez.

ServerRolePermission
sysadminAdd extended procedures
sysadminAdd member to bulkadmin
sysadminAdd member to dbcreator
sysadminAdd member to diskadmin
sysadminAdd member to processadmin
sysadminAdd member to securityadmin
sysadminAdd member to serveradmin
sysadminAdd member to setupadmin
sysadminAdd member to sysadmin
sysadminAdd/drop to/from db_accessadmin
sysadminAdd/drop to/from db_backupoperator
sysadminAdd/drop to/from db_datareader
sysadminAdd/drop to/from db_datawriter
sysadminAdd/drop to/from db_ddladmin
sysadminAdd/drop to/from db_denydatareader
sysadminAdd/drop to/from db_denydatawriter
sysadminAdd/drop to/from db_owner
sysadminAdd/drop to/from db_securityadmin
sysadminAdd/drop/configure linked servers
sysadminAll DDL but GRANT, REVOKE, DENY
sysadminALTER DATABASE
sysadminBACKUP DATABASE
sysadminBACKUP LOG
sysadminBULK INSERT
sysadminCHECKPOINT
sysadminComplete SETUSER SQL user
sysadminConstraints on System tables
sysadminCREATE DATABASE
sysadminCreate indices on system tables
sysadminCreate/delete/modify system tables
sysadmindbcc change ‘on’ rules
sysadmindbcc checkalloc
sysadmindbcc checkdb
sysadmindbcc checkfilegroup
sysadmindbcc checkident
sysadmindbcc checktable
sysadmindbcc cleantable
sysadmindbcc dbreindex
sysadmindbcc dropcleanbuffers
sysadmindbcc freeproccache
sysadmindbcc inputbuffer
sysadmindbcc outputbuffer
sysadmindbcc pintable
sysadmindbcc proccache
sysadmindbcc setcpuweight
sysadmindbcc setioweight
sysadmindbcc show_statistics
sysadmindbcc showcontig
sysadmindbcc showoptweights
sysadminDBCC ShrinkDatabase
sysadmindbcc shrinkfile
sysadmindbcc traceon/off
sysadmindbcc updateusage
sysadminDELETE permission on any object
sysadminDENY
sysadminDISK INIT
sysadminDROP DATABASE
sysadminEXECUTE any procedure
sysadminExtend database
sysadminGRANT
sysadminGrant/deny/revoke CREATE DATABASE
sysadminINSERT permission on any object
sysadminKILL
sysadminMark a stored procedure as startup
sysadminRaiserror With Log
sysadminRead the error log
sysadminRECONFIGURE
sysadminREFERENCES permission on any table
sysadminRESTORE DATABASE
sysadminRESTORE LOG
sysadminREVOKE
sysadminSELECT permission on any object
sysadminSHUTDOWN
sysadminsp_addapprole
sysadminsp_addlinkedsrvlogin
sysadminsp_addlogin
sysadminsp_addrole
sysadminsp_addrolemember
sysadminsp_addumpdevice
sysadminsp_adduser
sysadminsp_altermessage
sysadminsp_approlepassword
sysadminsp_change_users_login
sysadminsp_changedbowner
sysadminsp_changeobjectowner
sysadminsp_configure
sysadminsp_dbcmptlevel
sysadminsp_defaultdb
sysadminsp_defaultlanguage
sysadminsp_denylogin
sysadminsp_diskdefault
sysadminsp_dropapprole
sysadminsp_dropdevice
sysadminsp_droplinkedsrvlogin
sysadminsp_droplogin
sysadminsp_dropremotelogin
sysadminsp_droprole
sysadminsp_droprolemember
sysadminsp_dropuser
sysadminsp_fulltext_catalog
sysadminsp_fulltext_column
sysadminsp_fulltext_database
sysadminsp_fulltext_service
sysadminsp_fulltext_table
sysadminsp_grantdbaccess
sysadminsp_grantlogin
sysadminsp_helplogins
sysadminsp_password
sysadminsp_recompile
sysadminsp_refreshview
sysadminsp_remoteoption
sysadminsp_remoteoption (update)
sysadminsp_rename
sysadminsp_renamedb
sysadminsp_revokedbaccess
sysadminsp_revokelogin
sysadminsp_tableoption
sysadminsp_updatestats
sysadminTRUNCATE TABLE
sysadminUPDATE permission on any object
sysadminUSE to a suspect database

2. SQL Server Rolleri : Veritabanı Düzeyinde Roller

Veritabanı düzeyindeki roller, tanımlanmış olduğu veritabanı kapsamlarındadır.

İlgili veritabanı altında SecurityàRoles dediğimizde de bu rolleri görüntüleyebiliriz.

Resim-3

Ya da sabit veritabanı rollerini görebilmek için Security sekmesi altında Logins kısmında yetki vermek istediğimiz kullanıcıya tıklayarak User Mapping sayfasında kullanıcıya ilgili veritabanlarına roller tanımlayabiliriz. Veritabanını sadece işaretlemek varsayılan olarak public yetkisini tanımlar. Bu yetki ile sadece ilgili veritabanına erişebiliriz herhangi bir işlem yapamayız.

Resim-4

Komutlar

Aşağıdaki script ile de yetkilendirmek istediğimiz veritabanında kullanıcıya yetki tanımlayabiliriz:

  • EXEC sp_addrolemember @membername=’…’, @rolename=’…’

Verilen yetkiyi geri almak için de aşağıdaki scriptten yararlanabiliriz:

  • EXEC sp_droprolemember @membername=’…’, @rolename=’…’

Veritabanı düzeyindeki rollerin yetkinliklerini aşağıdaki grafikle görebiliriz.

Resim-5

Veritabanı düzeyindeki rollerin yetkinliklerini detaylı olarak görebilmek için aşağıdaki scriptten yararlanabiliriz:

  • EXEC sp_dbfixedrolepermission ‘DatabaseLevelRolesName’

Roller

Rollerimize geçecek olursak:

db_owner:

Veritabanı düzeyinde verilebilecek en kapsamlı roldür Bu role sahip kullanıcılar veritabanındaki tüm yapılandırma ve bakım etkinliklerini gerçekleştirebilir.

DbFixedRolePermission
db_ownerAdd/drop to/from db_accessadmin
db_ownerAdd/drop to/from db_backupoperator
db_ownerAdd/drop to/from db_datareader
db_ownerAdd/drop to/from db_datawriter
db_ownerAdd/drop to/from db_ddladmin
db_ownerAdd/drop to/from db_denydatareader
db_ownerAdd/drop to/from db_denydatawriter
db_ownerAdd/drop to/from db_owner
db_ownerAdd/drop to/from db_securityadmin
db_ownerAll DDL but GRANT, REVOKE, DENY
db_ownerBACKUP DATABASE
db_ownerBACKUP LOG
db_ownerCHECKPOINT
db_ownerdbcc checkalloc
db_ownerdbcc checkdb
db_ownerdbcc checkfilegroup
db_ownerdbcc checkident
db_ownerdbcc checktable
db_ownerdbcc cleantable
db_ownerdbcc dbreindex
db_ownerdbcc proccache
db_ownerdbcc show_statistics
db_ownerdbcc showcontig
db_ownerdbcc shrinkdatabase
db_ownerdbcc shrinkfile
db_ownerdbcc updateusage
db_ownerDELETE permission on any object
db_ownerDENY
db_ownerEXECUTE any procedure
db_ownerGRANT
db_ownerINSERT permission on any object
db_ownerREFERENCES permission on any table
db_ownerREVOKE
db_ownerSELECT permission on any object
db_ownersp_addapprole
db_ownersp_addrole
db_ownersp_addrolemember
db_ownersp_approlepassword
db_ownersp_change_users_login
db_ownersp_changeobjectowner
db_ownersp_dbcmptlevel
db_ownersp_dropapprole
db_ownersp_droprole
db_ownersp_droprolemember
db_ownersp_dropuser
db_ownersp_fulltext_catalog
db_ownersp_fulltext_column
db_ownersp_fulltext_database
db_ownersp_fulltext_table
db_ownersp_grantdbaccess
db_ownersp_recompile
db_ownersp_refreshview
db_ownersp_rename
db_ownersp_revokedbaccess
db_ownersp_tableoption
db_ownerTRUNCATE TABLE
db_ownerUPDATE permission on any object

db_securityadmin:

Bu role sahip kullanıcılar, yalnızca özel roller için rol üyeliğini değiştirebilir ve izinleri yönetebilir. Bu rolün üyeleri potansiyel olarak ayrıcalıklarını yükseltebilir ve eylemleri izlenmelidir.

DbFixedRolePermission
db_securityadminDENY
db_securityadminGRANT
db_securityadminREVOKE
db_securityadminsp_addapprole
db_securityadminsp_addrole
db_securityadminsp_addrolemember
db_securityadminsp_approlepassword
db_securityadminsp_changeobjectowner
db_securityadminsp_dropapprole
db_securityadminsp_droprole
db_securityadminsp_droprolemember

db_accessadmin:

Bu role sahip kullanıcılar, Windows oturum açma işlemleri, Windows grupları ve SQL Server oturum açma işlemleri için veritabanına erişim ekleyebilir veya bu veritabanına erişimi kaldırabilir.

DbFixedRolePermission
db_accessadminsp_dropuser
db_accessadminsp_grantdbaccess
db_accessadminsp_revokedbaccess

db_backupoperator:

Bu role sahip kullanıcılar, veritabanını yedekleyebilir.

DbFixedRolePermission
db_backupoperatorBACKUP DATABASE
db_backupoperatorBACKUP LOG
db_backupoperatorCHECKPOINT

db_ddladmin:

Bu role sahip kullanıcılar, bir veritabanındaki herhangi bir Veri Tanımlama Dili (DDL) komutunu çalıştırabilir.

DbFixedRolePermission
db_ddladminAll DDL but GRANT, REVOKE, DENY
db_ddladmindbcc cleantable
db_ddladmindbcc show_statistics
db_ddladmindbcc showcontig
db_ddladminREFERENCES permission on any table
db_ddladminsp_changeobjectowner
db_ddladminsp_fulltext_column
db_ddladminsp_fulltext_table
db_ddladminsp_recompile
db_ddladminsp_rename
db_ddladminsp_tableoption
db_ddladminTRUNCATE TABLE

db_datawriter:

Bu role sahip kullanıcılar, tüm kullanıcı tablolarındaki verileri ekleyebilir, silebilir veya değiştirebilir.

DbFixedRolePermission
db_datawriterDELETE permission on any object
db_datawriterINSERT permission on any object
db_datawriterUPDATE permission on any object

db_datareader:

Bu role sahip kullanıcılar, tüm kullanıcı tablolarından tüm verileri okuyabilir.

DbFixedRolePermission
db_datareaderSELECT permission on any object

db_denydatawriter:

Bu role sahip kullanıcılar, bir veritabanı içindeki kullanıcı tablolarındaki herhangi bir veriyi ekleyemez, değiştiremez veya silemez.

DbFixedRolePermission
db_denydatawriterNo DELETE permission on any object
db_denydatawriterNo INSERT permission on any object
db_denydatawriterNo UPDATE permission on any object

db_denydatareader:

Bu role sahip kullanıcılar, bir veritabanı içindeki kullanıcı tablolarındaki herhangi bir veriyi okuyamaz.

DbFixedRolePermission
db_denydatareaderNo SELECT permission on any object

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.

Verilen bu yetkiler tüm veritabanı için geçerli yetkilerdir. Örneğin kullanıcı sadece Insert işlemi yapıyorsa bu kullanıcıya db_datawriter rolünü tanımlarsak bu kullanıcıya aynı zamanda kayıtlar için ALTER ve DELETE yetkisi de tanımlamış oluruz. Her zaman kullanıcının ihtiyacı kadar, minimum yetkiler vererek hareket etmeliyiz. Bu yüzden sadece INSERT yetkisi tanımlamak istediğimizde ilgili database üzerine sağ tık àPropertiesàPermissions sayfasına gelirsek,

SQL Server rolleri

Resim-6

Permission for alanında Insert yetkisini vermek için ilgili alana Grant diyebiliriz. Insert dışında aşağıdaki yetkiler de tanımlanabilir:

Permission List
ALTER ANY MASK
ALTER ANY EXTERNAL DATA SOURCE
ALTER ANY EXTERNAL FILE FORMAT
ALTER
ALTER ANY ASYMMETRIC KEY
ALTER ANY APPLICATION ROLE
ALTER ANY ASSEMBLY
ALTER ANY CERTIFICATE
ALTER ANY DATABASE AUDIT
ALTER ANY DATASPACE
ALTER ANY DATABASE EVENT NOTIFICATION
ALTER ANY FULLTEXT CATALOG
ALTER ANY MESSAGE TYPE
ALTER ANY ROLE
ALTER ANY ROUTE
ALTER ANY REMOTE SERVICE BINDING
ALTER ANY CONTRACT
ALTER ANY SYMMETRIC KEY
ALTER ANY SCHEMA
ALTER ANY SECURITY POLICY
ALTER ANY SERVICE
ALTER ANY DATABASE DDL TRIGGER
ALTER ANY USER
AUTHENTICATE
BACKUP DATABASE
BACKUP LOG
CONTROL
CONNECT
CONNECT REPLICATION
CHECKPOINT
CREATE AGGREGATE
CREATE ASYMMETRIC KEY
CREATE ASSEMBLY
CREATE CERTIFICATE
CREATE DEFAULT
CREATE DATABASE DDL EVENT NOTIFICATION
CREATE FUNCTION
CREATE FULLTEXT CATALOG
CREATE MESSAGE TYPE
CREATE PROCEDURE
CREATE QUEUE
CREATE ROLE
CREATE ROUTE
CREATE RULE
CREATE REMOTE SERVICE BINDING
CREATE CONTRACT
CREATE SYMMETRIC KEY
CREATE SCHEMA
CREATE SYNONYM
CREATE SERVICE
CREATE TABLE
CREATE TYPE
CREATE VIEW
CREATE XML SCHEMA COLLECTION
DELETE
EXECUTE
INSERT
REFERENCES
SELECT
SHOWPLAN
SUBSCRIBE QUERY NOTIFICATIONS
TAKE OWNERSHIP
UNMASK
UPDATE
VIEW DEFINITION
VIEW ANY COLUMN ENCRYPTION KEY DEFINITION
VIEW ANY COLUMN MASTER KEY DEFINITION
VIEW DATABASE STATE

SQL Server’da bir kullanıcıya kısıtlı yetki vermek

Kullanıcıya tüm veritabanını kapsayacak şekilde yetki vermek istemiyorsak yani veritabanındaki herhangi bir nesne özelinde bir yetki tanımlamak istiyorsak ilgili database altında Security sekmesi à İlgili kullanıcı user ına çift tık ile Securables sayfasına gidiyoruz. Burada Search deyip Specific Objects… işaretliyken OK diyoruz.

SQL Server rolleri

Resim-7

Bu sayfada hangi objeye özel bir yetki tanımlayacağımızı seçeriz. Object Type sayfasında örneğin Stored Procedures ve Tables alanını işaretleyelim. Örneğin yapmak istediğim ilgili kullanıcıya bir stored procedure için View Definition yetkisi tanımlamak ve seçtiğim bir tablo için de Update yetkisi vermek. Belirleyeceğim nesneyi Enter the object names to select alanında Object Types alanine belirledikten sonra Browse… diyerek arayabilir ve işaretleyebilirim.

SQL Server rolleri

Resim-8

Seçilmiş olan nesneler OK dedikten sonra aşağıdaki gibi karşımıza gelir. Burada Stored Procedure ün üstüne tıklayıp alt alandan View Definition yetkisini, Table ın üzerine tıklayıp da Update yetkisini Grant alanından işaretleyerek işlemi tamamlayabilirim.

SQL Server rolleri

Resim-9

Grant ile bu yetkileri sağlayabilirken,

With Grant seçeneği ile yetki verilen kullanıcıların, aynı yetkileri bir başka kullanıcıya da tanımlama hakkı sağlamış oluruz.

Deny seçeneği ile de kullanıcı için istenilen yetkiler engellenebilir.

Özelleştirerek vermiş olduğumuz yetkiler için kullanıcımızda Database düzeyinde public rolünde kalmış olması yeterlidir.

SQL Server rolleri için umarım faydalı bir makale olmuştur.

Bu konuyla ilgili sorularınızı alt kısımda bulunan yorumlar alanını kullanarak sorabilirsiniz.

Referanslar

https://www.mshowto.org

Server and Database Roles in SQL Server 

TAGs: SQL Server rolleri, SQL Server , Server Level Roles, Database Level Roles, Permissions, serveradmin, securityadmin, processadmin, setupadmin, bulkadmin, diskadmin, dbcreator,
db_owner, db_securityadmin, db_accessadmin, db_backupoperator, db_ddladmin, db_datawriter, db_datareader, db_denydatawriter, db_denydatareader, public

 

Bu İçeriğe Tepkin Ne Oldu?
  • 51
    harika_
    Harika!!
  • 0
    be_enmedim
    Beğenmedim
  • 0
    _ok_iyi
    Çok iyi
  • 1
    sevdim_
    Sevdim!
  • 0
    bilemedim_
    Bilemedim!
  • 1
    olmad_
    Olmadı!
  • 0
    k_zd_m_
    Kızdım!

Trakya Üniversitesi - Bilgisayar Mühendisliği mezunuyum. Öğrenim hayatım boyunca C, C++, C#, VB.NET ve ASP.NET MVC dilleri ile SQL Server veri tabanı altyapılı çeşitli otomasyon projelerinde yer aldım. İş hayatıma ERP Software Support Specialist pozisyonuyla başlayıp kısa bir süre sonra kariyerime BELBİM Elektronik Para ve Ödeme Hizmetleri A.Ş.'de Ms SQL Database Administrator pozisyonu ile yön vermiş bulunmaktayım. SQL Server ile birlikte Data Warehouse, Oracle ve PostgreSQL alanlarına ilgiliyim ve kendimi bu alanlarda geliştirmeye devam ediyorum.

Yazarın Profili
İlginizi Çekebilir

Bültenimize Katılın

Tıklayın, üyemiz olun ve yeni güncellemelerden haberdar olan ilk kişi siz olun.

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir