İngilizce dilinde oku

Aracılığıyla paylaş


BAĞLANTıLARı şifrelemek için SQL Server Veritabanı Altyapısı'nı yapılandırma

Şunlar için geçerlidir:SQL Server - Yalnızca Windows

SQL Server'a gelen tüm bağlantıları şifreleyebilir veya yalnızca belirli bir istemci kümesi için şifrelemeyi etkinleştirebilirsiniz. Bu senaryolardan birinde, verileri şifrelemek için sunucu bilgisayarda veya istemci bilgisayarlarda ek adımlar uygulamadan önce SQL Server için Sertifika gereksinimlerini karşılayan bir sertifika kullanmak üzere SQL Server'ı yapılandırmanız gerekir.

Not

Bu makale, Windows üzerinde SQL Server için geçerlidir. Linux'ta SQL Server'ı bağlantıları şifrelemek üzere yapılandırmak için bkz. TLS ayarlarını belirtme.

Bu makalede, sertifikalar için SQL Server'ın nasıl yapılandırıldığı (1. Adım) ve SQL Server örneğinin şifreleme ayarlarının nasıl değiştireceği (Adım 2) açıklanmaktadır. Genel bir ticari yetkiliden sertifika kullanırken SQL Server'a gelen tüm bağlantıları şifrelemek için her iki adım da gereklidir. Diğer senaryolar için bkz. SQL Serverbağlantıları şifrelemeye yönelik özel durumlar.

1. Adım: SQL Server'ı sertifikaları kullanacak şekilde yapılandırma

SQL Server içinSertifika gereksinimleri bölümünde açıklanan sertifikaları kullanmak üzere SQL Server'ı yapılandırmak için şu adımları izleyin:

  1. Sertifikayı SQL Server çalıştıran bilgisayara yükleyin.
  2. SQL Server'ı yüklü sertifikayı kullanacak şekilde yapılandırın.

SQL Server bilgisayarında erişiminiz olan SQL Server Configuration Manager sürümüne bağlı olarak, SQL Server örneğini yüklemek ve yapılandırmak için aşağıdaki yordamlardan birini kullanın.

SQL Server 2019 ve sonraki sürümleri için SQL Server Configuration Manager'a sahip bilgisayarlar

SQL Server 2019 (15.x) ve sonraki sürümlerinde, sertifika yönetimi SQL Server Configuration Manager ile tümleştirilir ve SQL Server'ın önceki sürümleriyle kullanılabilir. Tek bir SQL Server örneğine, yük devretme kümesi yapılandırmasına veya kullanılabilirlik grubu yapılandırmasına sertifika eklemek için bkz. Sertifika yönetimi (SQL Server Configuration Manager). Configuration Manager, sertifikayı yükleme ve SQL Server'ı yalnızca birkaç adımda yüklü sertifikayı kullanmak üzere yapılandırarak sertifika yönetimini büyük ölçüde basitleştirir.

Sertifikalar, bilgisayardaki kullanıcılar için yerel olarak depolanır. KULLANıLACAK SQL Server sertifikasını yüklemek için SQL Server Configuration Manager'ı yerel yönetici ayrıcalıklarına sahip bir hesapla çalıştırmanız gerekir.

Tümleşik sertifika yönetimini destekleyen SQL Server Configuration Manager'ı kullanmak için SQL Server 2019'un (15.x) Express sürümünü veya sonraki bir sürümünü geçici olarak yükleyebilirsiniz.

SQL Server 2017 ve önceki sürümler için SQL Server Configuration Manager'a sahip bilgisayarlar

