Bagikan melalui


Mendaftarkan Nama Prinsipal Layanan untuk Koneksi Kerberos

Untuk menggunakan autentikasi Kerberos dengan SQL Server mengharuskan kedua kondisi berikut benar:

  • Komputer klien dan server harus menjadi bagian dari domain Windows yang sama, atau di domain tepercaya.

  • Nama Prinsipal Layanan (SPN) harus terdaftar di Direktori Aktif, yang mengasumsikan peran Pusat Distribusi Utama di domain Windows. SPN, setelah terdaftar, memetakan ke akun Windows yang memulai layanan instans SQL Server. Jika pendaftaran SPN belum dilakukan atau gagal, lapisan keamanan Windows tidak dapat menentukan akun yang terkait dengan SPN, dan autentikasi Kerberos tidak akan digunakan.

    Catatan

    Jika server tidak dapat mendaftarkan SPN secara otomatis, SPN harus didaftarkan secara manual. Lihat Pendaftaran SPN Manual.

Anda dapat memverifikasi bahwa koneksi menggunakan Kerberos dengan mengkueri tampilan manajemen dinamis sys.dm_exec_connections. Jalankan kueri berikut dan periksa nilai kolom auth_scheme, yang akan menjadi "KERBEROS" jika Kerberos diaktifkan.

SELECT auth_scheme FROM sys.dm_exec_connections WHERE session_id = @@spid ;  

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.

Peran SPN dalam Autentikasi

Ketika aplikasi membuka koneksi dan menggunakan Autentikasi Windows, SQL Server Native Client meneruskan nama komputer SQL Server, nama instans, dan secara opsional, SPN. Jika koneksi melewati SPN, koneksi akan digunakan tanpa perubahan apa pun.

Jika koneksi tidak melewati SPN, SPN default dibangun berdasarkan protokol yang digunakan, nama server, dan nama instans.

Dalam kedua skenario sebelumnya, SPN dikirim ke Pusat Distribusi Utama untuk mendapatkan token keamanan untuk mengautentikasi koneksi. Jika token keamanan tidak dapat diperoleh, autentikasi menggunakan NTLM.

Nama perwakilan layanan (SPN) adalah nama tempat klien mengidentifikasi instans layanan secara unik. Layanan autentikasi Kerberos dapat menggunakan SPN untuk mengautentikasi layanan. Ketika klien ingin terhubung ke layanan, klien menemukan instans layanan, menyusun SPN untuk instans tersebut, terhubung ke layanan, dan menyajikan SPN agar layanan dapat diautentikasi.

Catatan

Informasi yang disediakan dalam topik ini juga berlaku untuk konfigurasi SQL Server yang menggunakan pengklusteran.

Autentikasi Windows adalah metode yang lebih disukai bagi pengguna untuk mengautentikasi ke SQL Server. Klien yang menggunakan Autentikasi Windows diautentikasi dengan menggunakan NTLM atau Kerberos. Di lingkungan Direktori Aktif, autentikasi Kerberos selalu dicoba terlebih dahulu. Autentikasi Kerberos tidak tersedia untuk klien SQL Server 2005 menggunakan pipa bernama.

Izin

Ketika layanan Mesin Database dimulai, ia mencoba mendaftarkan Nama Prinsipal Layanan (SPN). Jika akun yang memulai SQL Server tidak memiliki izin untuk mendaftarkan SPN di Active Directory Domain Services, panggilan ini akan gagal dan pesan peringatan akan dicatat di log peristiwa Aplikasi serta log kesalahan SQL Server. Untuk mendaftarkan SPN, Mesin Database harus berjalan di bawah akun bawaan, seperti Sistem Lokal (tidak disarankan), atau LAYANAN JARINGAN, atau akun yang memiliki izin untuk mendaftarkan SPN, seperti akun administrator domain. Ketika SQL Server berjalan pada sistem operasi Windows 7 atau Windows Server 2008 R2, Anda dapat menjalankan SQL Server menggunakan akun virtual atau akun layanan terkelola (MSA). Baik akun virtual maupun MSA dapat mendaftarkan SPN. Jika SQL Server tidak berjalan di bawah salah satu akun ini, SPN tidak terdaftar saat startup dan administrator domain harus mendaftarkan SPN secara manual.

