Enkripsi dan validasi sertifikat di OLE DB
Berlaku untuk: SQL Server Azure SQL Database Azure SQL Managed Instance Azure Synapse Analytics Analytics Platform System (PDW)
SQL Server selalu mengenkripsi paket jaringan yang terkait dengan masuk. Jika tidak ada sertifikat yang disediakan di server saat dimulai, SQL Server menghasilkan sertifikat yang ditandatangani sendiri, yang digunakan untuk mengenkripsi paket masuk.
Sertifikat yang ditandatangani sendiri tidak menjamin keamanan. Jabat tangan terenkripsi didasarkan pada NT LAN Manager (NTLM). Sangat disarankan agar Anda menyediakan sertifikat yang dapat diverifikasi di SQL Server untuk konektivitas yang aman. Lapisan Keamanan Transportasi (TLS) hanya dapat dibuat aman dengan validasi sertifikat.
Aplikasi juga dapat meminta enkripsi semua lalu lintas jaringan dengan menggunakan kata kunci string koneksi atau properti koneksi. Kata kunci adalah "Enkripsi" untuk OLE DB saat menggunakan string penyedia dengan IDbInitialize::Initialize
, atau "Gunakan Enkripsi untuk Data" untuk ADO dan OLE DB saat menggunakan string inisialisasi dengan IDataInitialize
. Enkripsi juga dapat dikonfigurasi pada komputer klien di registri menggunakan opsi Enkripsi Protokol Paksa. Untuk informasi selengkapnya, lihat Pengaturan registri. Secara default, enkripsi semua lalu lintas jaringan untuk koneksi memerlukan sertifikat yang disediakan di server. Dengan mengatur klien Anda untuk mempercayai sertifikat di server, Anda mungkin rentan terhadap serangan man-in-the-middle. Jika Anda menyebarkan sertifikat yang dapat diverifikasi di server, pastikan Anda mengubah pengaturan klien tentang mempercayai sertifikat menjadi FALSE.
Untuk informasi tentang kata kunci string koneksi, lihat Menggunakan kata kunci string koneksi dengan driver OLE DB untuk SQL Server.
Untuk mengaktifkan enkripsi yang akan digunakan ketika sertifikat belum disediakan di server, Force Protocol Encryption
dan Trust Server Certificate
pengaturan registri klien dapat diatur. Dalam hal ini, enkripsi menggunakan sertifikat server yang ditandatangani sendiri tanpa validasi jika tidak ada sertifikat yang dapat diverifikasi yang telah disediakan di server.
Perilaku validasi enkripsi dan sertifikat
Pengaturan aplikasi tidak pernah mengurangi tingkat keamanan yang ditetapkan dalam registri, tetapi dapat memperkuatnya. Untuk informasi selengkapnya, lihat Pengaturan registri. Misalnya, jika Force Protocol Encryption
tidak diatur untuk klien, aplikasi dapat meminta enkripsi itu sendiri. Untuk menjamin enkripsi bahkan ketika sertifikat server belum disediakan, aplikasi dapat meminta enkripsi dan mengaktifkan TrustServerCertificate
. Namun, jika TrustServerCertificate
tidak diaktifkan dalam konfigurasi klien, sertifikat server yang disediakan masih diperlukan.
Driver OLE DB versi 19 untuk SQL Server memperkenalkan perubahan yang melanggar dalam API terkait enkripsi. Untuk informasi selengkapnya, lihat Perubahan properti enkripsi.
Versi utama 19
Tabel berikut ini menjelaskan evaluasi pengaturan enkripsi:
Pengaturan klien Enkripsi Protokol Paksa | String koneksi/atribut koneksi Enkripsi/Gunakan Enkripsi untuk Data | Enkripsi yang dihasilkan |
---|---|---|
0 | Tidak/Opsional | Opsional |
0 | Ya/Wajib (default) | Wajib |
0 | Ketat | Ketat |
1 | Tidak/Opsional | Wajib |
1 | Ya/Wajib (default) | Wajib |
1 | Ketat | Ketat |
2 | Diabaikan | Ketat |
Tabel berikut ini menjelaskan enkripsi dan validasi yang dihasilkan:
Enkripsi | Pengaturan klien Sertifikat Server Kepercayaan | String koneksi/atribut koneksi Sertifikat Server Kepercayaan | Hasil |
---|---|---|---|
Opsional | T/A | T/A | Enkripsi hanya terjadi untuk paket LOGIN. |
Wajib | 0 | Diabaikan | Enkripsi hanya terjadi jika ada sertifikat server yang dapat diverifikasi, jika tidak, upaya koneksi gagal. |
Wajib | 1 | Tidak (default) | Enkripsi hanya terjadi jika ada sertifikat server yang dapat diverifikasi, jika tidak, upaya koneksi gagal. |
Wajib | 1 | Ya | Enkripsi selalu terjadi, tetapi dapat menggunakan sertifikat server yang ditandatangani sendiri. |
Ketat | T/A | T/A | Enkripsi hanya terjadi jika ada sertifikat server yang dapat diverifikasi, jika tidak, upaya koneksi gagal. |
Perhatian
Tabel sebelumnya hanya menyediakan panduan tentang perilaku sistem di bawah konfigurasi yang berbeda. Untuk konektivitas yang aman, pastikan bahwa klien dan server memerlukan enkripsi (untuk konfigurasi sisi server, lihat Mengonfigurasi pengaturan enkripsi di SQL Server). Pastikan juga bahwa server memiliki sertifikat yang dapat diverifikasi, dan bahwa TrustServerCertificate
pengaturan pada klien diatur ke FALSE.
Catatan
Mulai dari driver OLE DB versi 19.2, koneksi TDS 8.0 dapat dikonfigurasi untuk menggunakan TLS 1.3. Untuk informasi selengkapnya, lihat dukungan TLS 1.3.
Versi utama 18 dengan metode autentikasi baru
Untuk versi 18.x.x, untuk meningkatkan keamanan, ketika Autentikasi atau Token Akses baru string koneksi kata kunci (atau properti yang sesuai) digunakan, driver mengambil alih nilai enkripsi default dengan mengaturnya ke yes
. Penimpaan terjadi pada waktu inisialisasi objek sumber data. Jika enkripsi diatur sebelum inisialisasi melalui cara apa pun, nilai dihormati dan tidak ditimpa.
Catatan
Dalam aplikasi ADO dan dalam aplikasi yang mendapatkan IDBInitialize
antarmuka melalui IDataInitialize::GetDataSource
, Komponen Inti yang mengimplementasikan antarmuka secara eksplisit mengatur enkripsi ke nilai defaultnya.no
Akibatnya, properti/kata kunci autentikasi baru menghormati pengaturan ini dan nilai enkripsi tidak ditimpa. Oleh karena itu, disarankan agar aplikasi ini secara eksplisit diatur Use Encryption for Data=true
untuk mengambil alih nilai default.
Untuk meningkatkan keamanan, metode autentikasi baru menghormati TrustServerCertificate
pengaturan (dan kata kunci/properti string koneksi yang sesuai) secara independen dari pengaturan enkripsi klien. Akibatnya, sertifikat server divalidasi secara default. Driver menentukan apakah akan memvalidasi sertifikat server sebagai berikut:
Pengaturan klien Sertifikat Server Kepercayaan | String koneksi/atribut koneksi Sertifikat Server Kepercayaan | Validasi sertifikat |
---|---|---|
0 | Tidak (default) | Ya |
0 | Ya | Ya |
1 | Tidak (default) | Ya |
1 | Ya | Tidak |
Tabel berikut ini menjelaskan evaluasi pengaturan enkripsi:
Pengaturan klien Enkripsi Protokol Paksa | String koneksi/atribut koneksi Enkripsi/Gunakan Enkripsi untuk Data | Enkripsi yang dihasilkan |
---|---|---|
0 | Tidak (default) | No |
0 | Ya | Ya |
1 | Tidak (default) | Ya |
1 | Ya | Ya |
Tabel berikut ini menjelaskan enkripsi dan validasi yang dihasilkan:
Enkripsi yang dihasilkan | Validasi sertifikat | Hasil |
---|---|---|
Tidak | Tidak | Enkripsi hanya terjadi untuk paket LOGIN. |
Tidak | Ya | Enkripsi terjadi untuk paket LOGIN hanya jika ada sertifikat server yang dapat diverifikasi, jika tidak, upaya koneksi gagal. |
Ya | Tidak | Enkripsi semua lalu lintas jaringan selalu terjadi, tetapi dapat menggunakan sertifikat server yang ditandatangani sendiri. |
Ya | Ya | Enkripsi semua lalu lintas jaringan terjadi hanya jika ada sertifikat server yang dapat diverifikasi, jika tidak, upaya koneksi gagal. |
Versi utama 18 dengan metode autentikasi warisan
Tabel berikut ini menjelaskan hasil enkripsi dan validasi untuk metode autentikasi warisan:
Pengaturan klien Enkripsi Protokol Paksa | Pengaturan klien Sertifikat Server Kepercayaan | String koneksi/atribut koneksi Enkripsi/Gunakan Enkripsi untuk Data | String koneksi/atribut koneksi Sertifikat Server Kepercayaan | Hasil |
---|---|---|---|---|
0 | T/A | Tidak (default) | T/A | Enkripsi hanya terjadi untuk paket LOGIN. |
0 | T/A | Ya | Tidak (default) | Enkripsi semua lalu lintas jaringan terjadi hanya jika ada sertifikat server yang dapat diverifikasi, jika tidak, upaya koneksi gagal. |
0 | T/A | Ya | Ya | Enkripsi semua lalu lintas jaringan selalu terjadi, tetapi dapat menggunakan sertifikat server yang ditandatangani sendiri. |
1 | 0 | Diabaikan | Diabaikan | Enkripsi semua lalu lintas jaringan terjadi hanya jika ada sertifikat server yang dapat diverifikasi, jika tidak, upaya koneksi gagal. |
1 | 1 | Tidak (default) | T/A | Enkripsi semua lalu lintas jaringan selalu terjadi, tetapi dapat menggunakan sertifikat server yang ditandatangani sendiri. |
1 | 1 | Ya | Tidak (default) | Enkripsi semua lalu lintas jaringan terjadi hanya jika ada sertifikat server yang dapat diverifikasi, jika tidak, upaya koneksi gagal. |
1 | 1 | Ya | Ya | Enkripsi semua lalu lintas jaringan selalu terjadi, tetapi dapat menggunakan sertifikat server yang ditandatangani sendiri. |
Lihat juga
Driver OLE DB untuk Fitur SQL Server
Properti inisialisasi dan otorisasi
Kata kunci string koneksi
Perbedaan versi utama
Pengaturan registri