SQL Server 2017 (14.x) veya önceki bir sürümü kullanıyorsanız ve SQL Server 2019 için SQL Server Configuration Manager (15.x) kullanılamıyorsa, sertifikayı SQL Server bilgisayarına yüklemek ve yapılandırmak için şu adımları izleyin:

  1. Başlangıç menüsünde Çalıştır'ı seçin ve Aç kutusuna MMC yazın ve tamam seçin.
  2. MMC konsolunda, Dosya menüsünde Bileşeni Ekle/Kaldır...seçin.
  3. Ek Bileşen Ekle veya Kaldır iletişim kutusunda Sertifikalar'ı seçin ve ardından Ekle'yi seçin.
  4. Sertifikalar ek bileşeni iletişim kutusunda bilgisayar hesabı seçin ve ardından İleri İleri>Sonöğesini seçin.
  5. Ek Bileşen Ekle veya Kaldır iletişim kutusunu açın ve Tamamseçin.
  6. MMC konsolunda Sertifikalar (Yerel Bilgisayar)>altında Kişiselbölümünü genişletin, Sertifikalarüzerine sağ tıklayın, Tüm Görevlerseçeneğine gelin ve İçeri Aktarseçeneğini seçin.
  7. Bilgisayara sertifika eklemek için Sertifika Aktarma Sihirbazı bitirin.
  8. MMC konsolunda, içeri aktarılan sertifikaya sağ tıklayın, Tüm Görevlerüzerine gelin ve Özel Anahtarları Yönetseçin. Güvenlik iletişim kutusunda, SQL Server hizmet hesabı tarafından kullanılan kullanıcı hesabı için okuma izni ekleyin.
  9. SQL Server Configuration Managerbölümünde, SQL Server Ağ Yapılandırması'nıgenişletin, Protokoller'i sağ tıklayın,><sunucu örneği için ve Özellikler'iseçin.
  10. <örnek adı için Protokolleri> Özellikler iletişim kutusunda, Sertifika sekmesinde, Sertifika kutusunun açılan listesinden istediğiniz sertifikayı seçin ve ardından Tamam'ı seçin.
  11. SQL Server'a yönelik tüm bağlantıların şifrelenmesini istiyorsanız bkz. 2. Adım: SQL Server'da şifreleme ayarlarını yapılandırma. Yalnızca belirli istemciler için şifrelemeyi etkinleştirmek istiyorsanız, SQL Server hizmetini yeniden başlatın ve bkz. SQL Server bağlantılarını şifrelemek için özel durumlar .

Not

Kullanılabilirlik grubu yapılandırmasına sertifika yüklemek için, birincil düğümden başlayarak kullanılabilirlik grubunuzdaki her düğümde önceki yordamı yineleyin.

Önemli

SQL Server hizmet hesabının, SQL Server örneğinde şifrelemeyi zorlamak için kullanılan sertifika üzerinde okuma izinlerine sahip olması gerekir. Ayrıcalıklı olmayan bir hizmet hesabı için, sertifikaya okuma izinleri eklenmelidir. Bunun yapılmaması SQL Server hizmetinin yeniden başlatılmasının başarısız olmasına neden olabilir.

Yük devretme kümesi örnekleri için ek prosedür

SQL Server tarafından bağlantıları şifrelemek için kullanılan sertifika aşağıdaki kayıt defteri anahtarında belirtilir:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\MSSQL.x\MSSQLServer\SuperSocketNetLib\Certificate

Bu anahtar, sunucudaki her sertifikayı tanımlayan parmak izi olarak bilinen sertifikanın bir özelliğini içerir. Kümelenmiş bir ortamda, depoda doğru sertifika mevcut olsa bile bu anahtar Null olarak ayarlanır. Bu sorunu çözmek için, sertifikayı her düğüme yükledikten sonra küme düğümlerinizin her birinde şu ek adımları gerçekleştirmeniz gerekir:

  1. Tam etki alanı adı (FQDN) sertifikasının depolandığı sertifika deposuna gidin. Sertifikanın özellikler sayfasında Ayrıntılar sekmesine gidin ve sertifikanın parmak izi değerini bir Not Defteri penceresine kopyalayın.

  2. Not Defteri'ndeki parmak izi değerinde bulunan hex karakterler arasındaki boşlukları kaldırın.

  3. Kayıt Defteri Düzenleyicisi'ni başlatın, aşağıdaki kayıt defteri anahtarına gidin ve 2. Adım'dan değeri yapıştırın:

    HKLM\SOFTWARE\Microsoft\Microsoft SQL Server\<instance>\MSSQLServer\SuperSocketNetLib\Certificate

  4. SQL sanal sunucusu şu anda bu düğümdeyse, kümenizdeki başka bir düğüme yük devredin ve kayıt defteri değişikliğinin gerçekleştiği düğümü yeniden başlatın.

  5. Bu yordamı tüm düğümlerde yineleyin.

Uyarı

Kayıt defterinin yanlış düzenlenmesi sisteminize ciddi zarar verebilir. Kayıt defterinde değişiklik yapmadan önce, bilgisayardaki değerli verileri yedeklemenizi öneririz.

Not

