Sql Server Login User Oluşturma Ve Yetkilendirme
SQL serverda olmazsa olmazlar listesi oluşturacaksak listenin de olmazsa olmazlarından biri Login kavramıdır.
Login ve User oluşturma ve yetkilendirme konusuna geçmeden önce Login ve User arasında nasıl bir fark olduğuna bakalım isterseniz. Kısa cümlesi; Login Instance bazlı User ise Database bazlı kullanıcı oluşturma şeklidir diyebiliriz. Yani Login oluşturduğunuzda bu kullanıcı Instance’a ait tüm işlemleri ve altındaki tüm databaselere erişebilir ve işlemler yapabilir, ancak User oluşturduğunuzda bu kullanıcı user’ı oluşturduğunuz database üzerinde işlemler yapabilme yetkisine sahip olacaktır. Loginler database üzerinde yetkilere sahip olabilirken User’lar Instance üzerinde yetki sahibi olamazlar.
Şimdi daha detaylı incelemek için Login ve User oluşturup konularımızı ele alalım.
Login Oluşturma Ve Yetklendirme
Login oluşturma için Instance altındaki Security bölümünde bulunan Login sekmesine sağ tıklayıp New Login dediğimiz zaman karşımıza yeni bir kullanıcı oluşturma ekranı gelecektir. Burada isterseniz öncelikle SQL serverın iki bağlantı çeşidine değinelim.
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şturabilirsiniz.
SQL Server Authenticaiton: Burada istediğiniz tarzda Login oluşturabilirsiniz ancak bu kullanıcı için şifre girmeniz gerekmektedir.
General kısmında başlıca kullanıcı bilgileri girmeniz gereken bölümleri görürsünüz. Burada eğer domainde bulunan bir kullanıcı için SQL serverda kullanıcı oluşturmak isterseniz Login Name bölümündeki Serarch butonunuza tıkladığınızda aşağıda göründüğü gibi bir ekranla karşılaşacaksınız, ilk açıldığında herhangi bir kullanıcı yazılıyor olmayacak siz belirlediğiniz bir domain kullanıcısı ekleyebilirsiniz.
OK dedikten sonra kalan işlemleri bu kullanıcı için gerçekleştireceksiniz.
Biz SQL Server Authentication olarak bir Login oluşturacağız. celal.akay diye bir Login name girdik ve şifremizi belirledik. Altındaki seçeneklerde şifre ile ilgili bir kaç seçenek sunmaktadır. Enforce Password Policy oluşturacağımız şifrenin sqlde tanımlı Policy yani ş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, bir altındaki seçenekte ise bu 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 sunar. Default Database kısmında bu kullanıcı sql servera giriş yaptığında başlangıçta hangi veritabanında karşılanacağını belirler. Default Language kısmında da başlangıç dili belirlenir. Bu dil hata mesajlarının size hangi dille iletileceğini de belirler.
Server Roles kısmına geldiğimiz zaman işte burada oluşturacağımız Login için Instance bazlı yetkiler veriyoruz.
bulkadmin (Bulk Insert Administrator – Çoklu Kayıt Yöneticisi) : Bulk Insert komutuna yetkisi olan
dbcreator (Database Creator – Veritabanı Yöneticisi) : Database oluşturabilme, silebilme, düzenleyebilme yetkisi olan
diskadmin (Disk Administrator – Dosya Yöneticisi) : Disk üzerinde bulunan dosyaları yönetme yetkisi olan
processadmin (Process Administrator – İşlemci Yöneticisi) : SQL Server üzerinde çalışan işlemcileri kontrol etme yetkisi olan.
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
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
serveradmin (Server Administrator – Server Yöneticisi) : SQL Server üzerinde yapı ayarları, başlat/durdur/yeniden başlat gibi yetkileri olan.
setupadmin (Setup Administrator) : SQL Server üzerinde farklı bir verştabanı kullanarak işlem yapma yetkisi olan
sysadmin (System Administrator – Sistem Yöneticisi) : En yüksek yetkisi olandır. Sistem üzerinde tüm yetkilere sahiptir.
User Mapping bölümünde oluşturacağımız Loginin hangi veritabanlarına erişiminin ve bu veritabanlarında ne tür yetkilerinin olmasını istediğimizi belirliyoruz. Bu kısımda alt taraftaki seçenekler de Database bazlı rollerdir.
db_owner : Veritabanında en yüksek yetkilidir. Silme, ekleme, düzenleme, başlatma/durdurma gibi yetkileri vardır
db_accessadmin : Veritabanında kullanıcılara veritabanına erişim kural/yetki atayan yöneticidir
db_securityadmin :Veritabanındaki kural/yetkileri yönetir
db_datareader : Veritabanındaki kullanıcıların “SELECT” sorgusunu çalıştırmasına izin verir
db_datawriter : Veritabanındaki kullanıcıların “INSERT , DELETE , UPDATE sorgularını çalıştırmasına izin verir
db_ddladmin : Veritabanındaki kullanıcıların “DDL” komutlarını çalıştırmasına izin verir
db_denydatareader : Veritabanındaki kullanıcıların “SELECT” sorgusunu çalıştırmasını kısıtlar
db_denydatawriter : Veritabanındaki kullanıcıların “INSERT , DELETE , UPDATE sorgularını çalıştırmasını kısıtlar
db_backupoperator : Veritabanının yedeğini alma yetkisi tanımlar.
eğer sadece Public seçeneğini seçerseniz bu kullanıcının ilgili veritabanına erişimi olur fakat herhangi bir işlem yapma yetkisi olmaz.
Status kısmına geldiğimizde Settings altındaki Grant database bağlantısına izin verirken Deny ise izin vermemeyi temsil eder alt kısımda Disable Loginin tamamen kullanım dışı hale getirilmesi demektir. Bu durumda sadece pasife çekilmiş olur bu kullanıcının silinmesi olarak anlaşılmamalı Enable ise pasif durumdaki kullanıcıyı tekrar aktifleştirmek için kullanılır.
User Oluşturma Ve Yetkilendirme
Daha önce de söylediğimiz gibi Userlar database seviyesinde kullanıcılardır bu nedenle User oluşturmak için ilgili veritabanına sağ tıklayıp New User seçeneğini tıklıyoruz.
Bir sonraki adımda karşımıza oluşturacağımız User için bir ekran gelir ve burada gerekli bilgileri tanımlarız.
Burada User Type kısmında oluşturacağımız User’ı oturum açmak ve veritabanına erişmek için kullanacağımızı belirtiyoruz. User Name kısmında User için bir isim belirliyoruz. Login name kısmında ise bu User’ı bir Login ile ilişkilendirmemiz gerekiyor çünkü daha önce de bahsettiğimiz üzere Userlar veritabanı bazlı ve Loginler Instance bazlı çalıştığı için sql serverda Instance’a bağlanabilmek için Login kullanmamız gerekecek oluşturduğumuz User da tanımladığımız Login üzerinden veritabanına erişim sağlayacak. Her User tek bir Login ile ilişkilendirilebilir. Bu durumda veritabanındaki User ile ilişkilendirdiğiniz Login Instance altında Login’e verdiğiniz ismiyle görünürken veritabanı altında User’a verdiğiniz isimle görünür. Logine verdiğiniz yetkiler User için de geçerli olacaktır. Aynı Login için birden fazla User ile ilişkilendirilebilir, böylece Login için her veritabanında farklı yetkiler verebiliriz. Default Schema kısmında bu User sorgu çalıştırdığında eğer schema belirtmezse default olarak hangisinin tanımlanacağını belirler. Herhangi birşey belirtmezseniz DBO olarak tanımlanır.
Owned Schemas kısmında oluşturduğumuz User’ın hangi şemalar üzerinde yetki sahibi olacağını belirtiyoruz burada rol ve veritabanımızda bulunan schemaların hepsi bulunur. Burada dikkat etmeniz gereken şey eğer Şemalardan birine oluşturduğunuz User’ı yetkili yaparsanız daha sonra bu User’ı silmek istediğinizde hata alacaksınız bu durumla karşılaşmamak için öncelikle silmek istediğiniz Userın hangi şemalarla ilişkili olduğunu User üzerine sağ tıklayıp özelliklerden bakın daha sonra ilgili şemaya yine veritabanı altında bulunan Schemas bölümünden ulaşıp sağ tık özellikler sekmesinden Schema Owner’ı değiştirmeniz gerekir, işlemi gerçekleştirdikten sonra artık ilgili User’ı silebilirsiniz.
Membership bölümünde User yetkilendirme işlemlerini tanımlıyoruz. Yukarıda bu yetkilerin ne anlama geldiği bilgisin vermiştik.
OK dediğimiz zaman veritabanı bazlı User’ımızı oluşturmuş bulunuyoruz.
Kaynak