Bu makalemde Windows Server 2012 R2 üzerinde çalışan SQL Server'ımıza WAN üzerinden yani şirket dışında başka bir ortamdan nasıl bağlantı yapma işlemini ve kullanıcı oluşturarak oluşturulan kullanıcıya rol ve yetki tanımlamasının nasıl yapılacağından bahsediyor olacağım. Bu yapılandırmamı, VPN ile bağlantı sağlayarak bağlantı sağlayacağınızı varsayarak, Firewall üzerinde gerekli NAT yapılandırması işlemine değinmeden anlatacağım.
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.

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.

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

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.

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

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.

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.

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.

1.9- Servis, Restart oluyor....

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.

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.

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.

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.

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.

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.

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.

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.

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.
Windows Server 2012 R2 üzerinde çalışan SQL Server'a başarılı bir şekilde giriş yaptık.

NOT: Ben bu bağlantıyı; (aynı Network'e dahil olduğumuz için test amacıyla) kendi fiziksel bilgisayarımda kurulu olan SQL Server üzerinden, Sanal Ortamda kurduğum ve Windows Server 2012 R2 ortamında çalışan SQL Server'a bağlanarak gerçekleştirdim.
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.