|
|
|
SQL Server 2005: Uzaktan Baðlantý
|
Son güncelleme tarihi: 10 Temmuz 2008
Merhabalar,
Bir SQL Server Instance' ýna uzaktan
baðlanma konusunda gerek forumlardan gerekse habergruplarýndan çok soru geliyor.
En güzeli bu konuda bir yazý yazmak dedim ve bu makaleyi klavyeye(!) (kaleme?) aldým.
Bir SQL Server Instance' ýna uzaktan baðlanabilmeniz için, kurulu olan SQL Server
Instance' ýnýn sürüm (Edition) bilgisi, SQL Server Instance' ýnýn üzerinde kurulu
olduðu Ýþletim Sistemini bilgisi öncelikle dikkate almanýz gereken bilgilerdir.
Peki neden? Çünkü, meselâ
SQL Server 2005' in Express Edition ve Developer Edition'
larýnda, uzaktan baðlantý için kullanýlabilecek TCP/IP ve Named Pipes protokolleri
kapalýdýr. Bu protokoller konusunda daha fazla bilgi almak için
Baðlantý Protokolleri
isimli yazýmý okuyabilirsiniz.
Windows XP SP2 ve Windows' un daha sonraki sürümlerinde ise Windows Güvenlik Duvarý
vardýr ve bu uygulama etkin olduðunda SQL Server 2005 Instance' ýnýza uzaktan eriþimi
engeller. Çünkü varsayýlan olarak SQL Server' ýn kullandýðý portlar Windows Güvenlik
Duvarýnda açýk deðildir.
Uzaktan Baðlantý için Yapýlmasý Gerekenler
1 - SQL Server Instance' ýnýzýn ilgili protokolünün yapýlandýrýlmasý,
2 - Eðer varsa ve etkinse, Windows Güvenlik Duvarýnýn yapýlandýrýlmasý
3 - SQL Server' ýnýza baðlanabilmeniz için kullanacaðýnýz Login.
1- SQL Server Protokollerinin Yapýlandýrýlmasý:
SQL Server 2005 Instance' ýnýz için hangi protokolü kullanacaðýnýzý belirledikten
sonra, bu protokolün yapýlandýrmasýný gerçekleþtirirsiniz. SQL Server protokollerinin
yapýlandýrýlmasý iþlemleri için SQL Server 2005 ile birlikte gelen SQL Server Configuration
Manager' ý kullanabilirsiniz. (Baþlat\Programlar\Microsoft SQL Server 2005\Configuration
Tools) Konuya örnek olmasý için aþaðýda TCP/IP protokolünün nasýl yapýlandýrýlabileceðini
anlatacaðým.
TCP/IP Yapýlandýrmasý Örneði:
SQL Server 2005 Instance' ýnýza uzaktan yapýlacak baðlantýlarda kullanýlacak TCP/IP
protokolünü yapýlandýrmak için SQL Server Configuration Manager' ý baþlatýn.
Daha sonra, Þekil-1' de de gösterdiðim gibi SQL Server 2005 Network Configuration
düðümü altýndan uzaktan baðlantý kurulmasýný istediðiniz SQL Server 2005 Instance'
ýnýzý seçin. Benim örneðimde bu, TEST2 Instance' ý olacak.

Þekil-1 |
TCP/IP protokolünü etkinleþtirmek veya etkin olduðundan emin olmak için, Þekil-1'
de de gösterildiði gibi Protocol Name alanýndaki TCP/IP protokolünün Status deðerine
bakabilirsiniz. "Enabled" etkin olduðu anlamýna gelir, "Disabled" ise etkin deðil
demektir. Bu deðeri deðiþtirmek için TCP/IP protokolünün üzerinde fare ile çift
týklayýn veya TCP/IP protokolünün üzerinde farenin sað tuþuna týklayarak, açýlan
menüden "Properties" seçeneðine týklayarak "TCP/IP Properties" penceresini açýn.
Þekil-1' de gösterildiði gibi "TCP/IP Properties" penceresi açýlacaktýr. TCP/IP
protokolünü etkinleþtirmek için, "TCP/IP Properties" penceresindeki "Protocol" isimli
sekmede bulunan "Enabled" etiketinin karþýsýndaki aþaðý açýlýr listeden "Yes" deðerini
seçin.
"Protocol" sekmesindeki "Listen All" seçeneði önemli bir seçenek bu nedenle buna
da deðinmek istiyorum. "Listen All", bilgisayara baðlý tüm Að Kartlarýnýn (Örn:Ethernet)
IP adreslerinin SQL Server tarafýndan dinlenip dinlenmeyeceðini belirler. Eðer bu
seçeneðin deðeri "No" yapýlýrsa, biraz sonra da deðineceðim gibi "IP Addresses"
sekmesindeki her IP adresini tek tek yapýlandýrmanýz gerekir ve gene ayný sekmede
bulunan "IPAll" seçeneklerinin herhangi bir geçerliliði kalmaz. Eðer deðeri "Yes"
yaparsanýz, o zaman gene "IP Addresses" sekmesindeki "IPAll" seçenekleri etkinleþir
ve diðer tüm IP adreslerine uygulanýr. "Listen All" u etkinleþtirdikten sonra "IPAll"
seçeneðindeki ayarlarýn, diðer ayarlarý bastýracaðý unutmayýn, yoksa ileriki paragraflarda
aklýnýz karýþabilir.
TCP/IP protokolünün IP adresi veya Port ayarlarýný yapýlandýrmak için, gene "TCP/IP Properties"
penceresinde bulunan "IP Addresses" isimli sekmeye týklayýn. (Bakýnýz: Þekil-2)

