İçerikleri sosyal medya üzerinden paylaşarak daha fazla kişiye ulaşmasına yardımcı olabilirsiniz.




Kategori: MS SQL Server
Fırat Boyan 18.11.2015 14

SQL Server 2014'te WAN Bağlantı Ayarları Yapılandırma ve Kullanıcı Rolleri Tanımlama

SQL Server’ın dışarıya açılması ve kullanıcı rolleri belirlenmesi, büyük Network altyapılarında veritabanı erişiminin güvenli ve verimli bir şekilde yönetilmesi için kritik bir aşamadır. Bu süreçte, yalnızca temel yapılandırma adımları değil, aynı zamanda derinlemesine güvenlik ve erişim politikalarının da devreye sokulması gerekir. Aksi takdirde, veri ihlalleri veya yetkisiz erişimler gibi riskler ortaya çıkabilir. SQL Server'ı dışarıdan erişime açarken Firewall, Port yönetimi, Authentication yöntemleri ve Role-Based Access Control (RBAC) gibi konularda teknik bilgi birikimi gereklidir.

SQL Server’ın dışarıya açılmasında ilk adım, Network güvenliğini sağlamak amacıyla Firewall kurallarının detaylı bir şekilde yapılandırılmasıdır. SQL Server, varsayılan olarak TCP/IP üzerinden 1433 Port'unu kullanır. Ancak, bu portun açık tutulması, SQL Server’ın internete doğrudan maruz kalmasına neden olabilir ve potansiyel saldırılara karşı savunmasız hale getirir. İyi bir güvenlik pratiği olarak, SQL Server dinleme Port'unun değiştirilmesi ve Windows Firewall üzerinde bu yeni portun dışarıdan gelen bağlantılar için açılması önerilir. Ayrıca, SQL Server’ın dış Network üzerinden güvenli bir şekilde erişilmesi için Virtual Private Network (VPN) kullanımı tercih edilebilir. VPN, dış bağlantıların şifreli bir tünel üzerinden gerçekleşmesini sağlayarak güvenliği önemli ölçüde artırır.

Network’ün dış erişimlerinde, IP adreslerinin filtrelenmesi ve belirli IP aralıklarına erişim izni verilmesi en iyi güvenlik uygulamalarından biridir. IP Allow List ile yalnızca tanımlanmış IP adreslerinin SQL Server’a bağlanabilmesi sağlanırken, aynı zamanda port tarama ve brute force saldırılarının önüne geçilmiş olur. Özellikle SQL Server’ın bulut ortamında barındırıldığı senaryolarda, bu tür güvenlik önlemleri büyük önem taşır.

Bir diğer önemli adım ise SQL Server’da Authentication modlarının doğru şekilde seçilmesidir. SQL Server, Windows Authentication ve SQL Server Authentication olmak üzere iki temel Authentication (kimlik doğrulama) modu sunar. Windows Authentication, Active Directory ile entegre çalışır ve Windows Domain kullanıcılarının yetkilendirilmesini sağlar. Dış Network üzerinden erişimlerde ise SQL Server Authentication daha yaygın kullanılır, çünkü kullanıcı adı ve şifre ile oturum açmayı mümkün kılar. Ancak, SQL Server Authentication kullanırken şifre politikalarının sıkı tutulması ve güvenlik açığı oluşturabilecek zayıf şifrelerin engellenmesi gerekir. Bu bağlamda, şifrelerin en az 12 karakter, büyük ve küçük harfler, rakamlar ve özel karakterler içermesi önerilir. Ayrıca, Enforce Password Policy ve Enforce Password Expiration gibi SQL Server ayarları aktif edilerek, şifrelerin belirli aralıklarla yenilenmesi ve karmaşıklık gereksinimlerine uygun hale getirilmesi sağlanabilir.

