Aracılığıyla paylaş


SELinux üzerinde SQL Server'ı kullanmaya başlama

Bu makale, Red Hat Enterprise Linux (RHEL) tabanlı bir Security-Enhanced Linux (SELinux) dağıtımında SQL Server'ı sınırlı hizmet olarak kullanmaya başlama konusunda size yol gösterir.

Security-Enhanced Linux nedir?

Security-Enhanced Linux (SELinux), Linux sistemleri için bir güvenlik mimarisidir. Sistemdeki uygulamalar, işlemler ve dosyalar için erişim denetimleri tanımlamaya yardımcı olur. SELinux, erişilebilecek veya erişilmeyecekleri tanımlamak için bir dizi kural veya güvenlik ilkesi kullanır. SELinux, yöneticilere sisteme kimlerin erişebileceği üzerinde daha fazla denetim sağlar. Daha fazla bilgi için bkz. SELinux nedir (Security-Enhanced Linux).

Red Hat sistemleri için SELinux'un nasıl etkinleştirileceği hakkında ayrıntılı bilgi için bkz. SELinux Mimarisi. SeLinux özellikli bir işletim sistemini ücretsiz olarak kullanmaya da başlayabilirsiniz.

Linux üzerinde SQL Server 2022 resmi olarak RHEL 9 sertifikasına sahiptir (Temmuz 2024 itibarıyla) ve red hat ekosistem kataloğunda genel kullanıma sunulmuştur.

SQL Server ve SELinux

SELinux ile sınırlı hizmet , seLinux ilkesinde açıkça tanımlanan güvenlik kurallarıyla kısıtlandığı anlamına gelir. SQL Server için, SELinux özel ilkeleri pakette mssql-server-selinux tanımlanır.

Önkoşullar

  1. SELinux enforcing modunda etkin olmalıdır. komutunu sestatusçalıştırarak SELinux durumunu de kontrol edebilirsiniz.

    sestatus
    

    Beklenen çıktı budur.

    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. mssql-server-selinux Gerekli özel ilkeleri tanımlayan paketi yükleyin.

Uyarı

Önkoşullardan herhangi biri karşılanmazsa, SQL Server tanımlanmamış bir hizmet olarak çalışır.

SQL Server'ı sınırlı hizmet olarak yükleme

Varsayılan olarak, mssql-server paket SELinux ilkesi olmadan SQL Server'ı yükler ve SQL Server tanımlanmamış bir hizmet olarak çalışır. mssql-server Paket yüklemesi Boole'u selinux_execmode otomatik olarak etkinleştirir. Aşağıdaki komutu kullanarak SQL Server'ın tanımsız çalıştığını doğrulayabilirsiniz:

ps -eZ | grep sqlservr

Beklenen çıktı budur.

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

Paketi mssql-server-selinux yükledikten sonra, sqlservr sürecini sınırlayan özel bir SELinux ilkesini etkinleştirir. Bu ilkeyi selinuxuser_execmod yüklediğinizde Boole değeri sıfırlanır ve yeni etki alanındaki işlemi mssql sınırlayan sqlservr adlı mssql_server_tbir ilkeyle değiştirilir.

ps -eZ | grep sqlservr

Beklenen çıktı budur.

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

SQL Server ve SELinux türleri

İsteğe bağlı SELinux ilkesi paketle birlikte mssql-server-selinux yüklendiğinde, bazı yeni türler tanımlanır:

SELinux ilkesi Açıklama
mssql_opt_t mssql-server dosyalarını /opt/mssql konumuna yükle
mssql_server_exec_t Yürütülebilir dosyalar /opt/mssql/bin/ adresinde
mssql_paldumper_exec_t Çekirdek dökümlerini yönetmek için özel izinler gerektiren yürütülebilir dosyalar ve betikler
mssql_conf_exec_t Yönetim aracı: /opt/mssql/bin/mssql-conf
mssql_var_t Dosyalar için etiket /var/opt/mssql
mssql_db_t /var/opt/mssql/data konumundaki veritabanı dosyaları için etiket

Örnekler

Aşağıdaki örnekte SQL Server sınırlı hizmet olarak çalışırken veritabanı konumunu değiştirme işlemi gösterilmektedir.

  1. İstediğiniz dizinleri oluşturun ve olarak mssql_db_tetiketleyin.

    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
    

    komutu semanage fcontext SELinux dosya bağlam eşlemesini yönetir. -a parametresi yeni bir dosya bağlam kuralı ekler ve -t parametresi uygulanacak SELinux türünü tanımlar ve bu durumda SQL Server veritabanı dosyalarına yöneliktirmssql_db_t. Son olarak, bu örnekteki /opt/mydb yol deseni ve içindeki tüm dosyalar ve alt dizinler belirtilir.

  2. mssql-conf kullanarak varsayılan veritabanı konumunu ayarlayın ve kurulumu çalıştırın.

    sudo /opt/mssql/bin/mssql-conf set filelocation.defaultdatadir /opt/mydb/data
    sudo systemctl restart mssql-server
    
  3. Transact-SQL kullanarak yeni bir veritabanı oluşturarak doğrulayın:

    CREATE DATABASE TestDatabase;
    GO
    
  4. Yeni veritabanının uygun etiketlerle oluşturulduğunu doğrulayın.

    sudo ls -lZ /opt/mydb/data/
    

    Beklenen çıktı budur.

    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
    

    Önceki örnekte, dosyanın, oluşturulan yeni dosyaların türü ile ilişkili olduğunu mssql_db_t görebilirsiniz.