Dukungan Nama Prinsipal Layanan (SPN) dalam Sambungan Klien

Berlaku untuk:SQL Server

Unduh driver OLE DB

Dimulai dengan SQL Server 2008 (10.0.x), dukungan untuk nama prinsipal layanan (SPN) telah diperluas untuk mengaktifkan autentikasi bersama di semua protokol. Dalam versi SQL Server sebelumnya, SPN hanya didukung untuk Kerberos melalui TCP ketika SPN default untuk instans SQL Server terdaftar di Direktori Aktif.

SPN digunakan oleh protokol autentikasi untuk menentukan akun tempat instans SQL Server berjalan. Jika akun instans diketahui, autentikasi Kerberos dapat digunakan untuk memberikan autentikasi bersama oleh klien dan server. Jika akun instans tidak diketahui, autentikasi NTLM, yang hanya menyediakan autentikasi klien oleh server, digunakan. Saat ini, Driver OLE DB untuk SQL Server melakukan pencarian autentikasi, mengambil SPN dari nama instans dan properti koneksi jaringan. SQL Server instans akan mencoba mendaftarkan SPN pada startup, atau dapat didaftarkan secara manual. Namun, pendaftaran akan gagal jika ada hak akses yang tidak mencukupi untuk akun yang mencoba mendaftarkan SPN.

Akun domain dan komputer didaftarkan secara otomatis di Direktori Aktif. Akun-akun ini dapat digunakan sebagai SPN, atau administrator dapat menentukan SPN mereka sendiri. SQL Server membuat autentikasi aman lebih mudah dikelola dan dapat diandalkan dengan memungkinkan klien untuk secara langsung menentukan SPN yang akan digunakan.

Catatan

SPN yang ditentukan oleh aplikasi klien hanya digunakan ketika koneksi dibuat dengan keamanan terintegrasi Windows.

Tip

Microsoft Kerberos Configuration Manager for SQL Server adalah alat diagnostik yang membantu memecahkan masalah konektivitas terkait Kerberos dengan SQL Server. Untuk informasi selengkapnya, lihat Configuration Manager Microsoft Kerberos untuk SQL Server.

Untuk informasi selengkapnya tentang Kerberos, lihat artikel berikut ini:

Penggunaan

Tabel berikut menjelaskan skenario paling umum di mana aplikasi klien dapat mengaktifkan autentikasi aman.

Skenario Deskripsi
Aplikasi warisan tidak menentukan SPN. Skenario kompatibilitas ini menjamin bahwa tidak akan ada perubahan perilaku untuk aplikasi yang dikembangkan untuk versi SQL Server sebelumnya. Jika tidak ada SPN yang ditentukan, aplikasi bergantung pada SPN yang dihasilkan dan tidak memiliki pengetahuan tentang metode autentikasi mana yang digunakan.
Aplikasi klien yang menggunakan versi Driver OLE DB saat ini untuk SQL Server menentukan SPN dalam string koneksi sebagai pengguna domain atau akun komputer, sebagai SPN khusus instans, atau sebagai string yang ditentukan pengguna. Kata kunci ServerSPN dapat digunakan dalam penyedia, inisialisasi, atau string koneksi untuk menentukan nilai berikut:

-Tentukan akun yang digunakan oleh instans SQL Server untuk koneksi. Pengaturan ini menyederhanakan akses ke autentikasi Kerberos. Jika Kerberos Key Distribution Center (KDC) ada dan akun yang benar ditentukan, autentikasi Kerberos lebih mungkin digunakan daripada NTLM. KDC biasanya berada di komputer yang sama dengan pengendali domain.

-Tentukan SPN untuk mencari akun layanan untuk instans SQL Server. Untuk setiap instans SQL Server, dua SPN default dihasilkan yang dapat digunakan untuk tujuan ini. Namun, kunci ini tidak dijamin ada di Direktori Aktif, sehingga dalam situasi ini autentikasi Kerberos tidak dijamin.

-Tentukan SPN yang akan digunakan untuk mencari akun layanan untuk instans SQL Server. Nilai ini dapat berupa string yang ditentukan pengguna yang memetakan ke akun layanan. Dalam hal ini, kunci harus didaftarkan secara manual di KDC dan harus memenuhi aturan untuk SPN yang ditentukan pengguna.

Kata kunci FailoverPartnerSPN dapat digunakan untuk menentukan SPN untuk server mitra failover. Rentang nilai akun dan kunci Direktori Aktif sama dengan nilai yang dapat Anda tentukan untuk server utama.
Aplikasi OLE DB menentukan SPN sebagai properti inisialisasi sumber data untuk server utama atau untuk server mitra failover. Properti koneksi SSPROP_INIT_SERVER_SPN dalam kumpulan properti DBPROPSET_SQLSERVERDBINIT dapat digunakan untuk menentukan SPN untuk koneksi.