SQL Server’daki kullanıcıların yetkilendirilmesi de büyük bir öneme sahiptir. SQL Server, Role-Based Access Control (RBAC) modeli ile kullanıcıların görevlerine uygun roller tanımlanmasını sağlar. SQL Server’daki roller; Server-level Roles, Database-level Roles ve Application Roles üç ana gruba ayrılır. Server-level Roles, kullanıcıların SQL Server sunucusu genelinde yetkilere sahip olmasını sağlarken, Database-level Roles yalnızca belirli veritabanları üzerinde işlem yapma yetkisi verir. Application Roles ise uygulamalar aracılığıyla SQL Server’a erişen kullanıcıların belirli bir görev için geçici yetkiler almasını sağlar. Bu roller sayesinde, SQL Server yöneticileri hangi kullanıcıların hangi işlemleri yapabileceğini çok net bir şekilde belirleyebilir ve gereksiz yetki verilmesinin önüne geçebilir.

Özellikle dışarıdan erişimlerde minimum yetki prensibine (Principle of Least Privilege) bağlı kalınmalıdır. Bu prensibe göre, kullanıcılar yalnızca işlerini yapabilmeleri için gerekli olan minimum yetkilere sahip olmalıdır. Örneğin, bir kullanıcı yalnızca veritabanı üzerinde SELECT işlemi yapabiliyorsa, bu kullanıcının INSERT, UPDATE veya DELETE gibi daha geniş yetkilere sahip olması gereksizdir ve güvenlik açısından risk oluşturabilir. Aynı şekilde, sysadmin yetkisine sahip kullanıcıların sayısı da mümkün olduğunca sınırlandırılmalıdır. SQL Server’da sysadmin rolüne sahip bir kullanıcı, sistem üzerinde tam yetki ile işlem yapabilir ve bu nedenle dışarıdan gelen bağlantılar için bu rolün kullanılması oldukça risklidir.

Veritabanı yönetiminde dış erişimlerde dikkat edilmesi gereken bir diğer konu da Auditing ve Monitoring politikalarının etkinleştirilmesidir. SQL Server’da dışarıdan gelen tüm bağlantıların ve yapılan işlemlerin izlenebilmesi için Auditing özelliği kullanılabilir. Özellikle yüksek hassasiyet taşıyan verilerin yönetildiği sistemlerde, kimlerin hangi veriye eriştiği ve ne tür işlemler yaptığı gibi detayların takip edilmesi, olası güvenlik ihlallerinin tespiti açısından kritik öneme sahiptir. Auditing ile birlikte SQL Server’ın Extended Events ve SQL Server Profiler gibi araçları da kullanılarak, dış bağlantılar sürekli olarak izlenebilir ve anormal aktiviteler tespit edilebilir. Anormal aktivitelerin tespiti halinde, anında aksiyon alınması için e-posta ya da SMS ile bildirim yapılmasını sağlayan uyarı sistemleri de kurulabilir.

1- SQL Server WAN Bağlantı Ayarları Yapılandırma

İlk adım olarak, SQL Server'a WAN ortamından, yani (ör. şirket dışından) bağlantı kurulabilmesi için gerekli olan teknik hazırlığı yapmam gerekiyor.

1.1- SQL Server 2014 Configuration'ı çalıştırıyorum.

sql server dışarıdan bağlanma

1.2- SQL Server 2014 Configuration Manager, SQL Server'ın servislerinin bulunduğu yönetim arabirimidir. Configuration penceresinden SQL Server Network Configuration altında bulunan Protocols for MSSQLSERVER'ı tıklıyorum. 

sql server dışarıdan bağlanma

1.3- Sağ tarafta bulunan TCP/IP, Disabled durumda. Sağ tıklayarak Enable duruma getiriyorum. 

sql server dışarıdan bağlanma

1.4- Karşımıza, yapılan değişikliklerin servisin yeniden başlatıldığında gerçeli olacağını belirten bir uyarı penceresi çıkıyor. OK tıklıyorum. 

sql server dışarıdan bağlanma

1.5- TCP/IP Protocol Enabled durumda. Buradan sağ tıklayarak Properties'i tıklıyorum.

sql server dışarıdan bağlanma

1.6- TCP/IP Properties penceresinden IP Addresses sekmesini açarak WAN için kullandığınız Network Interface Card (NIC) hangisi ise, burada IP Address alanına Server IP adresini giriyor, Apply butonuna basıyorum. 

sql server dışarıdan bağlanma

1.7- Aynı şekilde, yapılan değişikliklerin servisin yeniden başlatıldığında gerçeli olacağını belirten bir uyarı penceresi çıkıyor. OK butonuna tıklıyorum. 

