Bagikan melalui


Mulai menggunakan SQL Server di SELinux

Artikel ini membantu Anda memulai SQL Server sebagai layanan terbatas pada distribusi Security-Enhanced Linux (SELinux) berdasarkan Red Hat Enterprise Linux (RHEL).

Apa itu Security-Enhanced Linux?

Security-Enhanced Linux (SELinux) adalah arsitektur keamanan untuk sistem Linux. Ini membantu menentukan kontrol akses untuk aplikasi, proses, dan file pada sistem. SELinux menggunakan sekumpulan aturan, atau kebijakan keamanan, untuk menentukan apa yang dapat atau tidak dapat diakses. SELinux memberi administrator kontrol lebih besar atas siapa yang dapat mengakses sistem. Untuk informasi selengkapnya, lihat Apa itu SELinux (Security-Enhanced Linux).

Untuk detail tentang cara mengaktifkan SELinux untuk sistem Red Hat, lihat Arsitektur SELinux. Anda juga dapat memulai dengan sistem operasi yang mendukung SELinux secara gratis.

SQL Server 2022 di Linux secara resmi disertifikasi dengan RHEL 9 (per Juli 2024), dan sekarang tersedia secara umum di Red Hat Ecosystem Catalog.

SQL Server dan SELinux

Layanan terbatas dengan SELinux berarti bahwa layanan ini dibatasi oleh aturan keamanan, yang secara eksplisit didefinisikan dalam kebijakan SELinux. Untuk SQL Server, kebijakan kustom SELinux ditentukan dalam paket mssql-server-selinux.

Prasyarat

  1. Aktifkan SELinux dan atur ke enforcing mode. Periksa status SELinux dengan menjalankan sestatus perintah .

    sestatus
    

    Berikut adalah output yang diharapkan.

    SELinux status:                 enabled
    SELinuxfs mount:                /sys/fs/selinux
    SELinux root directory:         /etc/selinux
    Loaded policy name:             targeted
    Current mode:                   enforcing
    Mode from config file:          enforcing
    Policy MLS status:              enabled
    Policy deny_unknown status:     allowed
    Memory protection checking:     actual (secure)
    Max kernel policy version:      33
    
  2. Instal paket mssql-server-selinux yang menentukan kebijakan kustom yang diperlukan.

Nota

Jika salah satu prasyarat tidak terpenuhi, SQL Server berjalan sebagai layanan tidak terkonfinisi.

Persyaratan minimum untuk versi minor RHEL

Untuk menjalankan SQL Server sebagai aplikasi terbatas pada RHEL 9, Anda harus menggunakan versi minor RHEL minimum. Persyaratan ini ada karena dependensi rilis titik dalam paket SELinux. Paket mssql-server-selinux , yang Anda butuhkan untuk menjalankan SQL Server dalam mode terbatas, tergantung pada selinux-policy paket dan selinux-policy-base .

Langkah-langkah untuk mengidentifikasi versi minimum minor RHEL

  1. Tambahkan repositori SQL Server yang berisi mssql-server-selinux.

    Untuk SQL Server 2025 (17.x) pada RHEL 9:

    sudo curl -o /etc/yum.repos.d/mssql-server.repo https://packages.microsoft.com/config/rhel/9/mssql-server-2025.repo
    

    Untuk SQL Server 2022 (16.x) pada RHEL 9:

    sudo curl -o /etc/yum.repos.d/mssql-server.repo https://packages.microsoft.com/config/rhel/9/mssql-server-2022.repo
    

    Nota

    Jika Anda berencana untuk menginstal pada RHEL 10, ubah ke repositori RHEL 10.

  2. Jalankan perintah berikut untuk melihat dependensi kebijakan SELinux:

    sudo dnf repoquery --requires --latest-limit=1 mssql-server-selinux | egrep '^selinux-policy(-base)?'
    
  3. Output mencakup versi kebijakan SELinux minimum yang diperlukan, yang ditunjukkan oleh akhiran seperti .el9_6. Akhiran ini mewakili rilis minor RHEL 9 minimum yang dibuat kebijakannya. Misalnya, .el9_6 sesuai dengan RHEL 9.6.

    Jika tidak ada akhiran seperti itu yang muncul pada keluaran, lihat dokumentasi Red Hat untuk menentukan versi minor RHEL minimum yang terkait dengan build kebijakan SELinux tersebut. Dalam contoh berikut, versi dasar SELinux yang diperlukan adalah 38.1.53-5.

    sudo dnf repoquery --requires --latest-limit=1 mssql-server-selinux | egrep '^selinux-policy(-base)?'
    

    Berikut adalah contoh output:

    selinux-policy >= 38.1.53-5.el9_6
    selinux-policy-base >= 38.1.53-5.el9_6
    

    Dalam contoh ini, persyaratan dengan tag versi minor tertinggi adalah 38.1.53-5.el9_6. Jadi, Anda memerlukan setidaknya RHEL 9.6 untuk menginstal SQL Server dengan SELinux (mssql-server-selinux), dan menjalankannya sebagai aplikasi terbatas pada RHEL 9.

