Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
mssql-python sürücüsü, Taşıma Katmanı Güvenliği (TLS) üzerinden şifrelenmiş bağlantıları destekler. Şifreleme, uygulamanız ile SQL Server arasında aktarılan verileri korur ve dinleme ile ortada düşman saldırılarını engeller.
Bağlantı şifrelemesi
Şifrelemeyi etkinleştirme
Bağlantı şifrelemesini kontrol etmek için anahtar kelimeyi Encrypt kullanın:
import mssql_python
# Require encryption (recommended)
conn = mssql_python.connect(
"Server=<server>.database.windows.net;"
"Database=<database>;"
"Authentication=ActiveDirectoryDefault;"
"Encrypt=yes;"
)
Anahtar kelime değerlerini şifrele
| Değer | Açıklama |
|---|---|
yes |
Şifreleme gerektiriyor ve sunucu TLS desteklemiyorsa başarısız oluyor. |
no |
Bağlantıyı şifrelemiyor. Üretim için önerilmez. |
strict |
TDS 8.0 sıkı şifreleme modu kullanır. SQL Server 2022 veya daha yeni bir yazılım gerektirir. |
Important
Azure SQL Veritabanı, Encrypt=yes gerektirir. Şifrelemesiz bağlantılar reddedilir.
Sertifika doğrulama
TrustServerCertificate
Sürücünün sunucunun TLS sertifikasını doğrulayıp doğrulamadığını kontrol eder:
# Validate server certificate (recommended for production)
conn = mssql_python.connect(
"Server=<server>.database.windows.net;"
"Database=<database>;"
"Encrypt=yes;"
"TrustServerCertificate=no;"
)
# Skip certificate validation (development only)
conn = mssql_python.connect(
"Server=<server>;"
"Database=<database>;"
"Authentication=ActiveDirectoryDefault;"
"Encrypt=yes;"
"TrustServerCertificate=yes;"
)
| Değer | Açıklama |
|---|---|
no |
Sertifikayı güvenilir CA'lara karşı doğrular. Bu değer varsayılan ve önerilen ayardır. |
yes |
Herhangi bir sertifikaya güvenir ve doğrulamayı atlar. Bu ayar güvensiz bir durum. |
Caution
TrustServerCertificate=yes ayarını üretim ortamında kullanmak, uygulamanızı araya giren saldırgan saldırılarına maruz bırakır. Bu ayarı sadece kendi kendine imzalanmış sertifikalarla geliştirme için kullanın.
TDS 8.0 sıkı şifreleme
SQL Server 2022 ve sonrakı sürümler, katı şifreleme moduyla TDS 8.0'ı destekler:
conn = mssql_python.connect(
"Server=<server>.database.windows.net;"
"Database=<database>;"
"Encrypt=strict;"
)
Sıkı mod en yüksek güvenlik seviyesini sağlar:
- Sürücü, herhangi bir TDS el sıkışmadan önce TLS kurar.
- Sertifika doğrulaması gereklidir ve
TrustServerCertificate=yeskullanamazsınız. - Bu mod, yakalamaya karşı en yüksek koruma seviyesini sağlar.
SertifikadakiHostAdı (HostNameInCertificate)
Sunucunun sertifika adı bağlantı sunucusu adıyla eşleşmediğinde:
conn = mssql_python.connect(
"Server=192.168.1.100;" # IP address
"Database=<database>;"
"Encrypt=yes;"
"TrustServerCertificate=no;"
"HostNameInCertificate=<server>.contoso.com;" # Certificate CN
)
Bu anahtar kelime şu durumlarda faydalıdır:
- Uygulamanız, host adı yerine IP adresi üzerinden bağlanır.
- Sunucu bir yük dengeleyicinin arkasında bulunuyor.
- Sertifika, bağlantı sunucusu adından farklı bir konu adı kullanır.
Önerilen yapılandırmalar
Azure SQL Veritabanı
Azure SQL Veritabanı şifreleme gerektirir:
conn = mssql_python.connect(
"Server=<server>.database.windows.net;"
"Database=<database>;"
"Authentication=ActiveDirectoryDefault;"
"Encrypt=yes;"
"TrustServerCertificate=no;"
)
Şirket içi SQL Server (üretim)
CA imzalı sertifikaya sahip şirket içi SQL Server için, sürücünün sunucu kimliğini doğrulaması amacıyla TrustServerCertificate=no öğesini koruyun:
conn = mssql_python.connect(
"Server=<server>;"
"Database=<database>;"
"Authentication=ActiveDirectoryDefault;"
"Encrypt=yes;"
"TrustServerCertificate=no;"
)
Kendi imzalı sertifikalarla geliştirme
Kendinden imzalı sertifikalarla geliştirme sırasında, sertifika doğrulamasını atlamak için TrustServerCertificate=yes ayarını yapın:
conn = mssql_python.connect(
"Server=localhost;"
"Database=<database>;"
"Authentication=ActiveDirectoryDefault;"
"Encrypt=yes;"
"TrustServerCertificate=yes;"
)
SQL Server 2022 ve daha sonraki versiyonlar katı modlu
Tüm bağlantıyı baştan TLS ile saran TDS 8.0 için kullanılır Encrypt=strict :
conn = mssql_python.connect(
"Server=<server>;"
"Database=<database>;"
"Encrypt=strict;"
)
Sorun giderme
"SSL Sağlayıcı: Sertifika doğrulama hatası"
Sunucu sertifikası doğrulanamadı. Bu kontrolleri yapın:
- Sertifikanın güvenilir bir CA'dan geldiğini doğrulayın.
- Sertifikanın son kullanma tarihinin geçerli olup olmadığını kontrol edin.
- Sunucu ana adının sertifika CN veya SAN ile eşleştiğini doğrulayın.
- Geliştirme için kullanın
TrustServerCertificate=yes.
"TCP Sağlayıcısı: Mevcut bir bağlantı zorla kapatıldı"
Sunucu şifreleme gerektirebilir, ancak istemci bunu talep etmedi. Şu adımları deneyin:
-
Encrypt=yesöğesini bağlantı dizenize ekleyin. - Force Encryption ayarı için SQL Server yapılandırmasına bakın.
"Sertifika zinciri, güvenilir olmayan bir otorite tarafından verilmiştir"
Sertifikanın kök CA'sı sistemin güvenilir kök deposunda değil. Bu kontrolleri yapın:
- CA sertifikasını güvenilir kök depoya yükleyin.
- Azure SQL için, sisteminizin Microsoft'un CA sertifikalarına güvendiğinden emin olun.
- Geliştirme için kullanın
TrustServerCertificate=yes.
Sıkı şifrelemeyle bağlantı başarısız olur
TDS 8.0 katı mod şu gereksinimlere sahiptir:
- Sunucu SQL Server 2022 veya daha sonrasını çalıştırmalıdır.
- Sunucunun geçerli ve güvenilir bir sertifikaya sahip olması gerekir.
-
TrustServerCertificate=yesayarlanamaz.
Sunucu TDS 8.0'ı desteklemiyorsa, onun yerine kullanın Encrypt=yes .