sql server dışarıdan bağlanma

1.8- Windows + R tuş kombinasyonu ile Run'ı çalıştırıp services.mcs ile servislerin bulunduğu alanı açıyorum. Burada, SQL SERVER(MSSQLSERVER) servisini Restart ediyorum.

sql server dışarıdan bağlanma

1.9- Servis, Restart oluyor.... 

sql server dışarıdan bağlanma

1.10- Görüldüğü gibi, Server'ımın DNS kaydı mevcut. Ben SQL Server Kurulumu yaparken Named Instance seçtiğim ve ilk kurulum yapan da ben olduğum için SQL Server, Server'ımın adını atadı. Buraya Server IP adresi ile de bağlanabilirim. Bu kısım özellikle makale sonunda Windows Server 2012 R2 üzerinde çalışan SQL Server'a uzaktan bağlantı yaparken DNS isim çözümlemesi yaptığı için hem Server IP'si, hem de Host Name ile bağlantı kurabiliyor olacağıma değineceğim.

sql server dışarıdan bağlanma

2- SQL Server Kullanıcı Oluşturma ve Kullanıcı Rolleri Tanımlama

2.1- Sıra geldi WAN üzerinden yani şirket dışında başka bir ortamdan SQL Server'a bağlantı kuracak olan Kullanıcıyı oluşturup gerekli rollerini atamaya..
Kullanıcı adını tanımladıktan sonra, dışarıdan bağlantı kurabilmesi için SQL Server authentication'ı seçmek durumundayız. Burada oluşturacağımız kullanıcı için bir Şifre belirletikden sonra OK butonuna basmamız yeterli olacaktır. 

sql server dışarıdan bağlanma

2.2- Oluşturduğumuz kullanıcının Security > Logins altında yer aldığını görebiliyoruz. Bundan sonraki adımlarda, Kullanıcıya ihtiyaç dahilinde Rollerin ve İzinlerin atanması işlemini uygulamak için kullancı üzerinde sağ tıklayıp Properties tıklayın. 

sql server dışarıdan bağlanma

2.3- Ben yetkilendiremeden de bahsetmek istediğim için oluşturdum FIRAT kullanıcısı üzerinde sağ tıklayıp Properties'e tıklıyorum.

sql server dışarıdan bağlanma

A- SQL Server Server Rolleri

Login Properties penceresinde Server Roles alanında kullanıcının veri tabanı sunucusunun çalışması ile ilgili işlemlerin yürütülmesine yönelik rollerin atandığı alandır. Daha başka bir ifade ile; oluşturulan kullanıcının atandığı veritabanda yürüteceği yönetimsel rolleri, yani Server rollerini belirler.  Bir Sql Server hesabı, varsayılan olarak hiçbir yönetici yetkisi olmadan oluşturulur. Bu role de public rolü denir. Oluşturduğunuz bir kullanıcıya yönetici yetkisi vermek istiyorsanız, gerekli yetkiyi bu alandan vermeniz gerekiyor.

SQL Server Yönetimsel Roller

» bulkadmin (BulkInsertAdministrator): Toplu ekleme yöneticisi. Toplu Insert işlemlerini yerine getirir.

NOT: Genelde başka bir veri kaynağından ya da Excel'den veri çekme işlemleri için kullanılır.

» dbcreator (Database Creators): veri tabanı oluşturucusu. veri tabanı oluşturulması ve değiştirilmesi işlemlerini yönetir.

NOT: Bu role sahip olan kullanıcı, herhangi bir veri tabanı oluşturabilir, silebilir veya düzenleyebilir. Yazılımcılara test amaçlı bu yetki verilebilir.

» diskadmin (Disk Administrator): Disk yöneticisi. veri tabanı dosyalarını yönetir.

» processadmin (Process Administrator): İşlem yöneticisi. SQL Server'daki process'leri kontrol eder.

NOT: Bu role sahip olan kullanıcı, çalışan tüm process'leri görebilir, kill komutu ile istenen process'leri sonlandırabilir.

