Quantcast
Channel: ÇözümPark
Viewing all articles
Browse latest Browse all 4130

Sql Server Güvenlik Kavramı – Bölüm 2

$
0
0

İlk bölümde Sql Server’ın kurulu olduğu server ve network üzerindeki güvenlik ayarlarından bahsettik. Bu bölümde, Sql Server’ın kendi içindeki güvenlik tanımlamalarından bahsedeceğiz. Kimlik doğrulama seçenekleri, kullanıcı yönetimi, Sa kullanıcısının yetkileri, kullanıcı rolleri ve veritabanı yetkileri hakkındaki detaylara bakacağız.

Bölüm1

İlk olarak Sql Server’da kimlik doğrulama konusuna değinelim.

Kimlik Doğrulama:

               

Sql Server ile clientlar arasında iki çeşit kimlik doğrulama yöntemi vardır. Windows Authentication ve Sql Server Authentication. Sql Server kurulumunda hangi yöntem ile kimlik doğrulama yapacağınız size sorulur. Windows Authentication modu devre dışı bırakılamaz. Tek olarak Windows Authentication veya Sql Server – Windows Authentication modları bütünleşik olarak seçilebilir.

Kimlik doğrulama seçeneklerini görmek için, Sql Server Management Studio – Object Explorer instance adınız üzerinde sağ klik Properties

clip_image001

SSS-29

Security sekmesine geliyoruz.

clip_image002

SSS-30

“Windows Authentication mode” Sadece Windows hesaplarından açılan oturumları kabul eder.

“Sql Server and Windows Authentication mode” Hem Windows hem de Sql Server hesaplarından açılan oturumları kabul eder.

Server Authentication kısmında yaptığınız kimlik doğrulama yöntemlerinden sonra Sql Server servisinin yeniden başlatılması gerekmektedir.

Windows Authentication varsayılan olarak Sql Server kurulumunda seçili olarak gelmektedir. Öngörülen ve daha güvenli olan kimlik doğrulama seçeneğidir. Kullanıcı Sql Server’a kullanıcı adı ve şifre girmeden, Windows hesabı ile bağlanabilmektedir. Windows Authentication devre dışı bırakılamaz. Mixed mode seçili olduğunda aynı zamanda Windows Authentication kullanılabilmektedir.

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 Server hesapları, Sql Server’ın içinden yönetilir, Windows hesapları ile bir bağlantısı yoktur.

Msdn: http://msdn.microsoft.com/en-us/library/bb669066(v=vs.110).aspx

Sql Server Kullanıcı Hesapları:

 

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.

Sql Server üzerinde kullanıcı – login açmak için SS Management Studio – Security – Logins üzerinde sağ klik “New Login” diyorurz.

clip_image003

SSS-31

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.

clip_image004

SSS-32

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.

“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.

“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.

clip_image005

SSS-33

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.

Domain Password Policy Technet: http://technet.microsoft.com/en-us/library/cc264456.aspx

T-Sql kodu ile Sql login aşağıdaki gibi oluşturulmaktadır.

USE [master]

GO

CREATELOGIN [yavuzsql] WITHPASSWORD=N'Guclu_bir_sifre'MUST_CHANGE,

DEFAULT_DATABASE=[PLANLAMA],

DEFAULT_LANGUAGE=[Türkçe],

CHECK_EXPIRATION=ON,

CHECK_POLICY=ON

GO

 

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.

ALTERLOGIN yavuzsql WITHPASSWORD='yeni_sifre'UNLOCK;

-- Şifre değiştirilmek istenmiyor ise, aşağıdaki komutlar ile çalıştırılır

ALTERLOGIN fred WITHCHECK_POLICY=OFF;

ALTERLOGIN fred WITHCHECK_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

ALTERLOGIN yavuzsql DISABLE;

-- Hesabı aktifleştirir

ALTERLOGIN yavuzsql 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.

DENYCONNECTSQLTO yavuzsql;

 

Bu ayarları kullanıcının Properties sayfasındaki Status sekmesinden de yapabilirsiniz.

clip_image007

SSS-34

