Bagikan melalui


Memutar keytabs untuk SQL Server di Linux

Berlaku untuk:SQL Server di Linux

Berdasarkan praktik terbaik keamanan organisasi Anda, Anda mungkin diharuskan memutar kata sandi secara teratur untuk akun Windows Active Directory yang disediakan seperti 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 utilitas adutil - 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 agar layanan SQL Server tidak perlu 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. Di dalam file mssql.conf, Anda menetapkan network.privilegedadaccount ke sqluser. Akun sqluser@CONTOSO.COM sudah dibuat di Direktori Aktif, dan keytab juga 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 pemberi tiket) menggunakan perintah kinit. 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, periksa 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 pengguna mssql.

    su mssql
    
  2. Dapatkan atau perbarui Kerberos TGT (tiket pemberi tiket) menggunakan perintah kinit. 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 dengan memberikan keytab SQL Server serta menyertakan 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 saat ini + 1.

    Opsional: Anda juga dapat menggunakan opsi --kvno dengan perintah mssql-conf setup-ad-keytab untuk menyediakan kvno tertentu. Anda harus memastikan bahwa Anda mendapatkan kvno saat ini untuk pengguna terlebih dahulu, lalu memperbarui kvno baru tersebut, yang akan menjadi kvno saat ini + 1.

  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 ini contohnya.

    Penting

    Jika 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. To restart, 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 menggunakan 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 saat memperbarui keytab. Perintah adutil berikut ini 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
Pengaturan Description
-k Jalur ke keytab saat ini yang sedang digunakan oleh SQL Server dan diatur menggunakan opsi network.kerberoskeytabfile dalam mssql.conf file.
-H Nama domain yang sepenuhnya memenuhi syarat dari host SQL Server.
-p Port tempat layanan SQL Server dikonfigurasi untuk mendengarkan pada perintah pertama. Di perintah kedua, -p mewakili network.privilegedadaccount kata sandi yang akan Anda perbarui.
kvno Nilai harus berupa kvno saat ini + 1. 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 catatan 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.