SQL SERVER LOGIN-USER ROLLERİ VE OLUŞTURMA-YETKİLENDİRME İŞLEMLERİ
SQL Server sunucularına, kullanıcı olarak giriş sağlamak ve yetkili olmak mümkündür. SQL Server, kullanıcıları iki türlü işlevsellik sunar; Login Instance bazlı, User ise Database bazlı kullanıcı oluşturma şeklidir. Yani Login oluşturduğunuzda kullanıcı Instance’a ait tüm işlemleri ve altındaki tüm Databaselere erişebilir ve işlemler yapabilir, fakat User oluşturduğunuzda kullanıcı User’ı oluşturduğunuz Database üzerinde işlemler yapabilir demektir.
Login ler Database üzerinde yetkilere sahip olabilirken User’lar Instance üzerinde yetki sahibi olamazlar. Özetle; login kullanıcıları, tüm veri tabanlarına erişebilir ve belirlenen yetki kapsamlarında çalışabilirken, User kullanıcılar sadece belirli veri tabanlarında, belirlenen yetki kapsamlarında çalışabilirler.
SERVER’DA LOGİN KULLANICI OLUŞTURMA VE YETKİLENDİRME
SQL Server’ da sol panelimizde yer alan Security altında Login kısmına gelerek görselde olduğu gibi New Login seçimi yapıyoruz.
Karşımıza General ekranı, yeni bir kullanıcı oluşturma ekranı gelmektedir. Bu ekranda oluşturulacak kullanıcı için öncelikle bir name işlemi gerçekleştiriyoruz. Name alanını kendimiz doldurabileceğimiz gibi search alanından da görevli olarak seçim yapabiliriz. Eğer domainde bulunan bir kullanıcı için SQL serverda kullanıcı oluşturmak istersek bu alandan name işlemi yaparız. Biz kendimiz name belirleyelim.
Bir name belirledikten sonra bağlantı çeşitlerinde bir seçim yapmamız gerekmektedir. Bağlantı çeşidi ikiye ayrılmaktadır; Windows Authentication, SQL server Windows bağlantısıdır ve bu şekilde giriş yaptığınızda sizden herhangi bir şifre istenmez fakat burada sadece domainde bulunan kullanıcılar için Login oluşturulabilir. SQL Server Authenticaiton ise istediğiniz tarzda Login oluşturabilirsiniz ancak bu kullanıcı için şifre girmeniz gerekmektedir. Biz SQL Server Authentication seçimi ile devam edeceğiz.
Buraya kadar s.kılıc olarak bir login name ve şifre belirlemiş olduk. Panelin hemen altında şifre işlemleri ile ilgili seçenekler yer almaktadır. Bunlar sırasıyla;
- Enforce password policy seçeneği oluşturacağımız şifrenin SQL’de tanımlı şifre kurallarına uygun olup olmadığını kontrol eder
- Enforce password expiration seçeneği zamanı geldiğinde şifre değiştirme gerekliliği oluşturur ve şifresi değiştirilmeyen Loginlerin Disable(pasif) duruma çekilmesini sağlar
- User must change password at next login seçeneği kullanıcının ilk giriş yaptığı anda şifresini değiştirmesini ister
Sonraki seçeneklerde ise Login için SQL server sertifika oluşturma seçenekleri sunmaktadır. Default Database kısmında bu kullanıcı SQL Servera giriş yaptığında ilk olarak başlangıçta hangi veri tabanında karşılanacağını belirlemek içindir. Default Language kısmında da başlangıç dili belirlenir.
İkinci ekrana Server Roles kısmına geçtiğimizde oluşturacağımız Login için Instance bazlı yetkiler vereceğimiz alan ile karşılaşmaktayız.
SQL Server Logins Roles :
- bulkadmin (Bulk İnsert Administrator – Çoklu Kayıt Yöneticisi) : Bulk İnsert komutuna yetkisi olan demektir.
- dbcreator (Database Creator – Veri tabanı Yöneticisi) : Database oluşturabilme, silebilme, düzenleyebilme yetkisi olan demektir.
- diskadmin (Disk Administrator – Dosya Yöneticisi) : Disk üzerinde bulunan dosyaları yönetme yetkisi olan demektir.
- processadmin(Process Administrator – İşlemci Yöneticisi) : SQL Server üzerinde çalışan işlemcileri kontrol etme yetkisi olan demektir.
- public (Herkese Kısıtlı Hak) : SQL Server üzerinde standart ayarlarla giriş yapan herkesin rolüdür. Bu kural ile tüm kullanıcıların kısıtlı hakları vardır. Daha sonra bu kullanıcılara kural değişikliği yapılarak diğer kurallar atanabilir demektir.
- securityadmin (Security Administrator – Güvenlik Yöneticisi) : Server üzerinde kullanıcıların yetkilerini denetlemek, yönetmek ve şifrelerini sıfırlamak ya da istendiğinde değiştirme yetkisi olan demektir.
- serveradmin (Server Administrator – Server Yöneticisi) : SQL Server üzerinde yapı ayarları, başlat/durdur/yeniden başlat gibi yetkileri olan demektir.
- setupadmin (Setup Administrator) : SQL Server üzerinde farklı bir veri tabanı kullanarak işlem yapma yetkisi olan demektir.
- sysadmin (System Administrator – Sistem Yöneticisi) : En yüksek yetkisi olandır. Sistem üzerinde tüm yetkilere sahiptir.
Üçüncü ekranUser Mapping alanında oluşturacağımız Login in hangi veri tabanlarına erişiminin ve bu veri tabanlarında hangi yetkilerinin olacağını belirliyoruz.
Bu ekranda en az iki tane veri tabanı seçilmesi halinde Database rolleri oluşmaktadır.
Bunlar ;
- db_owner : Veri tabanında en yüksek yetkilidir, ekleme, düzenleme, silme, başlatma/durdurma yetkileri mevcuttur.
- db_accessadmin : Veri tabanında kullanıcılara veri tabanına erişim kural/yetki atayan yönetici yetkileri mevcuttur.
- db_securityadmin : Veri tabanındaki kuralları (yetkileri) yönetme yetkileri mevcuttur.
- db_datareader : Veri tabanındaki kullanıcıların “Select” sorgusunu çalıştırmasına izin verme yetkileri mevcuttur.
- db_datawriter : Veri tabanındaki kullanıcıların “Insert, Delete, Update sorgularını çalıştırmasına izin verme yetkileri mevcuttur.
- db_ddladmin : Veri tabanındaki kullanıcıların “DDL” komutlarını çalıştırmasına izin verir
- db_denydatareader : Veri tabanındaki kullanıcıların “Select” sorgusunu çalıştırmasını kısıtlama yetkileri mevcuttur.
- db_denydatawriter : Veri tabanındaki kullanıcıların “Insert , Delete , Update sorgularını çalıştırmasını kısıtlama yetkileri mevcuttur.
- db_backupoperator : Veritabanının yedeğini alma yetkileri mevcuttur.
- public : Kullanıcının ilgili veri tabanını erişimi olur ama işlem yapma yetkileri mevcut değildir.
Dördüncü ekran Securables alanı, SQL Server Engine ile doğrudan alakalı yetkilendirmelerin gerçekleştirildiği alandır. SQL Server AlwaysOn, Endpoint ve Instance seviyesindeki detay yetkilendirmeler için kullanılmaktadır.
Explicit panelinde görüldüğü gibi system administrator tarafından Connect SQL yani SQL Selver’e bağlanma yetkisi verilmiştir. Grant sütunu üzerinden talebe göre izinler verilebilir. Deny sütunu ile de izinler için kısıtlama uygulanabilir.
Beşinci ve son ekran ise Status alanıdır. Burada Settings kısmında yer alan Grant, Database bağlantısına izin verir. Deny ise Database bağlantısına izin vermemektir. Login ise kullanıcının kullanımını aktif/pasif şeklinde belirlemek içindir. Enable aktif kullanıcı ya da pasif durumdaki kullanıcıyı aktifleştirmek demektir. Disable ise pasif kullanıcı ya da aktif durumdaki kullanıcıyı pasifleştirmek demektir.
Son olarak Status kısmı ise SQL Server Authenticaiton kullanılması durumunda kilit oluşturmak içindir.
SQL SERVER DATABASE USER OLUŞTURMA VE YETKİLENDİRME
Login kullanıcıları tüm veri tabanlarına erişebilir ve belirlenen yetki kapsamlarında çalışabilirken, User kullanıcı sadece belirli veri tabanlarında, belirlenen yetki kapsamlarında çalışabilirler.
SQL Server veri tabanı sisteminde, her kullanıcı için mevcut Database üzerinden iş süreçlerinin kapsamında yetki vererek hareket etmelerine olanak sağlanabilir. Bu yönetim yöntemi, kullanıcının yetkilerini kısıtlamak, hareketini kontrol edebilmek içindir. User’lar Instance üzerinde yetki sahibi olamazlar.
Kısaca User, Database bazlı kullanıcı oluşturma şeklidir. Kullanıcı User’ı oluşturduğunuz Database üzerinde işlemler yapabilir demek en doğru açıklamadır. User kullanıcı oluşturma ve yetkilendirme işlemleri de şu şekildedir:
User kullanıcı oluşturmak için kullanıcı eklemek istediğimiz ilgili veri tabanından security- users seçiminde sağa tıklayarak New User seçiyoruz.
Karşımıza General ekranı gelmektedir. Burada User Type kısmında oluşturmak istediğimiz User kullanıcının oturum açmak ve veri tabanına erişmek için kullanacağımızı belirtiyoruz.
User Type :
- SQL user with login- oturum açma ile SQL kullanıcısı
- SQL user without login- oturum açmadan SQL kullanıcısı
- User mapped to a certificate- Kullanıcının bir sertifikaya eşlenmesi
- User mapped to an asymmetric key- Kullanıcı asimetrik bir anahtarla eşlenmesi
- Windows user- Windows kullanıcısı
User Name kısmında User için bir isim belirliyoruz. Ardından Login name kısmında User ‘i bir login ile eşleştiriyoruz. Daha önce belirttiğimiz gibi User’lar veri tabanı bazlı ve Login’ler ise Instance bazlı çalışır. Buna bağlı olarak SQL Server ‘a bağlanabilmek için oluşturduğumuz User da Login tanımlamayız.
Oluşturduğumuz User tanımlanan Login üzerinden veri tabanına erişim sağlayacak ancak burada bilinmesi gereken her User bir login ile eşleştirilebilir. Logine verdiğimiz yetkiler User için de geçerli olmaktadır.
Default Schema kısmında bir şey belirtmezseniz durumda DBO olarak çalışmaktadır.
İkinci alanda Owned Schemas kısmında User ’in hangi şemalar üzerinde yetki sahibi olacağını belirleyebiliriz.
Dördüncü alanda Securables kısmında hangi nesneleri eklemek istediğimizi belirtiriz, belirli şemalara yönelik belirli nesneleri de seçebiliriz.
Belirli nesneler üzerinden; nesne türünü ve nesne türüne göre veri tabanlarında yer ala nesneler üzerinden hareket edilmesini belirleyebilir bu doğrultuda kısıtlama sağlayabiliriz.
Yapılan nesne seçimlerine göre, nesne içerisinde kullanıcıların hangi objeler üzerinden hareket edebileceğini ya da hangi objeleri kullanamayacağını belirleyebiliriz.
Resim9 ‘da göründüğü üzere örnek olarak oluşan bu kullanıcı, belirttiğimiz tablolar üzerinde Insert ve Select yapabilirken Delete işlemi gerçekleştiremez.
Sonuç olarak adım adım yapılan seçimler ile kullanıcımız oluşmuştur ve yetkilendirme işlemleri gerçekleşmiştir.