Catatan

Ketika domain Windows dikonfigurasi untuk berjalan kurang dari tingkat fungsional Windows Server 2008 R2 Windows Server 2008 R2, maka Akun Layanan Terkelola tidak akan memiliki izin yang diperlukan untuk mendaftarkan SPN untuk layanan mesin database SQL Server. Jika autentikasi Kerberos diperlukan, Administrator Domain harus mendaftarkan SQL Server SPN secara manual di Akun Layanan Terkelola.

Artikel KB, Cara menggunakan autentikasi Kerberos di SQL Server, berisi informasi tentang cara memberikan izin baca atau tulis ke SPN untuk akun yang bukan Administrator Domain.

Informasi tambahan tersedia di Cara Menerapkan Delegasi yang Dibatasi Kerberos dengan SQL Server 2008

Format SPN

Dimulai dengan SQL Server 2008, format SPN diubah untuk mendukung autentikasi Kerberos pada TCP/IP, pipa bernama, dan memori bersama. Format SPN yang didukung untuk instans bernama dan default adalah sebagai berikut.

Instans bernama

  • MSSQLSvc/FQDN:[port|instancename], di mana:

    • MSSQLSvc adalah layanan yang sedang didaftarkan.

    • FQDN adalah nama domain server yang sepenuhnya memenuhi syarat.

    • port adalah nomor port TCP.

    • instancename adalah nama instans SQL Server.

Instans default

  • MSSQLSvc/FQDN:port|MSSQLSvc/FQDN, di mana:

    • MSSQLSvc adalah layanan yang sedang didaftarkan.

    • FQDN adalah nama domain server yang sepenuhnya memenuhi syarat.

    • port adalah nomor port TCP.

Format SPN baru tidak memerlukan nomor port. Ini berarti bahwa server multi-port atau protokol yang tidak menggunakan nomor port dapat menggunakan autentikasi Kerberos.

Catatan

Dalam kasus koneksi TCP/IP, di mana port TCP disertakan dalam SPN, SQL Server harus mengaktifkan protokol TCP bagi pengguna untuk terhubung dengan menggunakan autentikasi Kerberos.

MSSQLSvc/fqdn:port SPN default yang dihasilkan penyedia saat TCP digunakan. port adalah nomor port TCP.
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:InstanceName SPN default yang dihasilkan penyedia untuk instans bernama saat protokol selain TCP digunakan. InstanceName adalah nama instans SQL Server.

Pendaftaran SPN Otomatis

Ketika instans mesin database SQL Server dimulai, SQL Server mencoba mendaftarkan SPN untuk layanan SQL Server. Ketika instans dihentikan, SQL Server mencoba membatalkan pendaftaran SPN. Untuk koneksi TCP/IP, SPN terdaftar dalam format MSSQLSvc/<FQDN>:<tcpport>. Instans bernama dan instans default terdaftar sebagai MSSQLSvc, mengandalkan <nilai tcpport> untuk membedakan instans.

Untuk koneksi lain yang mendukung Kerberos, SPN terdaftar dalam format MSSQLSvc/<FQDN>:<instancename> untuk instans bernama. Format untuk mendaftarkan instans default adalah MSSQLSvc/<FQDN>.

Intervensi manual mungkin diperlukan untuk mendaftar atau membatalkan pendaftaran SPN jika akun layanan tidak memiliki izin yang diperlukan untuk tindakan ini.

Pendaftaran SPN Manual

Untuk mendaftarkan SPN secara manual, administrator harus menggunakan alat Setspn.exe yang disediakan dengan Alat Dukungan Microsoft Windows Server 2003. Untuk informasi selengkapnya, lihat artikel KB Alat Dukungan Windows Server 2003 Paket Layanan 1 .

Setspn.exe adalah alat baris perintah yang memungkinkan Anda membaca, memodifikasi, dan menghapus properti direktori Nama Prinsipal Layanan (SPN). Alat ini juga memungkinkan Anda untuk melihat SPN saat ini, mengatur ulang SPN default akun, dan menambahkan atau menghapus SPN tambahan.

Contoh berikut mengilustrasikan sintaks yang digunakan untuk mendaftarkan SPN secara manual untuk koneksi TCP/IP.

