Memutar keytabs untuk SQL Server di Linux
Berlaku untuk: SQL Server - Linux
Berdasarkan praktik terbaik keamanan organisasi Anda, Anda mungkin diharuskan untuk memutar kata sandi secara teratur untuk akun Windows Active Directory yang disediakan sebagai network.privilegedadaccount di mssql.conf, atau akun lain yang memiliki nama perwakilan layanan (SPN) untuk layanan SQL Server. Metode yang didukung untuk mengubah kata sandi untuk akun didokumenkan dalam artikel ini. Perubahan kata sandi berlaku tanpa perlu menghidupkan ulang layanan SQL Server di Linux.
Alat adutil digunakan untuk memperbarui keytab. Perintah adutil harus dijalankan dari komputer yang bergabung dengan domain. Untuk informasi selengkapnya tentang adutil dan cara mengunduh alat, lihat Pengantar adutil - Utilitas Direktori Aktif.
Sangat penting untuk memperbarui kata sandi baru di keytab dengan nomor kvno berikutnya sebelum memperbaruinya di Direktori Aktif. Menggunakan nomor kvno berikutnya mencegah layanan SQL Server dari kebutuhan untuk dimulai ulang setelah perubahan kata sandi. Jika Anda memperbarui kata sandi di Direktori Aktif terlebih dahulu, lalu mengubah keytab, Anda harus memulai ulang layanan SQL Server untuk memastikan bahwa autentikasi Direktori Aktif berfungsi dengan baik.
Skenario untuk memutar keytab
Mari lihat contoh berikut. Autentikasi Direktori Aktif sudah diaktifkan untuk SQL Server di Linux. Dalam file mssql.conf, Anda telah mengatur network.privilegedadaccount ke sqluser
. Akun sqluser@CONTOSO.COM
sudah dibuat di Direktori Aktif, dan keytab juga telah dibuat di lokasi /var/opt/mssql/secrets/mssql.keytab
default . Sekarang Anda ingin mengubah kata sandi untuk sqluser@CONTOSO.COM
. Berikut adalah langkah-langkah yang perlu Anda ikuti:
Instal adutil pada komputer yang bergabung dengan domain.
Dapatkan atau perbarui Kerberos TGT (tiket pemberian tiket) menggunakan
kinit
perintah . Gunakan akun istimewa untuk perintah .kinit
Akun harus memiliki izin untuk menyambungkan ke domain dan harus dapat membuat akun dan SPN di domain. Dalam hal ini, kami menggunakan akun privilegeduser@CONTOSO.COM yang memiliki izin untuk membuat akun dan SPN di domain kami yang disebut CONTOSO.COM.kinit privilegeduser@CONTOSO.COM
Setelah Anda menjalankan
kinit
untuk mendapatkan/memperbarui TGT, kueri nomor kvno saat ini dari network.privilegedadaccount. Dalam hal ini, itu adalahsqluser@CONTOSO.COM
.kvno sqluser@CONTOSO.COM
Anda dapat memilih untuk memutar keytab dengan mssql-conf, atau memutar keytab secara manual menggunakan adutil.
Putar keytab dengan mssql-conf
Anda dapat menginstal adutil dan mengintegrasikannya dengan mssql-conf, yang berarti Anda dapat memutar keytab menggunakan mssql-conf.
Masuk sebagai pengguna root dan beralih ke
mssql
pengguna.su mssql
Dapatkan atau perbarui Kerberos TGT (tiket pemberian tiket) menggunakan
kinit
perintah . Gunakan akun istimewa untuk perintah .kinit
Akun harus memiliki izin untuk menyambungkan ke domain dan harus dapat membuat akun dan SPN di domain. Dalam hal ini, kami menggunakan akun privilegeduser@CONTOSO.COM yang memiliki izin untuk membuat akun dan SPN di domain kami yang disebut CONTOSO.COM.kinit privilegeduser@CONTOSO.COM
Jalankan perintah mssql-conf, yang menyediakan keytab SQL Server dan detail network.privilegedadaccount. Dalam contoh ini,
privilegedadaccount
adalahsqluser
../mssql-conf setup-ad-keytab /var/opt/mssql/secrets/mssql.keytab sqluser --use-next-kvno'
Saat dimintai kata sandi, masukkan kata sandi baru yang ingin Anda gunakan. Opsi
--use-next-kvno
mengalokasikan kvno + 1 saat ini.Opsional: Anda juga dapat menggunakan
--kvno
opsi dengan perintah mssql-confsetup-ad-keytab
untuk menyediakan kvno tertentu. Anda harus memastikan bahwa Anda mendapatkan kvno saat ini untuk pengguna terlebih dahulu, lalu memperbarui kvno baru yang sesuai, yang akan menjadi kvno + 1 saat ini.Anda dapat mencantumkan kunci keytab menggunakan perintah :
klist -kte /var/opt/mssql/secrets/mssql.keytab
Anda akan melihat bahwa keytab diperbarui dengan kvno berikutnya untuk entri pengguna dan SPN.
Anda sekarang dapat mengubah kata sandi untuk
sqluser
pengguna. Berikut adalah contoh.Penting
Jika Anda diminta untuk memulai ulang SQL Server selama langkah ini, Anda dapat mengabaikannya. Ingatlah untuk mengubah kata sandi di Direktori Aktif juga.
bash-4.4$ kinit privilegedaccount@CONTOSO.COM Password for privilegedaccount@CONTOSO.COM: bash-4.4$ ./mssql-conf setup-ad-keytab /var/opt/mssql/secrets/mssql.keytab sqluser --use-next-kvno sqluser@contoso.com's password: Confirm sqluser@contoso.com's password: SQL Server needs to be restarted in order to adopt the new AD configuration, please run 'systemctl restart mssql-server.service'. bash-4.4$ klist -kte /var/opt/mssql/secrets/mssql.keytab 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) 5 12/30/2021 20:06:34 sqluser@CONTOSO.COM (aes256-cts-hmac-sha1-96) 5 12/30/2021 20:06:34 MSSQLSvc/sql1.contoso.com:1433@CONTOSO.COM (aes256-cts-hmac-sha1-96) 5 12/30/2021 20:06:34 MSSQLSvc/sql1.contoso.com@CONTOSO.COM (aes256-cts-hmac-sha1-96) 5 12/30/2021 20:06:34 MSSQLSvc/sql1:1433@CONTOSO.COM (aes256-cts-hmac-sha1-96) 5 12/30/2021 20:06:34 MSSQLSvc/sql1@CONTOSO.COM (aes256-cts-hmac-sha1-96)
Putar keytab secara manual dengan adutil
Jika Anda ingin memperbarui keytab secara manual menggunakan adutil, lihat langkah-langkah berikut.
Memperbarui keytab menggunakan adutil menambahkan entri ke dalam keytab saat ini. Misalnya, jika nomor kvno dari perintah sebelumnya adalah 2
, gunakan nomor 3
kvno saat memperbarui keytab. Berikut ini adalah perintah adutil yang perlu Anda jalankan.
- Ubah nomor port (-p), nama host (-H), jalur ke keytab (-k), dan nomor kvno agar sesuai dengan lingkungan Anda.
adutil keytab createauto -k /var/opt/mssql/secrets/mssql.keytab -p 1433 -H mssql.contoso.com --password '<newpassword>' -s MSSQLSvc --kvno 3
adutil keytab create -k /var/opt/mssql/secrets/mssql.keytab -p sqluser --password '<newpassword>' --kvno 3
-k: adalah jalur ke keytab saat ini yang sedang digunakan oleh SQL Server dan diatur menggunakan opsi network.kerberoskeytabfile dalam file mssql.conf .
-H: adalah nama domain yang sepenuhnya memenuhi syarat dari host SQL Server.
-p: adalah port yang dikonfigurasi layanan SQL Server untuk mendengarkan di perintah pertama. Pada perintah kedua, -p mewakili network.privilegedadaccount yang akan Anda perbarui kata sandinya.
kvno: nilai harus kvno + 1 saat ini. Nilai kvno saat ini diperoleh dari langkah 3.
Setelah menjalankan perintah di atas, Anda harus menyediakan jenis enkripsi pilihan Anda untuk entri keytab. Pastikan Anda memilih yang tepat untuk lingkungan Anda.
Periksa entri keytab
Setelah memperbarui keytab, Anda sekarang akan melihat entri dalam keytab untuk kvno 3
(baru), dan juga kvno 2
(lama) untuk akun sqluser@CONTOSO.COM
dan SPN yang sama. Anda dapat menjalankan perintah berikut klist
untuk memeriksa entri di keytab:
klist -kte /var/opt/mssql/secrets/mssql.keytab
Mengubah kata sandi akun di Direktori Aktif
Langkah terakhir adalah memperbarui kata sandi network.privilegedadaccount atau akun yang memiliki SPN SQL Server di Windows Active Directory. Dalam skenario sebelumnya, kita harus memperbarui kata sandi untuk sqluser@CONTOSO.COM
di Direktori Aktif. Ubah kata sandi ke <newpassword>
yang Anda berikan di langkah 3 di bagian sebelumnya. Autentikasi Direktori Aktif harus terus berfungsi, dan tanpa perlu layanan SQL Server dimulai ulang.
Konten terkait
- Menggunakan adutil untuk mengonfigurasi autentikasi Direktori Aktif dengan SQL Server di Linux
- Mengonfigurasi autentikasi Direktori Aktif dengan SQL Server pada kontainer Linux
- Memahami autentikasi Direktori Aktif untuk SQL Server di Linux dan kontainer
- Pemecahan masalah autentikasi Direktori Aktif untuk SQL Server di Linux dan kontainer