Tutorial: Menggunakan adutil untuk mengonfigurasi autentikasi Direktori Aktif dengan SQL Server di Linux
Berlaku untuk: SQL Server - 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, kami menggunakan lingkungan di Azure dengan tiga komputer virtual (VM). Satu VM adalah komputer Windows Server bernama adVM.contoso.com
, berjalan sebagai Pengendali Domain (DC) dengan nama contoso.com
domain . 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
kinit
perintah . Anda harus menggunakan akun istimewa untuk perintah ,kinit
dan 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.COM
istimewa bernama sudah dibuat pada pengendali domain.kinit privilegeduser@CONTOSO.COM
Dengan menggunakan adutil, buat pengguna baru yang akan menjadi 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 'P@ssw0rd'
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 --help
- 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
addauto
membuat 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 adalahsql1
dan 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 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
/var/opt/mssql/mssql.conf
file dimiliki olehmssql
dan bukanroot
. Jika ini tidak terjadi, Anda harus menjalankan perintah mssql-conf menggunakansudo
.Pada pengendali domain, di pengaturan Direktori Aktif untuk
network.privilegedadaccount
akun (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
mssql
pengguna:su mssql
Masuk sebagai pengguna Direktori Aktif menggunakan
kinit
perintah :kinit privilegeduser@CONTOSO.COM
Buat file keytab:
/opt/mssql/bin/mssql-conf setup-ad-keytab /var/opt/mssql/secrets/mssql.keytab sqluser
Ketika 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.keytab
Anda 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.conf
Jika file tidak dimiliki olehmssql
, Anda harus mengonfigurasi mssql-conf untuk mengatur nilai network.kerberoskeytabfile dan network.privilegedadaccount sesuai 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 sqluser
Validasi konfigurasi Anda untuk memastikan bahwa autentikasi Direktori Aktif berfungsi tanpa masalah.
/opt/mssql/bin/mssql-conf validate-ad-config /var/opt/mssql/secrets/mssql.keytab
Anda harus melihat output yang mirip dengan berikut ini:
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 'P@ssw0rd' -s MSSQLSvc
Opsi baris perintah yang mungkin adalah:
-k
: Jalur tempatmssql.keytab
file 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 adalahsql1
dan 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.-e
atau--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-96
danaes128-cts-hmac-sha1-96
. Namun, Anda harus menghindariarcfour-hmac
di lingkungan produksi karena memiliki enkripsi yang lemah.Jika Anda ingin memilih jenis enkripsi tanpa meminta, Anda dapat menentukan pilihan jenis enkripsi menggunakan
-e
argumen di perintah sebelumnya. Untuk bantuan selengkapnya tentang opsi, jalankanadutil keytab
perintah 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 'P@ssw0rd'
-k
: Jalur tempat Anda ingin membuatmssql.keytab
file.-p
: Prinsipal untuk ditambahkan ke keytab.
adutil keytab [ create | autocreate ]
tidak menimpa file sebelumnya; file hanya ditambahkan ke file jika sudah ada.Pastikan keytab yang dibuat dimiliki oleh
mssql
pengguna, dan hanyamssql
pengguna yang memiliki akses baca/tulis ke file. Anda dapat menjalankanchown
perintah danchmod
sebagai 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 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
Untuk menyambungkan menggunakan SSMS atau Azure Data Studio, masuk ke SQL Server dengan kredensial Windows Anda.
Anda juga dapat menggunakan alat seperti sqlcmd untuk menyambungkan ke 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