setspn -A MSSQLSvc/myhost.redmond.microsoft.com:1433 accountname  

Catatan Jika SPN sudah ada, SPN harus dihapus sebelum dapat didaftarkan ulang. Anda melakukan ini dengan menggunakan setspn perintah bersama-sama dengan sakelar -D . Contoh berikut menggambarkan cara mendaftarkan SPN berbasis instans baru secara manual. Untuk instans default, gunakan:

setspn -A MSSQLSvc/myhost.redmond.microsoft.com accountname  

Untuk instans bernama, gunakan:

setspn -A MSSQLSvc/myhost.redmond.microsoft.com:instancename accountname  

Koneksi Klien

SPN yang ditentukan pengguna didukung dalam driver klien. Namun, jika SPN tidak disediakan, SPN akan dibuat secara otomatis berdasarkan jenis koneksi klien. Untuk koneksi TCP, SPN dalam format MSSQLSvc/FQDN:[port] digunakan untuk instans bernama dan default.

Untuk pipa bernama dan koneksi memori bersama, SPN dalam format MSSQLSvc/FQDN:instancename digunakan untuk instans bernama dan MSSQLSvc/FQDN digunakan untuk instans default.

Menggunakan akun layanan sebagai SPN

Akun layanan dapat digunakan sebagai SPN. Mereka ditentukan melalui atribut koneksi untuk autentikasi Kerberos dan mengambil format berikut:

  • username@domain atau domain\nama pengguna untuk akun pengguna domain

  • machine$@domain atau host\FQDN untuk akun domain komputer seperti Sistem Lokal atau LAYANAN JARINGAN.

Untuk menentukan metode autentikasi koneksi, jalankan kueri berikut.

SELECT net_transport, auth_scheme   
FROM sys.dm_exec_connections   
WHERE session_id = @@SPID;  

Default Autentikasi

Tabel berikut ini menjelaskan default autentikasi yang digunakan berdasarkan skenario pendaftaran SPN.

Skenario Metode autentikasi
SPN memetakan ke akun domain, akun virtual, MSA, atau akun bawaan yang benar. Misalnya, Sistem Lokal atau LAYANAN JARINGAN.

Catatan: Benar berarti bahwa akun yang dipetakan oleh SPN terdaftar adalah akun tempat layanan SQL Server berjalan.
Koneksi lokal menggunakan NTLM, koneksi jarak jauh menggunakan Kerberos.
SPN adalah akun domain, akun virtual, MSA, atau akun bawaan yang benar.

Catatan: Benar berarti bahwa akun yang dipetakan oleh SPN terdaftar adalah akun tempat layanan SQL Server berjalan.
Koneksi lokal menggunakan NTLM, koneksi jarak jauh menggunakan Kerberos.
SPN memetakan ke akun domain, akun virtual, MSA, atau akun bawaan yang salah Autentikasi gagal.
Pencarian SPN gagal atau tidak memetakan ke akun domain, akun virtual, MSA, atau akun bawaan yang benar, atau bukan akun domain, akun virtual, MSA, atau akun bawaan yang benar. Koneksi lokal dan jarak jauh menggunakan NTLM.

Komentar

Koneksi Administrator Khusus (DAC) menggunakan SPN berbasis nama instans. Autentikasi Kerberos dapat digunakan dengan DAC jika SPN tersebut berhasil didaftarkan. Sebagai alternatif, pengguna dapat menentukan nama akun sebagai SPN.

Jika pendaftaran SPN gagal selama startup, kegagalan ini dicatat dalam log kesalahan SQL Server, dan startup berlanjut.

Jika penghapusan pendaftaran SPN gagal selama pematian, kegagalan ini dicatat dalam log kesalahan SQL Server, dan pematian berlanjut.

Lihat juga

Dukungan Nama Prinsipal Layanan (SPN) dalam Sambungan Klien
Nama Perwakilan Layanan (SPN) dalam Koneksi Klien (OLE DB)
Nama Perwakilan Layanan (SPN) dalam Koneksi Klien (ODBC)
Fitur SQL Server Native Client
Mengelola Masalah Autentikasi Kerberos di Lingkungan Reporting Services