“Permission to connect database engine” – Kullanıcının Sql Server’a bağlanmasına izin/engel vermesi.

“Login” – Kullanıcı hesabının devre dışı/aktif edilmesi.

“Sql Server Authentication – Login is locked out” – Kilitlenen Sql Server hesabı buradan açılabilir.

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.

Sql Login Msdn: http://msdn.microsoft.com/en-us/library/aa337562.aspx

 

Sql Saldırılarından Korunma Yöntemleri:

               

Windows sunucularına saldırdıkları gibi, Sql Server’a aynı şekilde Brute-force denilen saldırı yöntemi ile ataklar sürekli olmaktadır. Windows tarafında kullanılan password policy eğer Sql tarafında kullanılmıyorsa, Sql Server’ınızda güvenlik olarak büyük bir açığınız var demektir. Sql login şifrelerini 12345 gibi basit şifreler koydu iseniz, kırılması sadece birkaç saniye sürecektir. Önerilen en temel şifreleme policy’si en az bir rakam, en az bir büyük harf, en az bir özel karakter olacak şekilde 8 karakterden az olmamak şartıdır. Şifrenizin ne kadar uzun ve ne kadar çok karmaşık olması brute-force ataklarından sizi daha iyi koruyacaktır.

Şifrenin uzun ve karmaşık olmasının yanı sıra, belirli periyodlarla değiştirilmesi gerekmektedir. Sürekli aylarca, yıllarca aynı kalan şifrelere uzun süren brute-force ataklar ile kırılabilmektedir.

İlk olarak Sql Server’ımızda kaç tane login-hesabınımız var bakalım.

SELECT*FROMsys.sql_logins

 

Sys.sql_logins Sistem  tablosundan tüm loginlerimizi bize getiriyor. Loginlerimizde password policy olmayan hesapları tespit etmemiz içn, SSMS üzerinde tek tek loginlerin özellikler sayfasına girmek çok fazla vakit kaybı olacaktır. Sql_logins tablosunda password policy olmayan hesapları tespit etmek için aşağıdaki sorguyu çalıştırıyoruz.

SELECT name, is_disabled

FROMsys.sql_logins

WHERE is_policy_checked = 0

 

İki tane Sql loginde password policy olmadığı gözüküyor.

clip_image008

SSS-35

Birden çok login hesabınız olduğunda password policyleri aktif etmeniz uzun sürecektir. Aşağıdaki sorgu ile login veya loginlerin password policylerini aktif hale getirebilirsiniz.

ALTERLOGIN yavuzsql WITHCHECK_POLICY=ON,

CHECK_EXPIRATION=ON;

 

Check_Expiration ile de şifre değiştirme süresini aktif hale getirmiş olduk. Şifrenin süresinin ne zaman dolacağınız aşağıdaki komut ile sorguluyoruz.

SELECTLOGINPROPERTY('yavuzsql','DaysUntilExpiration');

 

clip_image009

SSS-36

Şifreyi değiştirmek için 39 gün kaldığını gösteriyor.

Msdn: http://msdn.microsoft.com/en-us/library/ms161959.aspx

Sql hesabınıza şifre deneme saldırısı yapıldığında, bu denemeleri kendinize veya tanımlı kişilere mail olarak bildirebilirsiniz.

İlk olarak Sql Server Management Studio – Management – Database Mail bölümünde tanımlı bir Sql Database hesabı yapılandırmanız gerekiyor. Bunun Database maile sağ klik “Configure Database Mail”

clip_image010

SSS-37

Wizard karşılama ekranını Next ile geçiyoruz.

Set up Database Mail by performing the following task seçeneğini seçip Next ilerliyoruz.

clip_image012

SSS_38

Profil adını yazdıktan sonra Add butonuna tıklıyoruz.

clip_image014

SSS-39

New Database Mail Account ekranını aşağıdaki gibi dolduruyoruz. Sisteminizde bir Smtp server var ise, Smtp serverınızdan bir hesap ile Database mail oluşturabilirsiniz.

clip_image015

SSS-40

