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.keytabdefault . Sekarang Anda ingin mengubah kata sandi untuk sqluser@CONTOSO.COM. Berikut adalah langkah-langkah yang perlu Anda ikuti:

  1. Instal adutil pada komputer yang bergabung dengan domain.

  2. 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
    
  3. Setelah Anda menjalankan kinit untuk mendapatkan/memperbarui TGT, kueri nomor kvno saat ini dari network.privilegedadaccount. Dalam hal ini, itu adalah sqluser@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.

  1. Masuk sebagai pengguna root dan beralih ke mssql pengguna.

    su mssql
    
  2. 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
    
  3. Jalankan perintah mssql-conf, yang menyediakan keytab SQL Server dan detail network.privilegedadaccount. Dalam contoh ini, privilegedadaccount adalah sqluser.

    ./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.

  4. 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.

  5. 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.