Þekil-2 |
Bu listede her Að Adaptörünüz için bir IP ayar bölümü listelenecektir.
Hangisinin etkinleþtirilmesini istiyorsanýz, onun "Active" ve "Enabled" ayarlarýnýn
karþýsýndaki deðerleri "Yes" durumuna getirin. "Active", o IP adresinin dinleneceðini
belirtir. "Enabled" ise o IP adresinin kullanýlýp kullanýlmayacaðýný. "IP Address"
bölümde ise IPv4 veya IPv6 deðeri yer alýr. Eðer "TCP Dynamic Ports" etiketinin
deðeri "0" ise, bunun anlamý bu IP adresi için kullanýlacak portun dinamik bir þekilde
belirleneceðidir. Bu durumda SQL Server, bu IP adresi için müsait olan bir port
numarasý atayacaktýr.
Meselâ Þekil-2' deki örnekte, TEST2 SQL Server Instance' ý, Dinamik Port olarak
atanan 51495 portunun tüm IP' ler tarafýndan dinlenilmesi için yapýlandýrýlmýþ.
(Bu örnekte, "Protocol" sekmesindeki "Listen All" deðerinin "Yes" olduðunu Þekil-1' den anýmsayýn, aksi takdirde
IPAll deðerlerinin bir geçerliði olmadýðýný daha önceki paragraflarýmdan hatýrlýyor
olmalýsýnýz.) Eðer tüm IP' lerin duraðan bir IP kullanmasýný isteseydik, o zaman
"TCP Dynamic Ports" un deðerini boþ býrakýp, TCP Port' un deðerine, kullanýlmasýný
istediðimiz IP numarasýný yazacaktýk. Bu amaçla, 65535' e kadar müsait bir port
numarasý seçebilirsiniz.
Þimdi aklýnýza þu da takýlýyor olabilir, "biz dinamik port kullanacaðýmýz zaman
TCP Dynamic Port' s 0 yazýyoruz, nasýl oluyor da orada þimdi 51495 yazýyor?" Çünkü
SQL Server bu IP' ye bir dinamik IP atadýðý zaman, 0 yerine bu dinamik IP' yi görüyorsunuz.
Þekil-2' de gördüðünüz gibi 192.168.2.2 numaralý IP için iki tane port numarasý
kullanýlmýþ. Eðer bir IP' nin birden çok port kullanmasýný istiyorsanýz, o zaman
birden çok Port numarasýný virgüllerle ayýrarak yazabilirsiniz. Bu IP' ye Port numaralarý
yazýlmýþ, ama peki IPAll' da da dinamik port (51495) kullanýyoruz? Hangisi geçerli
olacak? Hemen bir kaç paragraf önceki yazýmdan da hatýrladýðýnýzý varsayýyorum!
Neydi? Eðer "Protocol" sekmesindeki "Listen All" un deðeri "Yes" ise, o zaman IPAll'
da yazan deðerler, diðer deðerleri bastýrýrdý. Yani bu durumda, eðer "Listen All"
un deðeri "No" olsaydý, 192.168.2.2 numaralý IP, 51495 numaralý dinamik portu deðil,
16666 ve 46123 numaralý statik portlarý kullanacaktý. Bu kadar örnekten sonra bu
kavramlarýn oturtuðunu varsayýyorum.
SQL Server Instance' ýnýza uzaktan baðlanabilmek için size duraðan (Static) portlarý
kullanmanýzý tavsiye ederim. Bu nedenle, Þekil-2 deki "TCP/IP Properties" penceresindeki
ilgili IP' nin "TCP Dynamic Ports" etiketinin deðerini boþ býrakmanýzý tavsiye ederim.
Yani orada ne "0" ne de baþka bir deðer yazmasýn ve gene ayný penceredeki "TCP Port"
etiketinin deðerine müsait bir port numarasý girin ve bu ayarlarýn geçerli olabilmesi
için, protokolün ait olduðu SQL Server Instance' ýnýn SQL Server servisini durdurup
tekrar baþlatýn.
Peki SQL Server Instance' ýnýzýn hangi port numarasýný dinlediðini nasýl teyit edeceksiniz?
Bunun için Komut Ýstemcisi (Command Prompt) u kullanabilirsiniz. Komut Ýstemcisini
çalýþtýrýn (Baþlat\Çalýþtýr ve týrnak içindeki komutu yazýn "cmd" ve çalýþtýrýn.)
O anki TCP/IP baðlantýlarýný ve protokol istatistiklerini görüntüleyebilmemiz için
Komut Ýstemcisinde Netstat komutunu kullanabiliriz. Hangi Protokolün ve IP numarasýnýn
hangi portu kullandýðýný ve durumunu görüntülemek için "Netstat -a" komutunu kullanacaðýz.
Bu komut hakkýnda daha fazla bilgi alabilmek için Komut Ýstemcisindeyken "Netstat
-?" komutunu çalýþtýrabilirsiniz.
Aþaðýdaki Þekil-3' te "Netstat -a" komutunu çalýþtýrdýktan sonra nasýl bir görüntüyle
karþýlaþacaðýnýzý görebilirsiniz.

