SQL Server Authentication login’e sql login diyebiliriz. Active Directory’le hiçbir bağlantısı yoktur. SQL Server Authentication ile bazı avantajları ve dezavantajları vardır. Kullanıcılar ağ üzerinde varitabanı sunucusuna bağlantı sırasında kullanıcı adı ve şifresinin ağ üzerinde açık veya şifrelenmiş bir şekilde iletilmesini sağlar buda saldırılara karşı açıktır. Kerberos güvenlik protokolünü kullanmaz. SQL Server Authentication ile oluşturulan kullanıcı adı ve şifresinin kullanıcı tarafından alınır buda ayrı bir güvenlik riskidir.
Windows authentication da şifreler için hash kullanılırken, SQL yöntemi ‘parola değiştirme veya şifrelemeyi zorlamaz, bunun yerine ağ üzerinden açık metin olarak gönderilir. SQL Kimlik Doğrulaması, Windows Kimlik Doğrulamasından daha az güvenlidir
Şimdi SQL Server Authentication’la nasıl bir login oluştururuz onu görelim. Security bölümünde Logins‘e sağ tıklayıp New Login diyoruz.

Buradan SQL Server Authentication’la seçtikten sonra veritabanımız ile uyumlu bir kullanıcı adı girmemiz lazım.

SQL Server Authentication’ı seçtiğiniz zaman karşınıza seçebileceğiniz 3 seçenek gelir. Bu ikonların detaylı konfigürasyonu için Windows arama yerine Local Security Policy yazabiliriz. Windows Authentication seçilirse ilgili bölümler default olarak seçilidir.

Enforce Password Policy: Sql server’ın kurulu olduğu sunucuda Windows parolalarının(Account Policy) kullanılıp kullanılmayacağı ve geçerlilik sürelerini kontrol eder.

Enforce Password Expiration: Instance’n bulunduğu sunucu üzerindeki account policy de tanımlı olan kurallar sonucu belirli bir süre sonra şifremizin değiştirilmesini ister. Değiştirilmeyen şifre disable edilir.


Bu iki özelliği aktif ettikten kullanıcımı oluşturmak için OK’a basıp Login’imi oluşturacağım zaman hata mesajı aldım çünkü vermiş olduğum şifre karakter uzunluğuna uymuyor. Minumum 7 karakter yapmam lazım.

User must change password at next login: Kullanıcının ilk giriş yaptığında şifresinin değiştirilip değiştirmeyeceğini belirler.. Sadece bunu seçmezsek bize ilk giriş yaptığımızda şifre değişikliği sormaz.

Bu özelliği seçip ve karakter uzunluğu 7 karakter olacak şekilde yaptıktan sonra login olmaya çalıştım.

Yukarıda dikkat edersek User must change password at next login ikonunu aktif ettiğimiz için şifre değişikliği sordu. Burada değişiklik yaptıktan sonra yeni oluşturduğumuz şifreyle account policy’de belirlenen gün kadar giriş yapabiliriz.
Kullanıcımızı önceden oluşturulmuş herhangi bir sertifikaya bağlayabiliriz bu ayrı bir makalenin konusu olmuş olacak. Default database kısmında kullanıcının login olduğu zaman açılan query’in hangi database üzerinde açılacağı belirlenir default değerde kalabilir(açılınca yeni query master gelir) ama herhangi bir veritabanı da belirtilebilir.

Default Database PARTITIONTEST seçip login olduktan sonra new query dediğimizde PARTITIONTEST veritabanı altında query’i açar.

Aşağıdaki resimde dikkat edersek login AdventureWorks2024 üzerinde db_owner yetkisi olmasına rağmen default database’i PARTITIONTEST yaptığımız için bu kullanıcı login olduğunda default database’i hangisi ise o gelir.


Default database’i AdventureWorks2024 yapınca tekrar login olduğumuzda o gelir.


Kısacası 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. Bu dil hata mesajlarının size hangi dille iletileceğini de belirler.

Yukarıdaki konfigürasyonları yaptıktan sonra makalenin başında oluşturmuş olduğum login’le giriş yapmış oldum. Sql server authentication ile bağlandığımızı görüyoruz.

SQL Server’da Login Status bölümü, bir kullanıcının (Login) veritabanı sunucusuna bağlanma yetkisini belirleyen ayarları içerir. SQL Server Management Studio (SSMS) üzerinden Security > Logins > [Kullanıcı] > Status sekmesinden erişilebilir.

Permission to connect to database engine: (Veritabanı motoruna bağlanma izni)
Bu ayar, kullanıcının SQL Server’a bağlanıp bağlanamayacağını kontrol eder. Kullanıcının tamamen sql server ile bağlantısının kesilmesini istiyorsa bu seçenek seçilebilir.
Grant: Kullanıcının SQL Server’a bağlanmasına izin verir.
Deny: Kullanıcının SQL Server’a bağlanmasını engeller (Tüm yetkileri geçersiz kılar). Deny seçilirse, kullanıcı hiçbir şekilde SQL Server’a erişemez.
2. Login:
Bu ayar, kullanıcının oturum açma durumunu belirler. Geçici olarak bir kullanıcının bağlantısını engellemek istiyorsanız bu seçenek seçilebilir.
Enabled: Kullanıcı SQL Server’a giriş yapabilir.
Disabled: Kullanıcının SQL Server’a giriş yapması engellenir. Disabled seçilirse, kullanıcıya Grant izni verilmiş olsa bile giriş yapamaz.
Kullanıcının sql server ile bağlantısını kesme istediğimizde login’i disable yapmak yeterli.

Disabled yaptığımızda bağlanamadığımızı görmekteyiz.

Disable edildiğinde The account is disabled hatası çıkar ama permission deny dersek sadece login failed for user olarak çıkar.

Aşağıdaki komut ile herhangi bir loginin sql server oturum açması engellenir.
USE [master]
GO
deny CONNECT SQL TO [ANKARA]
GO
select name,hasaccess,denylogin from syslogins where name ='ANKARA'

Burada sql server’a erişim iznini kapattık. Açtıktan sonra ise tam tersi gözüküyor.
USE [master]
GO
grant CONNECT SQL TO [ANKARA]
GO
select name,hasaccess,denylogin from syslogins where name ='ANKARA'

Aşağıda cmd komut satırından sql server authentication’la giriş yapabiliriz. SSMS olmadığı durumlarda komut satırından giriş yapılmaktadır.

Security bölümünde login’e tıklayıp F7 tuşuna basarsak bağlı olan tüm kullanıcıları görmüş oluyoruz. Aşağıdaki yerdende yapılabilir.

SQL Server’da Security > Logins > [Login Adı] > Securables bölümü, belirli bir Login’in SQL Server instance’ındaki (sunucu seviyesindeki) nesnelere erişimini ve yetkilerini yönetmek için kullanılır. Bu bölümde, kullanıcıya sunucu üzerindeki belirli nesnelere erişim izni verebilir, yetkilerini sınırlandırabilir veya tamamen engelleyebilirsin.

Yukarıdaki örneklerde login isimleri farklı olabilir önemsenmemesi gerekmektedir. Başka bir makalede görüşmek dileğiyle..
“Biz insana anne babasıyla ilgili öğütler verdik. Annesi, güçten kuvvetten düşerek onu karnında taşımıştır; çocuğun sütten kesilmesi iki yıl içinde olur. Bunun için (ey insan), hem bana hem anne babana minnet duymalısın; sonunda dönüş yalnız banadır.” Lokman-14