Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Bu makale, Red Hat Enterprise Linux (RHEL) tabanlı bir Security-Enhanced Linux (SELinux) dağıtımında sınırlı hizmet olarak SQL Server'ı kullanmaya başlamanıza yardımcı olur.
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
SELinux'i etkinleştirin ve
enforcingmoduna ayarlayın. komutunu çalıştıraraksestatusSELinux durumunu denetleyin.sestatusBeklenen çı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: 33mssql-server-selinuxGerekli özel ilkeleri tanımlayan paketi yükleyin.
Uyarı
Önkoşullardan herhangi biri karşılanmazsa, SQL Server tanımlanmamış bir hizmet olarak çalışır.
En düşük RHEL ikincil sürüm gereksinimi
SQL Server'ı RHEL 9'da sınırlı bir uygulama olarak çalıştırmak için en düşük RHEL ikincil sürümünü kullanmanız gerekir. SeLinux paketlerindeki nokta sürüm bağımlılıkları nedeniyle bu gereksinim mevcuttur.
mssql-server-selinux paketini sınırlı modda çalıştırmak için gereken SQL Server paketi, selinux-policy ve selinux-policy-base paketlerine bağlıdır.
En düşük RHEL ikincil sürümünü belirleme adımları
öğesini içeren
mssql-server-selinuxSQL Server deposunu ekleyin.RHEL 9 üzerinde SQL Server 2025 (17.x) için:
sudo curl -o /etc/yum.repos.d/mssql-server.repo https://packages.microsoft.com/config/rhel/9/mssql-server-2025.repoRHEL 9 üzerinde SQL Server 2022 (16.x) için:
sudo curl -o /etc/yum.repos.d/mssql-server.repo https://packages.microsoft.com/config/rhel/9/mssql-server-2022.repoUyarı
RHEL 10'a yüklemeyi planlıyorsanız RHEL 10 depolarına geçin.
SELinux ilke bağımlılıklarını görüntülemek için aşağıdaki komutu çalıştırın:
sudo dnf repoquery --requires --latest-limit=1 mssql-server-selinux | egrep '^selinux-policy(-base)?'Çıktı,
.el9_6gibi bir sonekle belirtilen, gerekli en düşük SELinux politika sürümünü içerir. Bu ek, politikanın oluşturulduğu en düşük RHEL 9 ikincil sürümünü temsil eder. Örneğin,.el9_6RHEL 9.6'ya karşılık gelir.Çıktıda böyle bir sonek görünmüyorsa, bu SELinux politika derlemesiyle ilişkili en düşük RHEL ikincil sürümünü belirlemek için Red Hat belgelerine bakın. Aşağıdaki örnekte, gerekli SELinux temel sürümü şeklindedir
38.1.53-5.sudo dnf repoquery --requires --latest-limit=1 mssql-server-selinux | egrep '^selinux-policy(-base)?'Örnek çıktı aşağıda verilmişti:
selinux-policy >= 38.1.53-5.el9_6 selinux-policy-base >= 38.1.53-5.el9_6Bu örnekte en yüksek ikincil sürüm etiketli gereksinimdir
38.1.53-5.el9_6. Bu nedenle, SQL Server'ı SELinux ()mssql-server-selinuxile yüklemek ve RHEL 9'da sınırlı bir uygulama olarak çalıştırmak için en az RHEL 9.6 gerekir.
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 yüklediğinizde mssql-server-selinux , işlemi sınırlayan sqlservr özel bir SELinux ilkesi etkinleştirir. Bu ilkeyi selinuxuser_execmod yüklediğinizde Boole değeri sıfırlanır ve adlı mssqlbir ilkeyle değiştirilir. Bu ilke, sqlservr işlemini yeni mssql_server_t etki alanında sınırlandırıyor.
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 ilkesini mssql-server-selinux paketini kullanarak yüklediğinizde, bazı yeni türleri tanımlar:
| 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ıştırıldığında veritabanı konumunun değiştirilmesi gösterilmektedir.
İ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/mydbkomutu
semanage fcontextSELinux dosya bağlam eşlemesini yönetir.-aparametresi yeni bir dosya bağlam kuralı ekler ve-tparametresi uygulanacak SELinux türünü tanımlar ve bu durumda SQL Server veritabanı dosyalarına yöneliktirmssql_db_t. Son olarak, komut bu örnekteki/opt/mydbyol desenini belirtir ve içindeki tüm dosyaları ve alt dizinleri içerir.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-serverTransact-SQL kullanarak yeni bir veritabanı oluşturarak doğrulayın:
CREATE DATABASE TestDatabase; GOYeni 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 dosyalarla ilişkilendirilmiş türde olduğunu
mssql_db_tgörebilirsiniz.