Þekil-3 |
Beyaz çerçeve ile iþaretlediðim aralýkta, 192.168.2.2 IP numaralý SQL Server sunucumuzun
16666 ve 46123 numaralý portlarý dinlediðini (LISTENING) görebilirsiniz.
2 - Windows Güvenlik Duvarýnýn Yapýlandýrýlmasý:
Bu konuda Microsoft tarafýndan yazýlmýþ bir makale zaten mevcut için benim bu konuda
daha fazla bir þey yazmama gerek kalmýyor.
Buraya týklayarak
bahsini ettiðim makaleye ulaþabilirsiniz.
Ahh ama bir þey de eklemeden edemeyeceðim! Bazý durumlarda bu iþlemleri yapmanýn
da yetersiz kaldýðýný gördüm. Meselâ bir müþterimiz tüm bunlarý yaptýðý halde gene
de uzaktaki SQL Server sunucusuna baðlanamýyordu. Nedeni ise, modemindeki Güvenlik
Duvarý ve kýsýtlamalardý. Yani, modeminizdeki yapýlandýrmayý da gözden geçirmenizde
yarar var. Aksi takdirde günlerce uðraþýr sorunu çözemezsiniz...
3- Login:
Çoðunuzun bildiði gibi SQL Server' da Authentication Mode (Yetkilendirme
Modu) olarak iki adet seçeneðimiz bulunuyor. Birisi Windows Authentication, diðeri
ise SQL Authentication (veya Mixed Authentication).
Windows Authentication' ý sadece güvenilir ortamlarda kullanabilirsiniz. Nedir güvenilir
ortamlar? Meselâ ayný Domain' in parçasýysanýz güvenik iliþkisi olan bir ortamdasýnýzdýr.
Eðer yetkileriniz izin veriyosa, kendi Domain hesabýnýzla ayný Domain' in parçasý
olan diðer kaynaklarý kullanabilirsiniz. Bizim konumuzla alâkalý bir örnek vermek
gerekirse, SQL Server Instance' ýnýza bir Domain Güvenlik Grubunun bir üyesi olarak
veya bir Domain hesabýyla baðlanabilirsiniz. SQL Server için herhangi bir þifre
girmenize de gerek kalmaz. Mümkün olan her senaryoda bu Authentication Mode' unu
kullanmanýzý tavsiye ederim. SQL Authentication' dan çok daha güvenlidir. Zaten
Microsoft' da bunu tavsiye eder ve dokümanlarýnda da SQL Authentication' ý sadece
geriye destek için hâlâ barýndýrdýklarýný söylüyorlar.
SQL Login deyince benim aklýma hemen "sa" geliyor. Çünkü kullanýcýlarýn yaptýðý
bu yanlýþý o kadar çok gördüm ki...
Arkadaþlar! Lütfen her þey için "sa" hesabýný kullanmayýn! KULLANMAAAAYIN! Çünkü
"sa" hesabý "sysadmin" sabit sunucu rolü üyesi (ve bu rolden çýkarýlamaz) bir hesaptýr.
SQL Server 2005 Instance' ýnýzý kurarken Authentication Mode olarak eðer Windows
Authentication' ý seçmiþ iseniz, o zaman "sa" hesabý otomatik olarak kullanýlamaz
olacaktýr. Tabi ta ki siz onu etkinleþtirip, Authentication Mode' unu da Mixed Authentication
yapmadýðýnýz sürece. Eðer SQL Server 2005 Setup' taki Authentication Mode bölümünde
Mixed Authentication' ý iþaretlediyseniz, o zaman "sa" hesabý kullanýlabilir olacaktýr.
"sa" hesabýný neden kullanmamalýyýz konusuna
SQL Server 2008: Güvenlik ile ilgili deðiþiklikler
isimli yazýmda deyinmiþtim. Tekrar tekrar ayný þeyleri yazmanýn gereði yok, o yüzden
ilgilenenler, o yazýmdaki "sa" hesabýyla ilgili yazdýklarýmý okuyabilirler.
Eðer baðlanacaðýnýz SQL Server Instance' ý ile güvenilir bir ortamda deðilseniz,
o zaman SQL Authentication yoluyla bir SQL Login kullanarak baðlanabilirsiniz.
Login haklarý ise bu konunun ötesinde bir konu.
Ekrem Önsoy
|
|
Anasayfa |
|