Ok dedikten sonra Manage Profile Security ekranında “Public Profiles” sekmesinde Public check box’ını işaretliyor  ve “Default Profile”i Yes olarak ayarlıyoruz.

clip_image017

SSS-41

Database mail hesabımız tanımlanmış oldu. Mutlaka aşağıdaki gibi bir test maili gönderip, Database mailin çalışıp çalışmadığını kontrol edin.

clip_image018

SSS-42

Mail tanımlarını yaptık, test mailini gönderdik. Sa hesabına şifre denemesi yapıldığında bize mail gelmesini istiyoruz.

Sql Server Agent üzerinde sağ klik New – Alert diyoruz. Yeni bir uyarı tanımlayacağız.

clip_image019

SSS-43

New Alert ekranında tanımları aşağıdaki gibi yazıyoruz.

clip_image021

SSS-44

Bu tanımdan sonra mail gelmesi için Response sekmesinde Notify Operators seçeneğini seçerek istenen kişilere mail gönderilmesi sağlanır. Eğer Operator tanımı yok ise New Operator ile yeni bir operatör tanımlanır. Tanımlanan operatör Response ekranına gelecektir.

clip_image023

SSS-45

Tüm ayarları yaptıktan sonra Database mailin Sql Server Agent için aktif edilmesi gerekmektedir. Database mail varsayılan olarak Sql Server içinde sys.send_mail prosedürü tarafından kullanılmak üzere ayarlanmaktadır. Sql Server Agent için Database maili aktifleştirmek içi, Sql Server Agent üzerinde sağ klik Properties ekranı açılır. Alert System sekmesindeki Enable Mail Profile ile aktifleştirme işlemi tamamlanır.

clip_image025

SSS-46

Bu ayar yapılmazsa, Sql Server Agent üzerindeki Alert’lerden mailler gelmez.

Sa kullanıcısına şifre denemeleri yapalım.

clip_image027

SSS-47

18456 nolu hatayı aldık, bakalım bu deneme Sql Server tarafından bize mail atıldı mı, mailimize gidip kontrol ediyoruz.

clip_image029

SSS-48

Operatöre Yahoo mailimi tanımlamıştım. Hatalı yapılan girişler mail olarak geldi.

 

Sa Hesabının Kısıtlanması:

 

Sa kullanıcısı ilk Sql Server çıktığından beri olan, System Administrator anlamına gelen, Sql Server’ın sistem yöneticisi hesabıdır. Eski Sql Server sürümlerinde devre dışı bırakılması mümkün değildi. Sql Server 2005 ile birlikte devre dışı bırakılması ve değiştirilmesi sağlandı.

Sa hesabını neden kapamalıyız veya neden kısıtlamalıyız, çünkü en çok saldırı alan Sql Server hesabıdır. Saldırganlar tarafından ilk önce kontrol edilen hesaptır, sa hesabında sistem yöneticiliği rolü olduğundan ilk önce bu hesap yoklanır. Birçok firmada sa hesapları aktif haldedir. Ne yazık ki kobi dediğimiz küçük ve orta boy ölçekteki bir çok firmada ise durum daha vahimdir. Bazı firmalarda halen sa hesabı aktif olup şifreside yoktur. Firma sahipleri etkili bir atak yedikten sonra, verileri çalınıp şifrelendikten sonra tedbir almaya başlarlar.

Sa hesabını aşağıdaki komutla devre dışı bırakıyoruz.

ALTERLOGIN [sa] DISABLE

 

Sa hesabının adını aşağıdaki komut ile değiştirebilirsiniz.

ALTERLOGIN [sa] WITH NAME = [test_kullanici]

Sa hesabının Securtiy ID’si (SID) 1 olduğundan daha aşağıdaki sorgu ile sa hesabının adını öğrenebilirsiniz.

SELECT*FROMsys.sql_loginsWHERE principal_id = 1

 

Sa hesabını SSMS üzerinden devre dışı bırakmak için. SSMS – Security – Logins Sa hesabına sağ tıklayıp özelliklerine giriyoruz.

