SQL New Login türleri
1.SQL Authenticantion
2.Windows Authenticantion
SQL Server üzerinde kullanıcı – login açmak için SS Management Studio – Security – Logins üzerinde sağ klik “New Login” diyorurz.
Açılan pencerede Login Name kısmından Login’imize bir isim veriyoruz.
Windows Authentication ile domain kullanıcısına SQL Server için yetki verilebilir. Search kısmından yetki verilmek istenen kullanıcı seçilebilir.
SQL Server Authentication seçildiğinde kullanıcı adını yazabilirsiniz. SQL Server’ın yönettiği hesaplar olduğu için Windows hesaplarından farklı olacaktır.
SQL Server Authentication seçildiği zaman karşımıza aşağıdaki seçenekler gelior bunların ne işe yaradığına beraber bakalım.
“Enforce password policy” – Domaindeki veya Windows işletim sisteminde password policy kuralları geçerli olur.
“Enforce password expiration” – Domaindeki veya Windows işletim sisteminde şifre geçerlilik süresi bu seçenek ile geçerli olur.
Aşağıdaki Script ile hangi kullanıcının password’un ne kadar süre sonra yenilenmesi gerektiğini bize göstermektedir.
-- SQL oturum açma parolasının süresi ne zaman dolacak? SELECT SL.name AS LoginName ,LOGINPROPERTY (SL.name, 'PasswordLastSetTime') AS PasswordLastSetTime ,LOGINPROPERTY (SL.name, 'DaysUntilExpiration') AS DaysUntilExpiration ,DATEADD(dd, CONVERT(int, LOGINPROPERTY (SL.name, 'DaysUntilExpiration')) , CONVERT(datetime, LOGINPROPERTY (SL.name, 'PasswordLastSetTime'))) AS PasswordExpiration ,SL.is_policy_checked AS IsPolicyChecked ,LOGINPROPERTY (SL.name, 'IsExpired') AS IsExpired ,LOGINPROPERTY (SL.name, 'IsMustChange') AS IsMustChange ,LOGINPROPERTY (SL.name, 'IsLocked') AS IsLocked ,LOGINPROPERTY (SL.name, 'LockoutTime') AS LockoutTime ,LOGINPROPERTY (SL.name, 'BadPasswordCount') AS BadPasswordCount ,LOGINPROPERTY (SL.name, 'BadPasswordTime') AS BadPasswordTime ,LOGINPROPERTY (SL.name, 'HistoryLength') AS HistoryLength FROM sys.sql_logins AS SL WHERE is_expiration_checked = 1 ORDER BY LOGINPROPERTY (SL.name, 'PasswordLastSetTime') DESC
“User must change password at next login” – Kullanıcı bir sonraki oturumunda şifresini değiştirmek zorunda kalır. SSMS ile bu şifre değiştirebilir.
“Default Database” – SSMS bağlanıldığında kullanıcı bazlı çalışılacak olan veritabanı otomatik olarak gelir.
“Default Language” – SSMS üzerindeki dil ayarları, format ve hata mesajları istenen dilde bu seçenek ile ayarlanabilir.
Enforce password policy ve pasword expiration seçeneklerinin SQL logini için seçilmesi, basit şifrelerin kullanılmasının önüne geçeceği gibi, uzun süre değiştirilmeyen şifreler içinde tedbir olacaktır.
bunların kullanılması aslında güvenlik açısından hem DBO hem de kullanıcı için önemlidir.
T-SQL kodu ile SQL login aşağıdaki gibi oluşturulmaktadır.
GO CREATE LOGIN [furkank] WITH PASSWORD=N’Guclu_bir_sifre’ MUST_CHANGE, DEFAULT_DATABASE=[Database], DEFAULT_LANGUAGE=[Türkçe], CHECK_EXPIRATION=ON, CHECK_POLICY=ON GO
Problem oluşturabilecek durumlar:
- Password policy seçili olan bir SQL hesabında, şifre denemesi aynı Windows hesabında olduğu gibi geçerlidir. Yanlış girilen şifrelerden dolayı SQL hesabı kilitlenebilir. SQL hesabının kilidini açmak için aşağdaki T-SQL kodu çalıştırılır.
ALTER LOGIN furkank WITH PASSWORD = ‘yeni_sifre’ UNLOCK;
- Şifre değiştirilmek istenmiyor ise, aşağıdaki komutlar ile çalıştırılır.
ALTER LOGIN furkank WITH CHECK_POLICY = OFF; ALTER LOGIN furkank WITH CHECK_POLICY = ON;
- Bir SQL hesabını devre dışı bırakmak veya tekrar aktifleştirmek için aşağıdaki T-SQL kodu kullanılır.
Hesabı devre dışı bırakır.
ALTER LOGIN furkank DISABLE;
Hesabı aktifleştirir.
ALTER LOGIN furkank ENABLE;
- Bir SQL hesabını silince, bu hesabın tüm ayarları kaybolur, tekrar bu hesabı oluşturduğunuzda tüm tanımları yeniden yapmanız gerekmektedir. Bu sebeple, hesabın SQL Server’a erişimimi kapatarak, hesabı silmeden kullanıcının SQL Server’a erişimini engelleyebilirsiniz.
DENY CONNECT SQL TO furkank;
Bu ayarları kullanıcının Properties sayfasındaki Status sekmesinden de yapabilirsiniz.
- SQL Server da oturumları yönetebilirsiniz.
Şu anda devre dışı bırakılmış olan SQL Server Oturumları:
select * from [sys].[sql_logins] WHERE [is_disabled] = 1 ;
Parola politikasına uymayan SQL Server Oturumları:
select * from [sys].[sql_logins] WHERE [is_policy_checked] = 0 ;
Kullanıcı hesaplarının güvenlik ile alakalı kısımlarından bahsettik. Login – Properties’in diğer sekmeleri olan Server Roles, User Mapping ve Securables bölümleri kullanıcının SQL Server içindeki erişim izinleri ile alakalıdır.
Select * from Sys.Sql_logins ve Select * from Sys.syslogins Tüm kullanıcıları gösterir hatta bu komutla Createdate, updatedate alanlarınıda görebiliriz.
Arkadaşlar burada SQL Authenticantion ile Windows Authenticantion kullanıcısı ile ilgili bilgileri mutlaka bilmemiz gerekmektedir.
Ayrıca AlwaysOn olan sistemlerde kullanılacak işlemler değişiklik gösteriyor.
Burada kısacası bu durumlardan bahsedeceğim.
AlwaysOn olan yapılarda yedekleme mantığı bulunmakta bu sebepten dolayı bu sistemlerde yeni bir kullanıcı oluşturacağımız zaman ya da var olan kullanıcıya yetki ekleme veya çıkarma işlemlerde kesinlikle Primary olan makinemizde olduğumuzdan emin olmalıyız.
AlwaysOn olan makinelerde oluşturduğumuz kullanıcıyı şu komut ile ”sp_help_revlogin ‘oluşturulan kullanıcı ’ CREATE Script ‘ini alıp
Secondary olan makinelerde çalıştırmalıyız. Bu sayede AlwaysOn olan sistemlerde yedek makinelere geçiş yapıldığı zaman yani Secondary olan makineler Primary olduğu zaman kullanıcıların bağlantı problemi ve yetkilerinde herhangi bir problem olmaması için “CREATE Script” ile oluşturulması gerekmektedir.
Şimdi gelelim SQL Authenticantion ile Windows Authenticantion bilinmesi gerekenlere
- SQL Server Authenticantion ile oluşturulan kullanıcılar Active Directory ile herhangi bir bağlantısı olmadan kullanabileceğiniz kullanıcı türüdür.
- SQL Server Authentication’ı dışarıdan erişecek ve domain yapınızın dışından erişecek kullanıcılar için açabilirsiniz.
- SQL hesapları, SQL Server’ın içinden yönetilir, Windows hesapları ile bir bağlantısı yoktur.
- SQL Server’daki kullanıcıların hesaplarına Logins denmektedir. Her bir login’e ayrı yetkiler verilebilir, erişebileceği veri tabanları belirlenebilir.
- SQL Server’da güvenlik seviyesi iki katmandan oluşur Server ve Veritabanı seviyesi. Login hesabı ilk önce server seviyesi oluşturulur, daha sonra ilgili veri tabanına mapped denilen ataması yapılır ve veri tabanına erişimi sağlanmış olur.
Burada Active Directory dediğimiz kısa bir bilgi olarak şu şekilde açıklayabilirim.
Kullandığınız bilgisayarınız Domain’e yani bir ağ ortamını alınarak kullanıcıların yönetilmesidir.
Windows Authenticantion kullanarak oluşturulan kullanıcılar Active Directory ile parola kontrolü yapan login çeşitidir.
- Burada kullanıcı kendisi ID ve Password belirleyemez ve Domaine alınmış olan bilgisayarlar üzerinden Windows oturum açtığı ID ve Password ‘u ile giriş yapmaktadır.
- Sadece Windows hesaplarından açılan oturumları kabul eder.
- Unutmayalım Sadece kullanmış olduğu bilgisayardan değil Active Directory ‘in kullanmış olduğu Ağ ve Domaine alınmış tüm bilgisayarlardan giriş sağlayabilir.
Benim anlatacaklarım buraya kadardı eksik veya anlamadığınız yer olursa lütfen yorumlarda bunları dile getirin.
Bilgi Paylaştıkça çoğalır.
SQL SERVER ENCRYPTION HIERARCHY (COLUMN LEVEL ENCRYPTION) - VERITABANI.ORGVERITABANI.ORG 14 Şubat 2024
[…] bir kullanıcı oluşturalım (kullanıcı oluşturma konusunda detaylı bilgi için; veritabani.org/sql-server-create-new-user/) ve bu kullanıcı ile SSMS girişi yaparak şifreyi bildiğimiz takdirde kriptolu veriyi açıp […]