Etiket Bulutu

Benchmark Convert_IMplicit Database High Availability Database Mirroring datawarehouse dimension table dmv Dynamic Data Masking Execution Execution Plans fact table Failover Cluster Node ekleme Failover Clustering FileStream generate script High Availability Implicit Instant File Initialization index Kinect Linux Live Query Statistics Log Shipping Mirroring object explorer object explorer details ODBC Driver pass performance performance tuning Plan Handle Planü Power View reporting services rol Row Level Security script sql serer 2016 sql server SQL Server 2008 SQL Server 2008 Log Shipping SQL Server 2012 SQL Server 2012 installation SQL Server 2012 Kurulumu SQL Server Backup SQL Server da Backup planı SQL Server da Maintenance Plans oluşturma SQL Server database mirroring SQL Server Disaster Recovery sql server dynamic management views SQL Server Failover Cluster SQL Server High Availability SQL Server Log Shipping SQL Server Maintenace Plans sql server performans SQLDIAG SQLDIAG Troubleshooting T24 Temenos truncate table t-sql unique index performance 1. Dünya savaşı istatistikleri 1456 451 ACID advanced analytics Advanced Data Analytics Affinity algı Alter index Alter table ALTER TABLE .. ALTER COLUMN Altın Oran Always On ALWAYSON AlwaysOnDemoTool amazon web services kinesis AMR analiz analysis service Ankara Antivirus apache kafka Arduino Article Assembly asymmetric audit Authentication Auto Growth Availability Group azure Azure Backup azure event hub partition azure event hubs azure event hubs servisi azure event hubs veri edinme Azure File Share Azure Fiyatlandırma Azure HDInsight Azure Hizmet Modelleri Azure ML Azure New Portal Azure Pricing Azure Queue azure sql database configuration azure sql database kullanımı azure sql database stream veriyi tutma azure sql database table partitioning Azure Storage azure stream analytics azure stream analytics dashboard azure stream analytics ölçeklendirilmesi azure stream analytics servisi Azure Table BA Backup backup encyrption backupset Bakım BASE bellek Best Practice BI Semantic Model Big Data Big User blocking blocking disable trigger blocking enable trigger Buffer Cache buffer pool Buffer Pool Extension bulk logged Buluta Veri Depolama Buluttaki Disk Business Analytics Conference business intelligence Büyük Veri Case Central Management Server certificate changed data capture Cloud Computing Cloud DR CLR Cluster clustered columnstore index Clustered Index Code Snippets Cold Purging collation column store column-level columnstore ColumnStore Indexes Compress ComputerNamePhysicalNetBIOS Concurrency Conditions Contained Database Contained Databases convert CONVERT_IMPLICIT Corruption Credentials cube DAC Dashboard Tasarımı data cleansing Data Compression Data Consistency Model data encryption data matching data mining Data Page data profiling data quality Data Services Data Warehouse Design Database database list Database Management Sistem database master key Database Mirroring Database Snapshot database trigger database-level Data-Ink Ratio datasets datasource DataZen date date dimension db_owner DBA DBCC dbcc dropcleanbuffers dbcc freeproccache DBMS dbo user DDL deadlock debugging DecryptByKey DecryptByPassPhrase deleted bitmap delta store Denali Denali SSAS deny database list deşifre detail index developer DIFFERENTIAL BACKUP DirectQuery Dirty Read Disaster Recovery Distribution Yapılandırma Distributor Distributor Agent dm_server_services DMF DMO DMV document db dosya bazlı şifreleme dqs dr Dynamic Management Function Dynamic Management Object Dynamic Management View ecrypt Effected Report Design Techniques Eğitim EncryptByKey EncryptByPassPhrase encryption endpoint Environment Variable error Error 5030 Error Log Estetik Raporlama Estimated Rows Eş Zamanlılkk Etkili Rapor Tasarlama Teknikleri Etkinlik ETL event Event Viewer except;intersect;sql execution Execution Plan export formats extended events Extended Stored Procedure Facets Failover Failover Cluster fast n execution plan FETCH NEXT FILELISTONLY FILLFACTOR File Table file-level FileStream Filter Pack Filtered Index First_Value Flat File fn_repl_hash_binary Focal Point foreignkey FORMAT Forwarded Record forwarded_record_count ftp task FULL BACKUP Full Recovery Full-Text Search functions Gartner Geocluster Gerçek Zamanlı Dashboard gestalt Golden Ratio görsel duyu group by Güvenlik ha Hadoop hafıza Hash HASHBYTES HEADERONLY headers footers Heap Hekaton hicri High Availability hijr Hiyerarşi Hybrid Cloud IaaS Index Index Scan In-Memory InMemory DW In-Memory DW InMemory OLTP In-Memory OLTP Internet of People Internet of Things IO IOT IoT nedir Isolation Level indeks index inmemory in-memory oltp internet of things isolation level istatistik istatistikler İş zekası İzolasyon Seviyesi Job json json support knowledge base kolon-satır bazlı kurulum küp Lag Lansman latch Lead linked server lock locking locking hints Log Backup Log Reader Agent Log Shipping login Lost-Update LQS Machine Learning Maintenance Management Studio matrix Max Text Replication Size mdx memory Memory Optimization Advisor Memory Optimized Table Memory Optimized Tables merge Merge Agent merge kullanımı Merge Publication Merge Replication merge type 1 slowly changing dimension merge type 1 slowly changing dimension örneği merge type 1 vs type 2 scd merge type 2 slowly changing dimension merge type 2 slowly changing dimension örneği merge type 3 slowly changing dimension merge type 4 slowly changing dimension message Microsoft Advanced Data Analytics Çözümleri microsoft azure Microsoft Bulut Microsoft Sanal Akademi Microsoft SQL Server Microsoft SQL Server 2014 Yenilikleri Microsoft SQL Server 2016 Mirror mirroring missing index Monitoring move Msdb multi_user multiversion concurrency control MVP MVP Roadshow MySnippet Named Pipes Natively Store Procedures Natively Stored Procedures Nesnelerin İnterneti Network Binding Order NoEngine Approaches nonclustered columnstore index Non-Repetable Read NoSQL NoSQL Approaches NoSQL Dünyası object explorer Odak Noktası ODBC Office 365 Offline OFFSET olap OLAP Backup OLE DB OLTP Online Index order attributes Otomatik Büyüme OVER PaaS PAD_INDEX page out page properties PAGE RESTORE PAGEIOLATCH paging parameters partition partitioning PASS PASS Summit PASS Summit 2014 Performance Performance Tuning performans performans tuning Phantom Read pivot Policies Policy Based Management Filtreleme Policy Management Power BI Power BI Dashboard Power BI Rest API power bi power view PowerBI PowerBI for Office 365 powerbi PowerMap PowerPivot PowerQuery powershell powershell ile sql yönetimi PowerView PowerView raporlarının web sayfalarına gömülmesi precon Primary Key primarykey Project Deployment Model Project Variable Protokol Proxy Proxy Account Publisher Purging on Independent Tables QL Server 2014 Yenilikleri Que Reader Agent Query Plan query store R Range Raporlama Raporlama Projeleri için Strateji Belirleme Raporlama Projelerine Hazırlık Read Committed Read Uncommitted RealTime Dashboard Rebuild RECONFIGURE RECONFIGURE WITH OVERRIDE Recovery model Relational Engine relationships Rename SSRS Database Repeatable Read Replication Replication Monitoring replikasyon report manager web site report parts reporting service reporting services reporting servis Resource Governor RESTORE Restore Database Restore Generate Restore Generate Script Restore transaction log rollback rs Rule of Thirds sa user SaaS sayfalama scd 3 demo scd karşılaştırma scd type 4 demo Scheduling Schema Comparison script Security segment elimination select into Self-Service BI Semantic Search Serializable Server Core SERVERPROPERTY Service services shared data sources shared datasets Shared Memory sharepoint Sharepoint 2010 ShowPlan Shrink simple recovery sing_user sliding window Slowly Changing Dimension snapshot Snapshot Agent Snapshot Publication Snapshot Replication Snippet snowflake sorting sp_configure sp_describe_first_result_set sp_server_diagnostics sp_spaceused sql SQL Agent Job SQL Azure sql bilgi yarışması SQL CLR SQL DIAG SQL DIAG Performans verisi toplama SQL endpoint SQL Login SQL Onculeri SQL Öncüleri sql script sql server SQL Server 2005 SQL Server 2008 SQL Server 2011 CTP3 SQL Server 2011 Denali SQL Server 2012 SQL Server 2012 CTP3 SQL Server 2012 RC SQL Server 2012 RC0 SQL Server 2012 ShowPlan Enhancements SQL Server 2012 T-SQL Enhancements SQL Server 2014 Sql Server 2014 Cardinality Estimator SQL Server 2014 Yenilikleri sql server 2016 SQL Server 2016 New Features SQL Server 2016 Yenilikleri sql server agent sql server assembly ekleme SQL Server Authentication sql server cast ve convert sql server clr integration sql server clr kullanımı sql server clr örnek sql server cluster SQL Server Code Name Denali SQL Server da Kullanıcı Yaratma SQL Server Database Project sql server dmv ve dmf sql server execution plan temizleme SQL Server Express Backup sql server fast n option örneği sql server fast n seçeneği SQL Server login sql server management stdio sql server merge into örnek sql server merge komutu sql server merge performnas sql server merge type 1 scd sql server merge type 2 scd sql server merge type 3 scd SQL Server Mobile Report Publisher SQL Server Network Interface SQL Server Onculeri SQL Server Öncüleri SQL Server Öncüleri Ankara SQL Server Performance sql server performans SQL Server Profiler SQL server recovery model SQL Server Reporting Services SQL Server Restore Generate Script SQL Server sa SQL Server Security SQL Server SQL DIAG sql server tarih dönüşüm işlemi sql server tarihsel veriler ile çalışma SQL Server User SQL Server yetki SQL Server yetkilendirme sql servera .net kodu ekleme SQL Serverda yetkilendirme nasıl SQL Serverda yetkilendirme nasıl yapılır sql to oracle linked server sql türkiye SQL User With Password sql yarışma SQLCMD sql'den oracle'a linked server SQLDIAG SQLDIAG Report SQLOS sqlsaturay SQLSaturday SQLSaturday #182 SQLSaturday #359 sqlsaturday #451 sqlserveronculeri ssas SSAS 2012 SSIS SSIS 2012 ssis SSMS SSMS Project SSMS Solution ssrs Stanby Database star schema STOPAT STOPBEFOREMARK STORAGE Storage Engine stored procedure stream analytics job subreports Subscriber Subscription subscriptions symmetric SYS sys.dm_db_index_physical_stats sys.dm_db_index_usage_stats sys.dm_db_missing_index_columns sys.dm_db_missing_index_details sys.dm_db_missing_index_group_stats sys.dm_db_missing_index_groups sys.server_principals sysadmin System Databases System View şifre şifreleme table table difference TableHasClustIndex TableHasIdentity TableHasPrimaryKey Tablet PC Tabular Mode Tabular Model TCP/IP TDE Tempdb time series Transaction Transactional Publication Transactional Replication Transparent Data Encryption trigger Troubleshooting TRY_CONVERT TRY_PARSE tsql t-sql T-SQL 2012 tsql mistakes Undocument union unionall Updatable ColumnStore İndex upgrade Veri ambarı veri edinme seçenekleri Veri Güvenliği Veri Hizmetleri Veri madenciliği Veri Mürekkep Oranı Veri Tabanı Yönetim Sistemleri Veri Tipi Veri Tutarlılık Modelleri Veri Yönetimi Evrimi verinin evrimi Veritabanı oluşturmak VERİTABANI YEDEKLEME STRATEJİLERİ veritabanı yedeklerinin şifrelenmesi Veritabanı Yöneticisi Veritabanı Yönetimi VeritPaq view any database Visual Studio VTYS web services Webcast Windows 7 Windows 8 Windows Authentication Windows Azure Windows Failover Clustering wmi WRITELOG xevents xp_sqlagent_enum_jobs YEDEKLEME STRATEJİLERİ Yedekli Çalışma Yetkilendirme Yiğit Aktan ysfkhvc yusuf kahveci Yüksek Erişilebilirlik Yüksek Süreklilik zip

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