Status sekmesinden aşağıdaki şekildeki gibi database engine için Deny, SSMS erişimi içinde Login Disable yapıyoruz.

clip_image030

SSS-49

Sql Server kurulumunda Windoıws Authentication seçeneği seçilerek kurulum yapıldı ise, sa devre dışı kalır. Sa şifresini hatırlamanıza gerek yoktur. Olabildiğince zor bir şifre koyarak sa hesabının adını değiştirmek gerekmektedir.

Msdn: http://msdn.microsoft.com/en-us/library/ms188670.aspx

 

Sql Server Rolleri:

 

Bir Sql Server hesabı varsayılan olarak hiçbir yönetici yetkisi olmadan oluşturulur. Bu role public rolü denir. Daha sonra hangi veritabanına erişmek istiyor ise Logins – Properties – User Mapping sekmesinden veritabanı yetkileri atanır. Eğer bir kullanıcıya yönetici yetkileri vermek istiyorsanız, Login’nin server roles sekmesinden gerekli rolü verebilirsiniz.

Sql Server’da roller aşağıdaki gibidir;

-          Bulk Admin: Bulk insert yapma yetkisine sahiptir. Bir dosyadan veritabanına kayıt eklemek için kullanılır. Genellikle excelden veri çekmek için kullanılmaktadır.

-          Dbcreator: Herhangi bir veritabanını oluşturma, düzenleme ve kaldırma yetkisi vardır. Yazılımcılara test amaçlı bu yetkiden verilebilir.

-          Processadmin: Sql proseslerini görme ve sonlandırma yetkisi vardır. Tüm çalışan prosesleri görebilirler. Kill komutu ile istenen proses veya prosesleri sonlandırabilirler.

-          Securityadmin: Sql hesabı oluşturup silebilirler. Server rolü oluşturma yetkileri yoktur.

-          Serveradmin: Sql server instance’ının özelliklerini değiştirebilir, yeniden başlatabilir veya hizmeti durdurabilirler.

-          Setupadmin: Linked server oluşturma yetkileri vardır.

-          Sysadmin: Tüm yönetici yetkilerine sahip roldür.

Sql Server hesaplarına atanmış olan rolleri aşağıdaki sorgu ile görebilirsiniz.

SELECTrole.name asrole,role.is_fixed_role,login.name aslogin

FROMsys.server_role_members srm

JOINsys.server_principalsroleON srm.role_principal_id =role.principal_id

JOINsys.server_principalsloginON srm.member_principal_id =login.principal_id

 

SSMS üzerinde bir kullanıcının rolünü ayarlamak için,

SSMS – Security – Logins bölümünde kullanıcının Properties ekranından Server Roles sekmesinden istenen rol kullanıcıya atanır.

clip_image031

SSS-50

Veritabanı Seviyesinde Kullanıcı Yetkisinin Yapılandırılması:

               

Sql Server’da kullanıcıya Server Roles verilmesi birçok yetkiyi de beraberinde getirir. Kullanıcı sadece istenen veri tabanlarında yetki istediği zaman, login özelliklerinden User Mapping sekmesinden istenen yetkiler atanabilir.

SSMS – Security – Logins kullanıcının properties sayfası açılır. User Mappings sekmesine gelip, hangi veritabanında nasıl bir yetki isteniyor ise “Database role membership for: <veritabanı_adi>” bölümünden ilgili yetkiler işaretlenir.

clip_image033

SSS-51

“Map” checkbox’I ile hangi veritabanında yetki verilecekse seçilir. Map seçildikten sonra yetkiler açılır. User otomatik olarak gelir, istenirse “Default Schema” dan varsayılan şema seçilebilir.

Veritabanı map edildikten sonra “ Database role membership for: “ alanından ilgili yetkiler seçilir. Database rolleri nedir, bunları inceleyelim.

Database Roles:

-          Db_accessadmin: Veritabanına erişim için yetki verir.

-          Db_backupoperator: Veritabanının yedek alması için yetki verir. Sistem yöneticilerine yedek alınan 3. Parti bir yazılımda kullanılmak üzere bu yetki verilebilir.