» public (Herkese Kısıtlı Hak): SQL Server üzerinde standart ayarlarla giriş yapan herkesin atandığı roldür. Bu kural ile tüm kullanıcıların kısıtlı hakları vardır. Daha sonra bu kullanıcılara kural değişikliği yapılarak diğer kurallar atanabilir.

» securityadmin (Seurity Administrator): Güvenlik Yöneticisi. SQL Server login bilgilerini yönetir.

NOT: Bu role sahip olan kullanıcı, SQL Server hesabı oluşturup silebilir. Rol oluşturma yetkisi yoktur.

» serveradmin (Server Administrator): Sunucu yöneticisi. Sunucu temelli ayarlamalardan sorumludur.

» setupadmin(Setup Administrator): Kurulum yöneticisi. SQL Server Raplication'ı kurar.

NOT: Bu role sahip olan kullanıcı, Linked Server oluşturma yetkileri vardır.

» sysadmin(System Administrator): Sistem yöneticisi. Server'daki hemen her işi yapabilir.

NOT: Bu role sahip olan kullanıcı, tüm yönetici yetkilerine sahip olur.
 
sql server dışarıdan bağlanma

B- SQL Server Database (Veri tabanı) Rolleri

Sql Server’da kullanıcıya Server Rolleri verilmesi, birçok yetkiyi de beraberinde getirir. Kullanıcıya sadece istenen veri tabanlarında yetki verilmek istendiği zaman Login Properties penceresinde User Mapping alanında kullanıcının atandığı veri tabanına bağlandığında hangi yetkilere (rollere) sahip olacağını, yani Database (Veri tabanı) Rollerini belirliyoruz. Kullanıcıyı birden fazla veri tabanına da atayabilirsiniz ancak ben, örnek olarak FIRAT kullanıcısını dukkan isimli veri tabanına atadım. Kullanıcım sadece atandığı veri tabanı üzerinde, kullanıcı rolleri dahilinde işlem yapabilir. veri tabanı Kullanıcı rolleri; veri tabanına veri eklenmesi, silinmesi, veri okuma, veri yazma, nesne sahipliği, erişim ayarlamaları vb. konularda tanımlı rollerdir ve veri tabanı seviyeli işlemler olduklarından, veri tabanı kullanıcılarına verilebilir.

Database (Veri tabanı) Kullanıcı Rolleri

» db_accessadmin: veri tabanı yöneticisi.

» db_backupoperator: veri tabanı Yedekleme Operatörü.

» db_datareader: veri tabanı Okuyucusu.

» db_datawriter: veri tabanı Veri Yazıcısı.

» db_ddladmin: veri tabanı DDL Yöneticisi.

» db_denydatareader: veri tabanı engelli veri okuyucu.

» db_owner: veri tabanı sahibi.

» db_security: veri tabanı güvenlik yöneticisi.


sql server dışarıdan bağlanma

C- SQL Server Server Seviyesinde Kullanıcı Yetkileri Yapılandırılma

Login Properties penceresinde Securables alanında kullanıcının SQL Server erişimi ile ilgili tüm güvenlik ayarlarını yapılandırabilirsiniz. Örneğin, aşağıdaki ekran görüntüsünde de görüldüğü gibi kullanıcıya, sa (System Admin) tarafından Connect SQL yani SQL Server'a bağlanma yetkisi verilmiş. İhtiyacınıza göre diğer ayarları da buradan yönetebilirsiniz.

sql server dışarıdan bağlanma

Kullanıcımızı oluşturup gerekli rol ve izin atamaları yaptıktan sonra (Internet bağlantısını VPN ile sağladığınızı varsayarak) şirket dışından Server Name kısmına Server IP adresini yazarak bağlantımızı gerçekleştirebiliriz.

ÖNEMLİ!: VPN bağlantısı yoksa, Server Name kısmına Firewall veya Router'ınızın dışarıya bakan kısmındaki (WAN) IP adresini (ISP'nin sağladığı INTERNET IP) yazmanız gerekmektedir. Ayrıca, Firewall veya Modem üzerinden SQL Server IP'sine NAT (yönlendirme) işleminin de önceden yapılmış olması gerekmektedir.

sql server dışarıdan bağlanma