Ekleyen: Yavuz Filizlibay Mayasoft Dba Tarih:24.02.2015 Okunma Sayısı:3372


SQL SERVER GÜVENLİK KAVRAMI – BÖLÜM 2

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

SSS-29
Security sekmesine geliyoruz.

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.

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.

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.

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
CREATE LOGIN [yavuzsql] WITH PASSWORD=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.

ALTER LOGIN yavuzsql WITH PASSWORD = 'yeni_sifre' UNLOCK;

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

ALTER LOGIN fred WITH CHECK_POLICY = OFF;
ALTER LOGIN fred 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 yavuzsql DISABLE;
-- Hesabı aktifleştirir

ALTER LOGIN 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.

DENY CONNECT SQL TO yavuzsql;

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

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 * FROM sys.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
FROM sys.sql_logins
WHERE is_policy_checked = 0

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

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.

ALTER LOGIN yavuzsql WITH CHECK_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.

SELECT LOGINPROPERTY('yavuzsql', 'DaysUntilExpiration');


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”


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.


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


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.


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.


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.


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.


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


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.


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.

SSS-46
Bu ayar yapılmazsa, Sql Server Agent üzerindeki Alert’lerden mailler gelmez.
Sa kullanıcısına şifre denemeleri yapalım.

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

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.