-          Db_datareader: Tablolardaki verileri okuma yetkisi verir. Sadece Select sorgusu kullanan ve Self Service raporlaama yapan son kullanıcılara bu yetki verilebilir.

-          Db_datawriter: Tablolardaki verileri düzenleme, silme veya ekleme yetkisi verir. Server bazında yetki kısıtlanarak farklı programlardaki farklı kullanıcılara bu yetki verilebilir.

-          Db_ddladmin: Veritabanı üzerinde DDL (Data Definition Language) komutlarını çalıştırma izni verir.

-          Db_denydatareader: Veritabanı üzerinde okuma işlemi yetkisini engeller.

-          Db_denydatawriter: Veritabanı üzerinde değiştirme, ekleme ve silme yetkisini engeller.

-          Db_owner: Veritabanı üzerindeki tüm yapılandırma ve bakım yetkilerini verir. Veritabanını drop etme yetkisine sahiptir. Owner, sahip anlamına gelmektedir.

-          Db_securityadmin: Veritabanı üzerindeki üyelikleri ve izinleri yönetme yetkisidir.

User Mapping Technet: http://technet.microsoft.com/en-us/library/ms178316(v=sql.105).aspx

Database Roles Technet: http://technet.microsoft.com/en-us/library/ms189121(v=sql.105).aspx

Server Seviyesinde Kullanıcı Yetkisinin Yapılandırılması:

 

Sql Server’da kullanıcılara yetki verme ve yetki kısıtlamaları detaylı olarak sunulmuştur. Doğru yapılandırıldığında sistem güvenliği daha da artaracaktır. Veritabanı seviyesindeki yetkileri gördükten sonra, Server seviyesinde de Sql Server bize yetkilendirme imkanı sunmaktadır.

SSMS – Security – Logins kullanıcının properties sayfasından Securables sekmesine geliyoruz.

clip_image035

SSS-52

Bu ekrandan kullanıcıya yetkileri Grant ile verebilir, Deny ile de engelleyebiliriz.

T-Sql ile yapmak içinde,

GRANTALTERANY CONNECTION TO yavuzsql;

 

Loginin Securables sekmesine baktığınızda Alter Any Connection bölümünde Grant’ın seçili olduğunu göreceksiniz.

Yetki verilen server permissionlarına aşağıdaki sorgu ile kontrol edilebilir.

SELECT*FROMsys.server_permissions

 

clip_image037

SSS-53

Kullanıcının izin verilen yetkileri aşağıdaki sorgu ile kontrol edilebilir.

SELECT SP.class_desc, SP.permission_name, SP.state_desc

FROMsys.server_permissions SP

JOINsys.server_principals SPR

ON SP.grantee_principal_id = SPR.principal_id

WHERE SPR.name ='yavuzsql'

 

clip_image038

SSS-54

Alter Any Connection için Grant yetkisi vermiştik, sorguda karşımıza çıkıyor.

Database level permission ile ilgili aşağıdaki posteri indirip detaylı inceleme yapabilirsiniz. Sql 2008 R2 ve Sql 2012 için geçerlidir.

Technet Poster: http://social.technet.microsoft.com/wiki/cfs-file.ashx/__key/communityserver-wikis-components-files/00-00-00-00-05/5710.Permissions_5F00_Poster_5F00_2008_5F00_R2_5F00_Wiki.pdf

Msdn: http://msdn.microsoft.com/en-us/library/ms191291.aspx

 

Veritabanı Kullanıcısı Yönetimi:

 

Loginler Sql Server’daki kullanıcı hesaplarıdır. Yönetilmeleri de dikkat ister, yetkileri detaylıdır. Database user yani veritabanı kullanıcısı ise sadece, ilgili veritabanındaki temel güvenliğe bağlıdır. Sql Server’a server bazında bir yetkilendirme yapmaya gerek kalmadan kullanabilir. Bu da gereksiz login açmaya gerek bırakmadan basit ve kolay bir güvenlik sağlar. Varolan bir logine Database user bağlanabilir, böylelikle sürekli login açmaya gerek kalmaz.