Bu noktada şunu da unutmamak gerekiyor; Windows Server 2012 R2 üzerinde çalışan SQL Server'a uzaktan bağlantı yaparken DNS isim çözümlemesi yaptığı için hem Server IP adresi hem de Host Name (bende SRV001) ile bağlanabiliriz. Ben, Windows Server 2012 R2 üzerinde çalışan SQL Server'a başarılı bir şekilde giriş yaptım.

sql server dışarıdan bağlanma

SQL Server’ın dışarıya açılması ve kullanıcı rolleri yönetimiyle ilgili yapılan tüm adımlar, bir veritabanı sisteminin güvenliği ve işlevselliği açısından büyük önem taşır. Bu süreçlerdeki her bir karar, sistemin uzun vadeli stabilitesini ve dış tehditlere karşı dayanıklılığını belirler. Özellikle dış erişime açık olan sistemlerde, güvenlikten ödün vermeden performans ve erişilebilirlik sağlamak, hem teknik bilgi hem de stratejik bir yaklaşım gerektirir.

Bu noktada, güvenlik politikalarının sıkı bir şekilde uygulanması ve minimum yetki prensibine bağlı kalınması, olası tehditlere karşı savunma mekanizmalarının temelini oluşturur. Sistem yöneticilerinin her zaman proaktif bir yaklaşım sergilemesi, yani olası saldırılara karşı önceden önlem alması, riskleri minimuma indirgeyecektir. Aynı zamanda, kullanıcı yetkilendirmelerinin ve erişim kontrol mekanizmalarının düzenli olarak gözden geçirilmesi, sistemin zaman içinde değişen ihtiyaçlara uyum sağlaması açısından önemlidir.

Son olarak, SQL Server’ın dış erişimi ve kullanıcı rolleri yönetimi, sadece teknik bir süreç değil, aynı zamanda işletmenin veritabanı yönetim politikalarını ve güvenlik stratejilerini uzun vadeli olarak şekillendiren kritik bir unsurdur. Bu süreçleri doğru bir şekilde ele almak, işletmelere yalnızca güvenli bir altyapı sunmakla kalmaz, aynı zamanda büyüyen iş ihtiyaçlarına uygun esnek ve ölçeklenebilir bir veritabanı yönetim ortamı sağlar.

Faydalı olması dileğiyle...


Her türlü görüş ve önerilerinizi aşağıdaki yorum panelinden bırakabilir, kafanıza takılanları veya merak ettiklerinizi sorabilirsiniz.



Yazar Hakkında

firatboyan.com


1985 yılında Alanya'da doğdum. İlk, orta ve lise öğrenimimi Alanya'da tamamladım. Liseden mezun olduktan sonra Akdeniz Üniversitesi Bilgisayar Teknolojisi Ön Lisans programına yerleştim ve bu programdan mezun oldum. Ön Lisans programından mezun olduktan bir süre sonra Dikey Geçiş Sınavı (DGS) ile İstanbul Teknik Üniversitesi (İTÜ) Bilgisayar Mühendisliği Lisans programına yerleştim.

2003 yılından beri Bilgi Teknolojileri sektöründe Sistem ve Network alanlarında çalışıyorum. Bir çok firma bünyesinde onlarca farklı projelerde yer alarak bu alanda yıllar içinde ciddi bir bilgi birikimi ve deneyimler kazandım. Bilgi Teknolojileri sektöründeki profesyonel çalışma hayatımın uzunca bir dönemini entegratör firma bazında, ağılıklı olarak Microsoft ürünleri üzerine danışman olarak sürdürüyor ve yüksek seviyeli projeler geliştiriyorum. Uzunca bir süredir de Türkiye'nin önde gelen entegratör firmalarından olan Data Market bünyesinde Senior Cloud Engineer olarak çalışıyorum.

Ek olarak, 2015 yılında Network Akademi bünyesinde Microsoft Certified Trainer (MCT) ünvanı ile Sistem ve Network Uzmanlık eğitimleri vermeye başladım. Sistem ve Network Uzmanlığı alanındaki eğitmenlik serüvenime Network Akademi bünyesinde devam etmekteyim.

