Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Berlaku untuk:SQL Server di Linux
Tutorial ini menjelaskan cara mengonfigurasi autentikasi Windows Active Directory untuk SQL Server di Linux menggunakan adutil. Untuk metode lain mengonfigurasi autentikasi Direktori Aktif menggunakan ktpass, lihat Tutorial: Menggunakan autentikasi Direktori Aktif dengan SQL Server di Linux.
Tutorial ini terdiri dari tugas-tugas berikut:
- Menginstal adutil
- Bergabung dengan komputer Linux ke domain Direktori Aktif Anda
- Buat pengguna Direktori Aktif untuk SQL Server dan atur Nama Prinsipal Layanan (SPN) menggunakan adutil
- Membuat file keytab layanan SQL Server (tabel kunci)
- Mengonfigurasi SQL Server untuk menggunakan file keytab
- Membuat login SQL Server berbasis Direktori Aktif menggunakan Transact-SQL
- Menyambungkan ke SQL Server menggunakan autentikasi Direktori Aktif
Prasyarat
Sebelum mengonfigurasi autentikasi Direktori Aktif, Anda memerlukan:
- Pengendali Domain Windows yang menjalankan Active Directory Domain Services di jaringan Anda.
- Alat adutil diinstal pada komputer host yang bergabung dengan domain.
Persiapan komputer domain
Pastikan ada entri host penerusan (A) yang ditambahkan di Direktori Aktif untuk alamat IP host Linux. Dalam tutorial ini, alamat IP komputer sql1 host adalah 10.0.0.10. Kami menambahkan entri host penerusan di Direktori Aktif dalam contoh berikut. Entri memastikan bahwa ketika pengguna terhubung ke sql1.contoso.com, itu mencapai host yang tepat.
Untuk tutorial ini, Anda menggunakan lingkungan di Azure dengan tiga komputer virtual. Satu komputer virtual (VM) adalah komputer Windows Server bernama adVM.contoso.com, berjalan sebagai Pengontrol Domain (DC) dengan nama domain contoso.com. VM kedua adalah komputer klien yang menjalankan Windows 10 bernama winbox, yang telah menginstal SQL Server Management Studio (SSMS). Komputer ketiga adalah komputer Ubuntu 18.04 LTS bernama sql1, yang menghosting SQL Server.
Bergabung dengan komputer host Linux ke domain Direktori Aktif Anda
Untuk bergabung sql1 ke domain Direktori Aktif, lihat Bergabung dengan SQL Server di host Linux ke domain Direktori Aktif.
Menginstal adutil
Untuk menginstal adutil, ikuti langkah-langkah yang dijelaskan dalam artikel Pengantar utilitas adutil - Direktori Aktif pada komputer host yang Anda tambahkan ke domain di langkah sebelumnya.
Gunakan adutil untuk membuat pengguna Direktori Aktif untuk SQL Server dan atur Nama Prinsipal Layanan (SPN)
Dapatkan atau perbarui Kerberos TGT (tiket pemberian tiket) menggunakan
kinitperintah . Anda harus menggunakan akun istimewa untuk perintah ,kinitdan komputer host harus sudah menjadi bagian dari domain. Akun memerlukan izin untuk menyambungkan ke domain, dan membuat akun dan SPN di domain.Dalam contoh skrip ini, pengguna
privilegeduser@CONTOSO.COMistimewa bernama sudah dibuat pada pengendali domain.kinit privilegeduser@CONTOSO.COMDengan menggunakan adutil, buat pengguna baru untuk digunakan sebagai akun Active Directory istimewa oleh SQL Server.
Kata sandi dapat ditentukan dengan tiga cara berbeda. Jika Anda menggunakan lebih dari salah satu metode ini, metode tersebut diutamakan dalam urutan berikut:
- Menggunakan bendera kata sandi:
--password <password> - Dalam variabel lingkungan:
ADUTIL_ACCOUNT_PWD - Input interaktif pada prompt baris perintah
Variabel lingkungan atau metode input interaktif lebih aman daripada bendera kata sandi.
adutil user create --name sqluser --distname CN=sqluser,CN=Users,DC=CONTOSO,DC=COM --password '<password>'Anda dapat menentukan nama akun menggunakan nama khusus (
--distname) seperti yang ditunjukkan sebelumnya, atau Anda dapat menggunakan nama Unit Organisasi (OU). Nama OU (--ou) lebih diutamakan daripada nama khusus jika Anda menentukan keduanya. Anda dapat menjalankan perintah berikut untuk detail selengkapnya:adutil user create --helpPerhatian
Kata sandi Anda harus mengikuti kebijakan kata sandi default SQL Server. Secara default, kata sandi harus panjangnya minimal delapan karakter dan berisi karakter dari tiga dari empat set berikut: huruf besar, huruf kecil, digit dasar-10, dan simbol. Panjang kata sandi bisa hingga 128 karakter. Gunakan kata sandi yang panjang dan kompleks mungkin.
- Menggunakan bendera kata sandi:
Daftarkan SPN ke prinsipal yang dibuat sebelumnya. Anda harus menggunakan nama domain komputer yang sepenuhnya memenuhi syarat (FQDN). Dalam tutorial ini, kita menggunakan port default SQL Server, 1433. Nomor port Anda bisa berbeda.
adutil spn addauto -n sqluser -s MSSQLSvc -H sql1.contoso.com -p 1433-
addautomembuat SPN secara otomatis, selama ada cukup hak istimewa untuk akun tersebutkinit. -
-n: Nama akun untuk menetapkan SPN. -
-s: Nama layanan yang digunakan untuk menghasilkan SPN. Dalam hal ini untuk layanan SQL Server, itulah sebabnya nama layanan adalahMSSQLSvc. -
-H: Nama host yang digunakan untuk menghasilkan SPN. Jika tidak ditentukan, FQDN host lokal digunakan. Dalam hal ini, nama host adalahsql1dan FQDN adalahsql1.contoso.com. -
-p: Port yang digunakan untuk menghasilkan SPN. Jika tidak ditentukan, SPN dihasilkan tanpa port. Koneksi SQL hanya berfungsi dalam kasus ini ketika instans SQL Server mendengarkan port default, 1433.
-
Membuat file keytab layanan SQL Server menggunakan mssql-conf
Anda dapat menginstal adutil dan mengintegrasikannya dengan mssql-conf, untuk membuat dan mengonfigurasi keytab menggunakan mssql-conf secara langsung. Metode ini lebih disukai untuk membuat file keytab layanan SQL Server. Jika tidak, Anda dapat membuat file keytab layanan SQL Server secara manual.
Prasyarat
Pastikan bahwa pengguna
mssqlmemiliki berkas/var/opt/mssql/mssql.confdan bukanroot. Jika tidak, Anda harus menjalankan perintah mssql-conf menggunakansudo.Pada pengendali domain, di pengaturan Direktori Aktif untuk
network.privilegedadaccountakun (dalam contoh ini,sqluser@CONTOSO.COM), aktifkan opsi berikut di bawah tab Akun , di bagian Opsi akun:- Akun ini mendukung enkripsi Kerberos AES 128 bit
- Akun ini mendukung enkripsi Kerberos AES 256 bit
Membuat file keytab
Setelah membuat pengguna dan SPN, Anda dapat membuat keytab menggunakan langkah-langkah berikut.
Beralih ke
mssqlpengguna:su mssqlMasuk sebagai pengguna Direktori Aktif menggunakan
kinitperintah :kinit privilegeduser@CONTOSO.COMBuat file keytab:
/opt/mssql/bin/mssql-conf setup-ad-keytab /var/opt/mssql/secrets/mssql.keytab sqluserKetika diminta untuk memulai ulang layanan SQL Server untuk mengadopsi konfigurasi Direktori Aktif baru, Anda dapat melakukan di bagian berikutnya.
Konfirmasikan bahwa keytab dibuat dengan entri yang tepat:
klist -kte /var/opt/mssql/secrets/mssql.keytabAnda akan melihat output yang mirip dengan ini:
keytab name: FILE:/var/opt/mssql/secrets/mssql.keytab KVNO Timestamp Principal ---- ------------------- ------------------------------------------------------ 4 12/30/2021 14:02:08 sqluser@CONTOSO.COM (aes256-cts-hmac-sha1-96) 4 12/30/2021 14:02:08 MSSQLSvc/sql1.contoso.com:1433@CONTOSO.COM (aes256-cts-hmac-sha1-96) 4 12/30/2021 14:02:08 MSSQLSvc/sql1.contoso.com@CONTOSO.COM (aes256-cts-hmac-sha1-96) 4 12/30/2021 14:02:08 MSSQLSvc/sql1:1433@CONTOSO.COM (aes256-cts-hmac-sha1-96) 4 12/30/2021 14:02:08 MSSQLSvc/sql1@CONTOSO.COM (aes256-cts-hmac-sha1-96)/var/opt/mssql/mssql.confJika file tidak dimiliki olehmssql, Anda harus mengonfigurasi mssql-conf untuk mengaturnetwork.kerberoskeytabfilenilai dannetwork.privilegedadaccountsesuai dengan langkah-langkah sebelumnya. Ketik kata sandi saat diminta./opt/mssql/bin/mssql-conf set network.kerberoskeytabfile /var/opt/mssql/secrets/mssql.keytab /opt/mssql/bin/mssql-conf set network.privilegedadaccount sqluserValidasi konfigurasi Anda untuk memastikan bahwa autentikasi Direktori Aktif berfungsi tanpa masalah.
/opt/mssql/bin/mssql-conf validate-ad-config /var/opt/mssql/secrets/mssql.keytabOutput terlihat mirip dengan contoh berikut:
Detected Configuration: Default Realm: CONTOSO.COM Keytab: /var/opt/mssql/secrets/mssql.keytab Reverse DNS Result: sql1.contoso.com SQL Server Port: 1433 Detected SPNs (SPN, KVNO): (MSSQLSvc/sql1.CONTOSO.COM:1433, 4) (MSSQLSvc/sql1.CONTOSO.COM, 4) (MSSQLSvc/sql1:1433, 4) (MSSQLSvc/sql1, 4) Privileged Account (Name, KVNO): (sqluser, 4)
Membuat file keytab layanan SQL Server secara manual
Jika Anda menginstal adutil dan mengintegrasikannya dengan mssql-conf, Anda dapat melompat ke depan untuk Membuat file keytab layanan SQL Server menggunakan mssql-conf.
Buat file keytab yang berisi entri untuk masing-masing dari empat SPN yang dibuat sebelumnya, dan satu untuk pengguna.
adutil keytab createauto -k /var/opt/mssql/secrets/mssql.keytab -p 1433 -H sql1.contoso.com --password '<password>' -s MSSQLSvcPerhatian
Kata sandi Anda harus mengikuti kebijakan kata sandi default SQL Server. Secara default, kata sandi harus panjangnya minimal delapan karakter dan berisi karakter dari tiga dari empat set berikut: huruf besar, huruf kecil, digit dasar-10, dan simbol. Panjang kata sandi bisa hingga 128 karakter. Gunakan kata sandi yang panjang dan kompleks mungkin.
Opsi baris perintah yang mungkin adalah:
-
-k: Jalur tempatmssql.keytabfile dibuat. Dalam contoh sebelumnya, direktori/var/opt/mssql/secrets/harus sudah ada di host. -
-p: Port yang digunakan untuk menghasilkan SPN. Jika tidak ditentukan, SPN dihasilkan tanpa port. -
-H: Nama host yang digunakan untuk menghasilkan SPN. Jika tidak ditentukan, FQDN host lokal digunakan. Dalam hal ini, nama host adalahsql1dan FQDN adalahsql1.contoso.com. -
-s: Nama layanan yang digunakan untuk menghasilkan SPN. Untuk contoh ini, nama layanan SQL Server adalahMSSQLSvc. -
--password: Kata sandi akun pengguna Active Directory istimewa yang dibuat sebelumnya. -
-eatau--enctype: Jenis enkripsi untuk entri keytab. Gunakan daftar nilai yang dipisahkan koma. Jika tidak ditentukan, perintah interaktif akan disajikan.
Anda dapat memilih lebih dari satu jenis enkripsi, selama host dan domain Anda mendukung jenis enkripsi. Dalam contoh ini, Anda dapat memilih
aes256-cts-hmac-sha1-96danaes128-cts-hmac-sha1-96. Namun, Anda harus menghindariarcfour-hmacdi lingkungan produksi karena memiliki enkripsi yang lemah.Jika Anda ingin memilih jenis enkripsi tanpa meminta, Anda dapat menentukan pilihan jenis enkripsi menggunakan
-eargumen di perintah sebelumnya. Untuk bantuan selengkapnya tentang opsi, jalankanadutil keytabperintah ini:adutil keytab createauto --help-
Tambahkan entri di keytab untuk nama utama dan kata sandi yang digunakan SQL Server untuk menyambungkan ke Direktori Aktif:
adutil keytab create -k /var/opt/mssql/secrets/mssql.keytab -p sqluser --password '<password>'Perhatian
Kata sandi Anda harus mengikuti kebijakan kata sandi default SQL Server. Secara default, kata sandi harus panjangnya minimal delapan karakter dan berisi karakter dari tiga dari empat set berikut: huruf besar, huruf kecil, digit dasar-10, dan simbol. Panjang kata sandi bisa hingga 128 karakter. Gunakan kata sandi yang panjang dan kompleks mungkin.
-
-k: Jalur tempat Anda ingin membuatmssql.keytabfile. -
-p: Prinsipal untuk ditambahkan ke keytab.
adutil keytab [ create | autocreate ]tidak menimpa file sebelumnya; file hanya ditambahkan ke file jika sudah ada.-
Pastikan bahwa
mssqlpengguna memiliki keytab yang dibuat, dan hanyamssqlpengguna yang memiliki akses baca/tulis ke file. Anda dapat menjalankanchownperintah danchmodsebagai berikut:chown mssql /var/opt/mssql/secrets/mssql.keytab chmod 440 /var/opt/mssql/secrets/mssql.keytab
Mengonfigurasi SQL Server untuk menggunakan keytab
Jalankan perintah di bawah ini untuk mengonfigurasi SQL Server untuk menggunakan keytab yang dibuat pada langkah sebelumnya, dan atur akun Active Directory istimewa sebagai pengguna yang dibuat sebelumnya. Dalam contoh kami, nama pengguna adalah sqluser.
/opt/mssql/bin/mssql-conf set network.kerberoskeytabfile /var/opt/mssql/secrets/mssql.keytab
/opt/mssql/bin/mssql-conf set network.privilegedadaccount sqluser
Mulai ulang SQL Server
Jalankan perintah berikut untuk memulai ulang layanan SQL Server:
sudo systemctl restart mssql-server
Membuat login SQL Server berbasis Direktori Aktif di Transact-SQL
Sambungkan ke instans SQL Server dan jalankan perintah berikut untuk membuat login, dan konfirmasikan bahwa itu ada.
CREATE LOGIN [contoso\privilegeduser]
FROM WINDOWS;
SELECT name
FROM sys.server_principals;
Menyambungkan ke SQL Server menggunakan autentikasi Direktori Aktif
Gunakan kredensial Windows Anda untuk menyambungkan ke instans SQL Server menggunakan SQL Server Management Studio (SSMS).
Anda juga dapat menggunakan alat seperti utilitas sqlcmd untuk terhubung ke instans SQL Server menggunakan Autentikasi Windows.
sqlcmd -E -S 'sql1.contoso.com'
Konten terkait
- Memahami autentikasi Direktori Aktif untuk SQL Server di Linux dan kontainer
- Memecahkan masalah autentikasi Direktori Aktif untuk SQL Server di Linux dan kontainer
- Autentikasi Direktori Aktif untuk SQL Server di Linux
- Tutorial: Mengonfigurasi autentikasi Direktori Aktif dengan SQL Server pada kontainer Linux
- Memutar keytabs untuk SQL Server di Linux