Veritabanı kullanıcısı açmak için SSMS – Databases – VeritabanıAdi – Security – Users bölümde sağ klik – New User ile yeni veritabanı kullanıcısını açıyoruz.

clip_image039

SSS-55

Database user ekranında, ilk olarak General sekmesi karşımıza geliyor, User Type alanında kullanıcının tipini seçiyoruz.

clip_image040

SSS-56

Kullanıcı tiplerine kısaca bakalım;

-          Sql user with login: Bir Sql login hesabına map edilmiş kullanıcı tipidir.

-          Sql user without login: Bir Sql login hesabına bağlanmamış kullanıcıdır, T-Sql de execute as user komutları ile kullanılabilir.

-          User mapped to a certificate/an asymetric key: Bir signature key’e atanmış kullanıcı tipidir.

-          Windows user: Windows Authentication hesabına map edilmiş kullanıcı tipidir.

Windows user’a map edilmiş bir kullanıcı oluşturalım. User Name kısmında kullanıcı adını yazıyoruz.

Kullanıcı adını yazdıktan sonra, database user’ı Windows User’a atamamız gerekiyor. Login name kısmından bu atamayı yapıyoruz.

clip_image042

SSS-57

İstenirse default schema da atanabilir.

Windows user map edilirken, domaindeki bir kullanıcıyı siz biliyor olabilirsiniz ama Sql Server bunu bilemez, bu yüzden Windows user olarak domaindeki kullanıcınızı Logins kısmından ilk önce Sql Server’a eklemeniz gerekmektedir. Browse for object dediğimizde karşımıza sadece Logins ekranında eklediğimiz Windows kullanıcıları gelecektir.

Owned Schema ve Membership sekmelerinden rol yetkilerini verebiliriz.

clip_image043

SSS-58

Veri tabanlarına atanmış olan Database owner yani veritabanı sahibi olarak atanmış kullanıcıları sorgulayarak, hangi veritabanında hangi kullanıcıların yetkileri var kontrol edebilirsiniz. Gereksiz gördüğünüz ve kullanılmayan hesapları mutlaka kapatın veya devre dışı bırakın.

Veri tabanlarındaki database owner ları görmek için aşağıdaki sorguyu çalıştırın.

SELECTSUSER_SNAME(owner_sid), name FROMsys.databases

clip_image044

SSS-59

Msdn: http://msdn.microsoft.com/en-us/library/aa337545.aspx

Sistem Fonksiyonları - Kullanıcı ve Login Bilgileri Kontrolü:

SSMS üzerinden kullanıcı ve loginleri ilgili ekranlara tek tek girerek incelemek gerekmektedir. Böyle bir işlem çok fazla zaman alacağından, Sql Server’ın sistem fonksiyonları ile kontrol edebiliriz.

Is_Member ile mevcut kullanıcının grup üyesi olup olmadığını kontrol edebilirsiniz.

SELECTIS_MEMBER('yavuzsony\yavuz');

clip_image045

SSS-60

 

Diğer fonksiyonlarda aşağıdaki gibidir;

-          SYSTEM_USER: Bağlı olan login hesabını gösterir

SELECTSYSTEM_USER veyaSELECTSUSER_SNAME();

 

clip_image046

SSS-61

 

-          SUSER_ID(): Mevcut kullanıcının Security ID’sini gösterir.

SELECTSUSER_ID();

clip_image047

SSS-62

 

-          CURRENT_USER / SESSION_USER: Mevcut  Database kullanıcısını gösterir.

SELECTCURRENT_USER;

SELECTSESSION_USER;

clip_image048

SSS-63

 

-          ORIGINAL_LOGIN: Windows hesabındaki kullanıcı adını gösterir.

SELECTORIGINAL_LOGIN();

clip_image049

SSS-64

 

-          HAS_DBACCESS('veritabani_adi'): Mevcut kullanıcının veritabanına erişimi olup olmadığını gösterir. 1 Değeri döner ise erişim var demektir.

SELECTHAS_DBACCESS('ARGE');

clip_image050

SSS_65

 