YORUMLAR
Bu makaleye 14 yorum yapıldı.
Her türlü görüş ve önerilerinizi aşağıdaki yorum panelinden bırakabilir, kafanıza takılanları veya merak ettiklerinizi sorabilirsiniz.

   
   
  750 karakter yazabilirsiniz.
 
Captcha
Güvenlik kodunu BÜYÜK harflerle giriniz.
* Yorumlar, onaylandıktan sonra yayınlanmaktadır.
* E-posta, yorum onay bildirimi için gereklidir. Yayınlanmaz.


17.03.2023 Fatih Akyel
Merhaba; aynı ağda bağlantıda sorun yaşamıyorum , ama farklı ağdan bağlanırken ağ yolunu bulunamıyor port açtım ,güvenlik duvarından izin verdim sql manager den port açtım ipde açık sql kullanıcı izini verdim ama yinede ağ bulunamıyor yardımcı olur musun
09.02.2021 Fatih Menteşe
Çok teşekkür ederim, makaleniz fazlasıyla yardımcı oldu. İş hayatınızda başarılar dilerim.
16.11.2020 Muhammet Ali Albayrak
Hocam merhabalar sql veritabanlı bir programın internete çıkışını nasıl kapatabilirim

17.11.2020 Fırat Boyan
Uygulamayı kullanan bilgisayarın Firewall üzerinden Internet çıkışını kapatabilirsin. Ya da sadece belli günlerde bağlanmasını (Windows update için) sonrasında ise sürekli kapalı kalmasını da sağlayabilirsin.


30.04.2020 Feyyaz
Hocam evimdeki bilgisayarımdaki SQL database e 20 km uzaktaki farklı modemle internete girdiğim bilgisayarımdan ulaşabiliyor muyum bu yöntemle?

30.04.2020 Fırat Boyan
Merhaba, Evindeki Internet'in sabit bir IP adresi ve Modem üzerinde gerekli NAT yapılandırmasını yaptığın sürece, 2000km bile olsa ulaşırsın :)


07.03.2018 Yasin Dikkaya
Merhaba iyi günler Fırat Bey, üniversite öğrencisiyim ve bir proje üzerinde çalışma yapıyorum sizinle bu proje üzerinde veri kaydetme çekme konusunda biraz bilgi edinmek istiyorum bana yardımcı olur musunuz ?

07.03.2018 Fırat BOYAN
Mehaba Yasin, nasıl bir yardıma ihtiyacın var?


08.01.2018 Murat
Merhaba, Bizim yapıda Güvenlik Duvarı var. Güvenlik duvarının olduğu lokasyonun dış ipsi ile bizim lokasyonun dış ipleri farklı. Ama Kurumumuzun tüm lokasyonları Telekomun sağladığı VPN ağı içerisinde bulunuyor.Benim lokasyondaki bir sunucuda SQL Server kurulu. Güvenlik duvarının olduğu lokasyonda ise bir personelimizin kullandığı masaüstü yazılımın bizdeki sunucuda bulunan veritabanına erişmesi lazım. Yukarıdaki ayarları zaten yapmıştım. Bağlantıyı sağlamak için ne yapmamız lazım ? teşekkür ederim.

08.01.2018 Fırat BOYAN
Merhaba, Verdiğin bilgiye göre, Sadece ilgili porta firewall olan şubenden disari cikiş portuna izin vermen yeterli olur. Ama öncesinde ve sonrasında 1433 portuna bir telnet çekerek test etmende fayda var.


12.12.2017 mehmet Çatalkaya
Merhaba güzel paylaşamınız için teşekkürler ,sql veri tabanında sizin anlattıgınız gibi başka pc de tutup diger bilgisayardan yazmış oldugum vb uygulaması ile gitmeye çalıştıgımda surekli hata alıyorum neden kaynaklanıyor olabilir ,bir başka deyişle connectstring tanımlamamada nasıl bir sorun olabilir

12.12.2017 Fırat Boyan
Merhaba Mehmet. Local içinde misin? yoksa WAN ortamından local ine mi erişmeye çalışıyorsun? connection string inde de sorun olabilir.


11.03.2017 kamil çoban
güzel adamsın teşekkür ederim.
28.10.2016 Metin Akbaş
Güzel bir yazı olmuş, yaralandım teşekkür ederim.