SQL Server a giriş yapmak için (login) iki yöntem vardır. Windows kimlik denetimi(Windows authentication) ve SQL kimlik denetimi (SQL authentication).
Windows kimlik denetimi her zaman vardır, fakat SQL kimlik denetimi mixed mode seçilerek etkin hale getirilir.
SQL Server ı ofis binası gibi düşünün. Binaya girşi için bir anahtara ihtiyacımız vardır. Fakat anahtar iş hanındaki kendi büromuzuda açmalıdır. Ali eczacıda çalışıyor, Ayşe kuaförde çalışıyor. İş hanına giriş için ikisindede aynı anahtar olmalı. Ardından çalıştıkları yerlere girmek için Ali de eczacının anahtarı, Ayşe de kuaförün anahtarı olmalıdır.
SQL Serverda bu örnek gibi 2 adımlı güvenlik sağlar. İş hanının anahtarı login güvenliğidir. İş hanındaki herbir büro SQL Serverdaki veritabanı gibidir. Her büronun kendine has anahtarı olduğu gibi, her bir veritabanınında bir kullanıcısı (user) olmalıdır. Her bir user server a erişmek için login ile ilişkilendirilmelidir.
Bu doğrulama biçimi SQL Server a bir login gibi giriş yapmak için kullanılır. Windows kullanıcı hesabı kullanılarak oturum açılır.
Bu doğrulama biçiminde kullanıcı adı ve şifre SQL Server da saklanır. Kullanıcı adı ve şifre master veritabanında syslogins tablosunda saklanır. Şifre hash yöntemi ile şifrelenerek saklanır. Şifrelenen şifre çözümlenemez.
select * from syslogins
bu cümlecikle oluşturulan kullanıcın bilgileri görüntülenir. Şifre kısmının hash yöntemi ile şifrelendiğine dikkat ediniz.
Kullanıcı adı ve şifre girildiğinde önce kullanıcı adı kontrol edilir, kullanıcı adı varsa o kullanıcı adının şifresi girilen şifre ile kontrol edilir. Girilen bilgiler doğru ise server a erişilir.
Login Oluşturma
1. Management Studio kullanılarak login oluşturma
Windows Authentication için login oluşturma
SQL Server Authentication için login oluşturma
2. Transact-SQL (T-SQL) kullanılarak login oluşturma
Varsayılan login isimleri
Varsayılan olarak iki tane login ismi bulunur. Bu login isimleri sistem yöneticisidir ve bütün veritabanlarında her izne sahip isimlerdir.
sa her sql serverda bulunan login ismidir. sa kullanıcı adı her sql server da olduğu için, Sql Server'ı hacklemek isteyenlere karşı sa ya belirlenen şifrenin tahmin edilmesi zor olacak bir şifre olmalıdır. Bu şifrenin belli aralıklarla değiştirilmesi güvenlik açısından önemlidir. Diğer bir yöntem ise sa hesabını pasif yaparak, sa yetkisinde başka bir login ismi altında yeni bir login oluşturmaktır. Yeni oluşturulacak olan logine server rollerinden olan sysadmin rolü eklenmelidir.
Veritabanı için Kullanıcı Oluşturma
Management Studio kullanılarak kullanıcı oluşturmak. Kullanıcı oluşturma sadece SQL Server Authentication için oluşturulur. Windows Authentication için oluşturulamaz.
Transact-SQL (T-SQL) kullanılarak kullanıcı oluşturma
use veritabanıadi --veritabanı seçilir
CREATE USER yenikullaniciadi FOR LOGIN loginadi
GO
Varsayılan Kullanıcı Hesapları
Varsayılan olarak 2 tane kullanıcı adı bulunur. dbo ve guest hesabıdır.
dbo Hesabı
dbo hesabı login adı olarak sa yı rol olaraksa sysadmini kullanır. dbo kullnıcısı silinemez
Guest Hesabı
Guest her veritabanında otomatik oluşturulan hesaptır. Sisteme login ve kullanıcı adıyla herhangi bir veritabanına giriş yapan kullanıcı, guest hesabı açık olan tüm veritabanlarına erişebilir. Bu yüzden güvenlik gereği guest hesabının pasif yapılması gerekir.
Guest hesabını aktif yapmak için
GRANT CONNECT TO guest
cümleciği kullanılır.
Guest hesabını pasif yapmak için
DENY CONNECT TO guest
cümleciği kullanılır.