Menginstal SQL Server sebagai layanan terbatas

Secara default, paket mssql-server menginstal SQL Server tanpa kebijakan SELinux, dan SQL Server berjalan sebagai layanan yang tidak terkonfinisi. Penginstalan paket mssql-server secara otomatis mengaktifkan selinux_execmode Boolean. Anda dapat memverifikasi bahwa SQL Server berjalan tanpa syarat menggunakan perintah berikut:

ps -eZ | grep sqlservr

Berikut adalah output yang diharapkan.

system_u:system_r:unconfined_service_t:s0 48265 ? 00:00:02 sqlservr

Ketika Anda menginstal paket mssql-server-selinux, kebijakan SELinux kustom yang membatasi proses sqlservr diaktifkan. Ketika Anda menginstal kebijakan ini, selinuxuser_execmod Boolean diatur ulang, dan digantikan oleh kebijakan bernama mssql. Kebijakan ini membatasi proses sqlservr dalam domain mssql_server_t yang baru.

ps -eZ | grep sqlservr

Berikut adalah output yang diharapkan.

system_u:system_r:mssql_server_t:s0 48941 ?      00:00:02 sqlservr

Jenis SQL Server dan SELinux

Saat Anda menginstal kebijakan SELinux opsional menggunakan mssql-server-selinux paket , itu menentukan beberapa jenis baru:

Kebijakan SELinux Deskripsi
mssql_opt_t Menginstal file mssql-server ke /opt/mssql
mssql_server_exec_t File yang dapat dieksekusi pada /opt/mssql/bin/
mssql_paldumper_exec_t Executable dan skrip yang memerlukan izin khusus untuk mengelola core dump
mssql_conf_exec_t Alat manajemen di /opt/mssql/bin/mssql-conf
mssql_var_t Label untuk berkas di /var/opt/mssql
mssql_db_t Label untuk file database di /var/opt/mssql/data

Contoh

Contoh berikut menunjukkan perubahan lokasi database saat SQL Server berjalan sebagai layanan terbatas.

  1. Buat direktori yang diinginkan dan beri label sebagai mssql_db_t.

    sudo mkdir -p /opt/mydb/
    sudo chown mssql:mssql /opt/mydb
    sudo semanage fcontext -a -t mssql_db_t "/opt/mydb(/.*)?"
    sudo restorecon -R -v /opt/mydb
    

    Perintah semanage fcontext mengelola pemetaan konteks file SELinux. Parameter -a menambahkan aturan konteks file baru, dan -t parameter menentukan jenis SELinux yang akan diterapkan, yang dalam hal ini adalah mssql_db_t untuk file database SQL Server. Terakhir, perintah menentukan pola jalur, yang ada /opt/mydb dalam contoh ini, dan menyertakan semua file dan subdirektori di dalamnya.

  2. Atur lokasi database default menggunakan mssql-conf, dan jalankan penyiapan.

    sudo /opt/mssql/bin/mssql-conf set filelocation.defaultdatadir /opt/mydb/data
    sudo systemctl restart mssql-server
    
  3. Verifikasi dengan membuat database baru menggunakan Transact-SQL:

    CREATE DATABASE TestDatabase;
    GO
    
  4. Verifikasi bahwa database baru dibuat dengan label yang sesuai.

    sudo ls -lZ /opt/mydb/data/
    

    Berikut adalah output yang diharapkan.

    total 16384
    -rw-rw----. 1 mssql mssql system_u:object_r:mssql_db_t:s0 8388608 Aug  2 14:27 TestDatabase_log.ldf
    -rw-rw----. 1 mssql mssql system_u:object_r:mssql_db_t:s0 8388608 Aug  2 14:27 TestDatabase.mdf
    

    Dalam contoh sebelumnya, Anda dapat melihat bahwa file memiliki jenis mssql_db_t yang terkait dengan file-file baru yang dibuat.