이 문서는 RHEL(Red Hat Enterprise Linux)을 기반으로 하는 SELinux(Security-Enhanced Linux) 배포에서 SQL Server를 제한된 서비스 로 시작하는 데 도움이 됩니다.
Security-Enhanced Linux란?
Security-Enhanced Linux(SELinux)는 Linux 시스템의 보안 아키텍처입니다. 시스템의 애플리케이션, 프로세스 및 파일에 대한 액세스 제어를 정의하는 데 도움이 됩니다. SELinux는 일련의 규칙 또는 보안 정책을 사용하여 액세스할 수 있거나 액세스할 수 없는 항목을 정의합니다. SELinux는 관리자에게 시스템에 액세스할 수 있는 사용자를 더 자세히 제어할 수 있도록 합니다. 자세한 내용은 SELinux(Security-Enhanced Linux)란?을 참조하세요.
Red Hat 시스템에 SELinux를 사용하도록 설정하는 방법에 대한 자세한 내용은 SELinux 아키텍처를 참조하세요. SELinux 사용 운영 체제를 무료로 시작할 수도 있습니다.
리눅스용 SQL Server 2022는 2024년 7월 기준으로 RHEL 9 인증을 받았으며, 일반적으로 레드햇 생태계 카탈로그에서 이용 가능합니다.
SQL Server 및 SELinux
SELinux를 사용하는 제한된 서비스는 SELinux 정책에 명시적으로 정의된 보안 규칙에 의해 제한됨을 의미합니다. SQL Server의 경우 SELinux 사용자 지정 정책이 패키지에 mssql-server-selinux 정의됩니다.
Prerequisites
SELinux를 사용하도록 설정하고
enforcing모드로 전환합니다. 명령을 실행하여 SELinux 상태를 확인합니다sestatus.sestatus예상 출력은 다음과 같습니다.
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-selinux필요한 사용자 지정 정책을 정의하는 패키지를 설치합니다.
메모
필수 구성 요소가 충족되지 않으면 SQL Server는 정의되지 않은 서비스로 실행됩니다.
최소 RHEL 부 버전 요구 사항
RHEL 9에서 SQL Server를 제한된 애플리케이션으로 실행하려면 최소 RHEL 부 버전을 사용해야 합니다. 이 요구 사항은 SELinux 패키지의 지점 릴리스 종속성 때문에 존재합니다. 제한된 모드에서 SQL Server를 실행하는 데 필요한 mssql-server-selinux 패키지는 selinux-policy 패키지 및 selinux-policy-base 패키지에 의존합니다.
최소 RHEL 부 버전을 식별하는 단계
를 포함하는 SQL Server 리포지토리를 추가합니다
mssql-server-selinux.RHEL 9의 SQL Server 2025(17.x)의 경우:
sudo curl -o /etc/yum.repos.d/mssql-server.repo https://packages.microsoft.com/config/rhel/9/mssql-server-2025.repoRHEL 9의 SQL Server 2022(16.x)의 경우:
sudo curl -o /etc/yum.repos.d/mssql-server.repo https://packages.microsoft.com/config/rhel/9/mssql-server-2022.repo메모
RHEL 10에 설치하려는 경우 RHEL 10 리포지토리로 변경합니다.
다음 명령을 실행하여 SELinux 정책 종속성을 확인합니다.
sudo dnf repoquery --requires --latest-limit=1 mssql-server-selinux | egrep '^selinux-policy(-base)?'출력에는 필요한 최소 SELinux 정책 버전(예: 접미사로
.el9_6표시됨)이 포함됩니다. 이 접미사는 정책이 빌드된 최소 RHEL 9 부 릴리스를 나타냅니다. 예를 들어.el9_6RHEL 9.6에 해당합니다.출력에 이러한 접미사가 표시되지 않는 경우 Red Hat 설명서를 참조하여 해당 SELinux 정책 빌드와 연결된 최소 RHEL 부 버전을 확인합니다. 다음 예제에서는 필수 SELinux 기본 버전입니다
38.1.53-5.sudo dnf repoquery --requires --latest-limit=1 mssql-server-selinux | egrep '^selinux-policy(-base)?'다음은 출력 예제입니다.
selinux-policy >= 38.1.53-5.el9_6 selinux-policy-base >= 38.1.53-5.el9_6이 예제에서 가장 높은 부 버전 태그가 지정된 요구 사항은
38.1.53-5.el9_6입니다. 따라서 SELinux(mssql-server-selinux)를 사용하여 SQL Server를 설치하고 RHEL 9에서 제한된 애플리케이션으로 실행하려면 RHEL 9.6 이상이 필요합니다.
SQL Server를 제한된 서비스로 설치
기본적으로 패키지는 mssql-server SELinux 정책 없이 SQL Server를 설치하고 SQL Server는 정의되지 않은 서비스로 실행됩니다. 패키지 설치는 mssql-server를 자동으로 활성화하여 selinux_execmode 부울을 사용하도록 설정합니다. 다음 명령을 사용하여 SQL Server가 정의되지 않은 상태로 실행되고 있는지 확인할 수 있습니다.
ps -eZ | grep sqlservr
예상 출력은 다음과 같습니다.
system_u:system_r:unconfined_service_t:s0 48265 ? 00:00:02 sqlservr
패키지 mssql-server-selinux를 설치하면, sqlservr 프로세스를 제한하는 사용자 지정 SELinux 정책이 활성화됩니다. 이 정책을 설치하면 selinuxuser_execmod 부울이 초기화되고, mssql 정책이라는 이름의 정책으로 대체됩니다. 이 정책은 새 sqlservr 도메인의 mssql_server_t 프로세스를 제한합니다.
ps -eZ | grep sqlservr
예상 출력은 다음과 같습니다.
system_u:system_r:mssql_server_t:s0 48941 ? 00:00:02 sqlservr
SQL Server 및 SELinux 형식
패키지를 사용하여 mssql-server-selinux 선택적 SELinux 정책을 설치하면 다음과 같은 몇 가지 새 형식이 정의됩니다.
| SELinux 정책 | Description |
|---|---|
mssql_opt_t |
에 mssql-server의 파일을 설치합니다. /opt/mssql |
mssql_server_exec_t |
실행 파일 /opt/mssql/bin/에서 |
mssql_paldumper_exec_t |
코어 덤프를 관리하기 위해 특별한 권한이 필요한 실행 파일 및 스크립트 |
mssql_conf_exec_t |
/opt/mssql/bin/mssql-conf에서 관리 도구 |
mssql_var_t |
/var/opt/mssql 파일의 레이블 |
mssql_db_t |
데이터베이스 파일에 대한 레이블 /var/opt/mssql/data |
Examples
다음 예제에서는 SQL Server가 제한된 서비스로 실행될 때 데이터베이스 위치를 변경하는 방법을 보여 줍니다.
원하는 디렉터리를 만들고 레이블을 다음과 같이
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이 명령은
semanage fcontextSELinux 파일 컨텍스트 매핑을 관리합니다.-a매개 변수는 새 파일 컨텍스트 규칙을 추가하고,-t매개 변수는 적용할 SELinux 유형을 정의합니다. 이 경우mssql_db_t는 SQL Server 데이터베이스 파일을 위한 것입니다. 마지막으로 이 명령은 이 예제에 있는/opt/mydb경로 패턴을 지정하고 그 안에 있는 모든 파일 및 하위 디렉터리를 포함합니다.를 사용하여
mssql-conf기본 데이터베이스 위치를 설정하고 설치 프로그램을 실행합니다.sudo /opt/mssql/bin/mssql-conf set filelocation.defaultdatadir /opt/mydb/data sudo systemctl restart mssql-serverTransact-SQL을 사용하여 새 데이터베이스를 만들어 확인합니다.
CREATE DATABASE TestDatabase; GO새 데이터베이스가 적절한 레이블로 만들어졌는지 확인합니다.
sudo ls -lZ /opt/mydb/data/예상 출력은 다음과 같습니다.
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이전 예시에서 새 파일들이 타입을
mssql_db_t가진 것을 볼 수 있습니다.