SQL Server 2008 R2 (10.50.x) ve SQL Server 2008 R2 (10.50.x) Yerel İstemcisi (SNAC) joker karakter sertifikalarını destekler. SNAC o zamandan beri kullanım dışı bırakılmıştır ve yerine SQL Server için Microsoft OLE DB Sürücüsü ve SQL Server için Microsoft ODBC Sürücüsü. Diğer istemciler joker karakter sertifikalarını desteklemeyebilir.

SQL Server Configuration Manager kullanılarak joker sertifika seçilemiyor. Joker sertifika kullanmak için HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\MSSQL12.MSSQLSERVER\MSSQLServer\SuperSocketNetLib kayıt defteri anahtarını düzenlemeniz ve sertifikanın parmak izini boşluk olmadan Sertifika değerine girmeniz gerekir.

Not

Şifrelemeyi bir yük devretme kümesiyle kullanmak için, yük devretme kümesindeki tüm düğümlere sanal sunucunun tam DNS adıyla sunucu sertifikasını yüklemeniz gerekir. SQL Server Ağ Yapılandırması özelliği kutusundaki Protokolleri virtsql için ForceEncryption seçeneğinin değerini Evetolarak ayarlayabilirsiniz.

Azure Sanal Makinesinde SQL Server üzerinde bir Azure Search dizinleyici için şifrelenmiş bağlantılar oluştururken, Azure sanal makinesindeki SQL Server örneğine dizin oluşturucu bağlantıları için bölümüne bakın.

2. Adım: SQL Server'da şifreleme ayarlarını yapılandırma

Aşağıdaki adımlar yalnızca tüm istemciler için şifreli iletişimleri zorlamak istiyorsanız gereklidir:

  1. SQL Server Configuration Manager'da SQL Server Ağ Yapılandırması genişletin,><sunucu örneği içinProtokolleri'ne sağ tıklayın ve Özellikler'ni seçin.
  2. Bayraklar sekmesindeki Zorla Şifreleme kutusunda Evet 'i seçin ve ardından iletişim kutusunu kapatmak için Tamam seçin.
  3. SQL Server hizmetini yeniden başlatın.

Not

Bazı sertifika senaryoları, istemci ile sunucu arasındaki şifreli bağlantıları sağlamak için istemci bilgisayarda ve istemci uygulamanızda ek adımlar uygulamanızı gerektirebilir. Daha fazla bilgi için bkz. SQL Serverbağlantılarını şifrelemek için özel durumlar.

Daha fazla bilgi

Oturum açma paketi şifrelemesi ile veri paketi şifreleme karşılaştırması

Yüksek düzeyde, bir SQL Server istemci uygulaması ile SQL Server arasındaki ağ trafiğinde iki tür paket vardır: kimlik bilgileri paketleri (oturum açma paketleri) ve veri paketleri. Şifrelemeyi yapılandırdığınızda (sunucu tarafı veya istemci tarafı), her iki paket türü de her zaman şifrelenir. Ancak, şifrelemeyi yapılandırmasanız bile, bir istemci uygulaması SQL Server'a bağlandığında iletilen kimlik bilgileri (oturum açma paketinde) her zaman şifrelenir. SQL Server, varsa güvenilen bir sertifika yetkilisinden gelen sertifika gereksinimlerini karşılayan bir sertifika kullanır. Bu sertifika, daha önce makalede açıklanan yordamlardan biri kullanılarak sistem yöneticisi tarafından el ile yapılandırılır veya SQL Server bilgisayarındaki sertifika deposunda bulunur.

SQL Server tarafından oluşturulan otomatik olarak imzalanan sertifikalar

SQL Server, oturum açma paketlerini şifrelemek için kullanılabilirse güvenilen bir sertifika yetkilisinden bir sertifika kullanır. Güvenilir bir sertifika yüklü değilse, SQL Server başlatma sırasında otomatik olarak imzalanan bir sertifika (geri dönüş sertifikası) oluşturur ve kimlik bilgilerini şifrelemek için otomatik olarak imzalanan sertifikayı kullanır. Bu otomatik olarak imzalanan sertifika güvenliği artırmaya yardımcı olur, ancak sunucu tarafından kimlik sahtekarlığına karşı koruma sağlamaz. Otomatik olarak imzalanan sertifika kullanılırsa ve Zorla Şifreleme seçeneğinin değeri Evet olarak ayarlanırsa, SQL Server ile istemci uygulaması arasında bir ağ üzerinden iletilen tüm veriler otomatik olarak imzalanan sertifika kullanılarak şifrelenir.

Otomatik olarak imzalanan bir sertifika kullandığınızda, SQL Server hata günlüğüne aşağıdaki iletiyi günlüğe kaydeder:

Şifreleme için otomatik olarak oluşturulan bir sertifika başarıyla yüklendi.

SQL Server 2016 (13.x) ve önceki sürümler SHA1 algoritmasını kullanır. Ancak, SHA1 algoritması ve birçok eski algoritma SQL Server 2016 (13.x) sürümünden itibaren kullanım dışı bırakılmıştır. Daha fazla bilgi için bkz. SQL Server 2016 (13.x) Kullanım Dışı Veritabanı Altyapısı özellikleri.

Bu ortamlarda, SQL Server tarafından yalnızca ön oturum açma el sıkışması veya tüm sunucu-istemci iletişimlerini şifrelemek için otomatik olarak oluşturulan otomatik olarak imzalanan sertifikayı kullanıyorsanız, güvenlik açığı algılama yazılımınız veya güvenlik yazılımı ya da şirket ilkeleriniz bu kullanımı bir güvenlik sorunu olarak işaretleyebilir. Bu senaryolar için aşağıdaki seçeneklere sahipsiniz:

  • Daha güçlü şifreleme algoritmaları kullanan yeni bir otomatik olarak imzalanan sertifika veya üçüncü taraf sertifikası oluşturun ve SQL Server'ı bu yeni sertifikayı kullanacak şekilde yapılandırın.
  • Bayrağın nedenini anladığınız için iletiyi yoksayabilirsiniz (önerilmez).
  • Otomatik olarak imzalanan sertifikalar için daha güçlü karma algoritması (SHA256) kullanan SQL Server 2017 (14.x) veya sonraki bir sürüme yükseltin.

SQL Server için otomatik olarak imzalanan sertifika oluşturmak için PowerShell betiği

AŞAĞıDAKI kod parçacığı, SQL Server çalıştıran bir bilgisayarda otomatik olarak imzalanan bir sertifika oluşturmak için kullanılabilir. Sertifika, tek başına SQL Server örneği için şifreleme gereksinimlerini karşılar ve yerel bilgisayarın sertifika deposuna kaydedilir (PowerShell yönetici olarak başlatılmalıdır):

PowerShell
# Define parameters
$certificateParams = @{
    Type = "SSLServerAuthentication"
    Subject = "CN=$env:COMPUTERNAME"
    DnsName = @("$($env:COMPUTERNAME)", $([System.Net.Dns]::GetHostEntry('').HostName), 'localhost')
    KeyAlgorithm = "RSA"
    KeyLength = 2048
    HashAlgorithm = "SHA256"
    TextExtension = "2.5.29.37={text}1.3.6.1.5.5.7.3.1"
    NotAfter = (Get-Date).AddMonths(36)
    KeySpec = "KeyExchange"
    Provider = "Microsoft RSA SChannel Cryptographic Provider"
    CertStoreLocation = "cert:\LocalMachine\My"
}

# Call the cmdlet
New-SelfSignedCertificate @certificateParams

Ağ şifrelemeyi doğrulama

Ağ şifrelemesinin başarıyla yapılandırıldığını ve etkinleştirildiğini doğrulamak için aşağıdaki Transact-SQL sorgusunu çalıştırın:

SQL
USE [master];
GO

SELECT DISTINCT (encrypt_option)
FROM sys.dm_exec_connections
WHERE net_transport <> 'Shared memory';
GO

encrypt_option sütunu, bu bağlantı için şifrelemenin etkinleştirilip etkinleştirilmediğini gösteren bir Boole değeridir. değer TRUEise bağlantı güvenli bir şekilde şifrelenir. Değer FALSEise bağlantı şifrelenmez.

İzinlerle SQL Server sertifika davranışı

AŞAĞıDAKI koşulların tümü doğruysa SQL Server hizmeti sertifikayı otomatik olarak şifreleme için algılar ve kullanır:

  • Sertifikanın, makinenin FQDN'sini içeren bir konusu var
  • Sertifika Yerel Bilgisayarın sertifika deposuna yüklenir
  • SQL Server hizmet hesabına sertifikanın özel anahtarına erişim verilir

Bu kullanım, sertifika SQL Server Configuration Manager'da seçili olmasa bile gerçekleşir.

Bu davranışı değiştirmek için şunları yapın:

  • SQL Server Configuration Manager'da kullanılacak başka bir sertifika yapılandırma

    veya

  • istenmeyen sertifika için SQL Server hizmet hesabı izinlerini kaldırma