ALTER LOGIN [sa] DISABLE

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

ALTER LOGIN [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 * FROM sys.sql_logins WHERE 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.

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.

SELECT role.name as role,role.is_fixed_role,login.name as login
FROM sys.server_role_members srm
JOIN sys.server_principals role ON srm.role_principal_id = role.principal_id
JOIN sys.server_principals login ON 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.

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.

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.

SSS-52
Bu ekrandan kullanıcıya yetkileri Grant ile verebilir, Deny ile de engelleyebiliriz.
T-Sql ile yapmak içinde,

GRANT ALTER ANY 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 * FROM sys.server_permissions


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
FROM sys.server_permissions SP
JOIN sys.server_principals SPR
ON SP.grantee_principal_id = SPR.principal_id
WHERE SPR.name = 'yavuzsql'


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.

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.

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.

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.

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.

SELECT SUSER_SNAME(owner_sid), name FROM sys.databases


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.

SELECT IS_MEMBER('yavuzsony\yavuz');


SSS-60

Diğer fonksiyonlarda aşağıdaki gibidir;
- SYSTEM_USER: Bağlı olan login hesabını gösterir

SELECT SYSTEM_USER veya SELECT SUSER_SNAME();


SSS-61

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

SELECT SUSER_ID();


SSS-62

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

SELECT CURRENT_USER;

SELECT SESSION_USER;


SSS-63

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

SELECT ORIGINAL_LOGIN();


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.

SELECT HAS_DBACCESS('ARGE');


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.

USE master;
GO
REVOKE VIEW ANY DATABASE TO public;

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

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.

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.

SSS-68
Search – Specify Objects

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

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.

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

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

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.

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

SSS_75
Edit yetkisi olmadığı için izin vermedi.
View’i komple silmeye çalışalım.

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.
 


yorum yaz

Üye Girişi

Kullanıcı Adınız

Şifreniz

Şifremi Unuttum

Arkadaşına Tavsiye Et

Tavsiye edebilmek için siteye giriş yapmalısınız