Properti koneksi SSPROP_INIT_FAILOVER_PARTNER_SPN di DBPROPSET_SQLSERVERDBINIT dapat digunakan untuk menentukan SPN untuk server mitra failover.
Pengguna menentukan SPN untuk server atau server mitra failover dalam kotak dialog Tautan Data atau Login OLE DB. SPN dapat ditentukan dalam kotak dialog Tautan Data atau Masuk .
Aplikasi OLE DB menentukan metode autentikasi yang digunakan untuk membuat koneksi. Ketika koneksi berhasil dibuka, aplikasi dapat meminta properti koneksi SSPROP_AUTHENTICATION_METHOD di properti DBPROPSET_SQLSERVERDATASOURCEINFO diatur untuk menentukan metode autentikasi mana yang digunakan. Nilai akan mencakup, tetapi tidak terbatas pada, NTLM dan Kerberos.

Failover

SPN tidak disimpan dalam cache failover dan karenanya tidak dapat diteruskan di antara koneksi. SPN akan digunakan pada semua upaya koneksi ke prinsipal dan mitra ketika ditentukan dalam string koneksi atau atribut koneksi.

Pengumpulan Koneksi

Aplikasi harus menyadari bahwa menentukan SPN di beberapa tetapi tidak semua string koneksi dapat berkontribusi pada fragmentasi kumpulan.

Aplikasi dapat secara terprogram menentukan SPN sebagai atribut koneksi, alih-alih menentukan kata kunci string koneksi. Metode ini dapat membantu mengelola fragmentasi kumpulan koneksi.

Aplikasi harus menyadari bahwa SPN dalam string koneksi dapat ditimpa dengan mengatur atribut koneksi yang sesuai, tetapi string koneksi yang digunakan oleh pengumpulan koneksi akan menggunakan nilai string koneksi untuk tujuan pengumpulan.

Perilaku Server Down-Level

Perilaku koneksi baru diterapkan oleh klien; oleh karena itu, ini tidak spesifik untuk versi SQL Server.

Server dan Delegasi Tertaut

Ketika server tertaut dibuat, parameter @provstrsp_addlinkedserver dapat digunakan untuk menentukan SPN mitra server dan failover. Manfaat dari metode ini sama dengan menentukan SPN dalam string koneksi klien: Lebih sederhana dan lebih dapat diandalkan untuk membuat koneksi yang menggunakan autentikasi Kerberos.

Delegasi dengan server tertaut memerlukan autentikasi Kerberos.

Aspek Manajemen SPN yang Ditentukan oleh Aplikasi

Saat memilih apakah akan menentukan SPN dalam aplikasi (melalui string koneksi) atau secara terprogram melalui properti koneksi (daripada mengandalkan SPN yang dihasilkan penyedia default), pertimbangkan faktor-faktor berikut:

  • Keamanan: Apakah SPN yang ditentukan mengungkapkan informasi yang dilindungi?

  • Keandalan: Untuk mengaktifkan penggunaan SPN default, akun layanan tempat instans SQL Server berjalan harus memiliki hak istimewa yang memadai untuk memperbarui Direktori Aktif pada KDC.

  • Kenyamanan dan transparansi lokasi: Bagaimana SPN aplikasi akan terpengaruh jika databasenya berpindah ke instans SQL Server yang berbeda? Konsep ini berlaku untuk server utama dan mitra failover-nya jika Anda menggunakan pencerminan database. Jika perubahan server berarti spn harus diubah, bagaimana hal ini akan memengaruhi aplikasi? Apakah ada perubahan yang akan dikelola?

Menentukan SPN

Anda dapat menentukan SPN dalam kotak dialog dan dalam kode. Bagian ini membahas bagaimana Anda dapat menentukan SPN.

Panjang maksimum untuk SPN adalah 260 karakter.

Sintaks yang digunakan SPN dalam string koneksi atau atribut koneksi adalah sebagai berikut:

Sintaks Deskripsi
MSSQLSvc/fqdn SPN default yang dihasilkan penyedia untuk instans default saat protokol selain TCP digunakan.

fqdn adalah nama domain yang sepenuhnya memenuhi syarat.
MSSQLSvc/fqdn:port SPN default yang dihasilkan penyedia saat TCP digunakan.

port adalah nomor port TCP.
MSSQLSvc/fqdn:InstanceName SPN default yang dihasilkan penyedia untuk instans bernama saat protokol selain TCP digunakan.

InstanceName adalah nama instans SQL Server.
HOST/fqdn

HOST/MachineName
SPN yang memetakan ke akun komputer bawaan yang secara otomatis didaftarkan oleh Windows.
Username@Domain Spesifikasi langsung akun domain.

Nama pengguna adalah nama akun pengguna Windows.

Domain adalah nama domain Windows atau nama domain yang sepenuhnya memenuhi syarat.
MachineName$@Domain Spesifikasi langsung akun komputer.

(Jika server yang Anda sambungkan berjalan di bawah akun SISTEM LOKAL atau LAYANAN JARINGAN, untuk mendapatkan autentikasi Kerberos, ServerSPN dapat berada di MachineName$@ Format domain.)
KDCKey/MachineName SPN yang ditentukan pengguna.

KDCKey adalah string alfanumerik yang sesuai dengan aturan untuk kunci KDC.

SPN Pendukung Sintaks OLE DB

Untuk informasi khusus sintaksis, lihat artikel berikut ini:

Lihat juga

Driver OLE DB untuk Fitur SQL Server
Mendaftarkan Nama Prinsipal Layanan untuk Koneksi Kerberos