Msdn: http://msdn.microsoft.com/en-us/library/ms186236.aspx

 

Kullanıcılardan ve Sql Hesaplarından Ana Verileri Gizleme:

Sql serverdaki veritabanları ve diğer nesneler, yetkisi az olan bir kullanıcıya da açık olarak gelir. Gözükmesini istemediğiniz bu nesneler için engellemeler yapabilirsiniz. İlk olarak yapılması gerek public rolü için View Any Databases özelliğini kapatmak olacaktır.

 

USEmaster;

GO

REVOKEVIEWANYDATABASETOpublic;

 

Public rolündeki kullanıcımla SSMS’e giriş yapıp kontrol ediyorum.

clip_image051

SSS-66

Görüldüğü gibi yavuzsql kullanıcısında sadece ARGE veritabanını görme yetkisi vardı, Databases altında sadece ARGE gözüküyor.

clip_image052

SSS-67

 

Kullanıcı için bir veritabanındaki belli bir nesneye yetki vermek için, veritabanı içindeki Security - Users özellikler sayfasında, Securables sekmesinden gerekli izinler atanabilir. Örnek olarak bir stored procedure veya bir tablo bu ekrandan yetkilendirilebilir.

Kullanıcının üzerinde sağ klik Properties ekranına giriyoruz. Securables sekmesindeki Search’e tıklıyoruz.

clip_image054

SSS-68

Search – Specify Objects

clip_image055

SSS-69

Object Types’a tıklayıp seçebilecek nesneleri göreceğiz.

clip_image056

SSS-70

Select Object Types ekranında veritabanındaki tüm nesnelerin ana grupları gözükmekte. Örnek olarak View seçip Ok ile devam edelim.

clip_image057

SSS-71

Select Objects ekranında Browse diyoruz. Hangi nesne tipini seçersek, onunla ilgili kayıtlar gelecektir.

clip_image058

SSS-72

Sistem viewleri dahil veritabanındaki tüm viewler geldi. Daha önce oluşturduğum arge_view’i seçiyorum.

clip_image060

SSS-73

Select Objects ekranına view geldi, Ok ile devam ediyoruz.

Securables ekranına view geldi. Görüldüğü detaylı bir yetkilendirme var, sadece Select ve View Definition’a Grant yetkisi verip Ok diyorum.

clip_image062

SSS-74

View üzerinde sağ klik Edit top 200 rows diyelim, verilerde değişiklik yapmaya çalışalım.

clip_image064

SSS_75

Edit yetkisi olmadığı için izin vermedi.

View’i komple silmeye çalışalım.

clip_image065

SSS_76

Yetki olmadığı için silmeye izin vermedi.

Technet: http://technet.microsoft.com/en-us/library/ms190785(v=sql.105).aspx

Sql Server’da kullanıcı yetkilerinin ne kadar detaylı olduğunu görmüş olduk. Genelde uğraşmamak için loginlere sysadmin yetkisi verilir. Firmaya yeni bir yazılım alınır, yazılımcı firma Sql de bir kullanıcı ister ve Sql kullanıcısı sysadmin olarak açılır. Genel senaryo bu şekilde oluşur, siz farkında olmadan verilerinizi başka bir firmadaki kişiye teslim etmiş oluyorsunuz. Bir yanlışlık yapıldığında da geri dönülmesi zor hatalara yol açabilir.

Saldırganlarda bu açıklardan faydalanarak, sql loginlerindeki yetkileri kontrol ederler. Gerekli tedbirler alınmayan sistemlerde saldırgan, kıyıda köşede kalmış bir Sql hesabı ile istediği zararı verebilir.

 


Viewing all articles
Browse latest Browse all 4130

Trending Articles


Mide ağrısı için


Alessandra Torre - Karanlık Yalanlar


Şekilli süslü hazır floodlar


Flatcast Güneş ve Ay Flood Şekilleri


Gone Are the Days (2018) (ENG) (1080p)


Yildiz yükseltme


yc82


!!!!!!!!!! Amın !!!!!!!!!


Celp At Nalı (Sahih Tılsım)


SCCM 2012 Client Installation issue