Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Este artigo ajuda você a começar a usar o SQL Server como um serviço confinado em uma distribuição do SELinux (Linux Security-Enhanced) com base no RHEL (Red Hat Enterprise Linux).
O que é Security-Enhanced Linux?
Security-Enhanced Linux (SELinux) é uma arquitetura de segurança para sistemas Linux. Ele ajuda a definir controles de acesso para aplicativos, processos e arquivos em um sistema. O SELinux usa um conjunto de regras ou políticas de segurança, para definir o que pode ou não ser acessado. O SELinux fornece aos administradores mais controle sobre quem pode acessar o sistema. Para obter mais informações, consulte O que é SELinux (Security-Enhanced Linux).
Para obter detalhes sobre como habilitar o SELinux para sistemas Red Hat, consulte de arquitetura SELinux. Você também pode começar com um Sistema operacional habilitado para SELinux gratuito.
SQL Server 2022 no Linux é oficialmente certificado para o RHEL 9 (desde julho de 2024) e agora está em disponibilidade geral no Catálogo do ecossistema do Red Hat.
SQL Server e SELinux
Um serviço confinado com SELinux significa que ele é restrito por regras de segurança, explicitamente definidas na política SELinux. Para o SQL Server, as políticas personalizadas do SELinux são definidas no pacote de mssql-server-selinux.
Pré-requisitos
Habilite SELinux e defina-o como
enforcingmodo. Verifique o status do SELinux executando osestatuscomando.sestatusEsta é a saída esperada.
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: 33Instale o pacote
mssql-server-selinuxque define as políticas personalizadas necessárias.
Nota
Se qualquer um dos pré-requisitos não for atendido, o SQL Server será executado como um serviço não definido.
Requisito mínimo de versão secundária do RHEL
Para executar o SQL Server como um aplicativo confinado no RHEL 9, você deve usar uma versão secundária mínima do RHEL. Esse requisito existe devido a dependências de versões pontuais nos pacotes SELinux. O pacote mssql-server-selinux, que você precisa para executar o SQL Server no modo confinado, depende dos pacotes selinux-policy e selinux-policy-base.
Etapas para identificar a versão secundária mínima do RHEL
Adicione o repositório do SQL Server que contém
mssql-server-selinux.Para o SQL Server 2025 (17.x) no RHEL 9:
sudo curl -o /etc/yum.repos.d/mssql-server.repo https://packages.microsoft.com/config/rhel/9/mssql-server-2025.repoPara o SQL Server 2022 (16.x) no RHEL 9:
sudo curl -o /etc/yum.repos.d/mssql-server.repo https://packages.microsoft.com/config/rhel/9/mssql-server-2022.repoNota
Se você planeja instalar no RHEL 10, altere para os repositórios RHEL 10.
Execute o seguinte comando para exibir as dependências da política SELinux:
sudo dnf repoquery --requires --latest-limit=1 mssql-server-selinux | egrep '^selinux-policy(-base)?'A saída inclui a versão mínima da política SELinux necessária, indicada por um sufixo como
.el9_6. Esse sufixo representa a versão secundária mínima do RHEL 9 para a qual a política foi criada. Por exemplo,.el9_6corresponde ao RHEL 9.6.Se nenhum sufixo aparecer na saída, consulte a documentação do Red Hat para determinar a versão secundária mínima do RHEL associada a esse build de política SELinux. No exemplo a seguir, a versão base do SELinux necessária é
38.1.53-5.sudo dnf repoquery --requires --latest-limit=1 mssql-server-selinux | egrep '^selinux-policy(-base)?'Este é um exemplo de saída:
selinux-policy >= 38.1.53-5.el9_6 selinux-policy-base >= 38.1.53-5.el9_6Neste exemplo, a exigência mais alta com tag de versão secundária é
38.1.53-5.el9_6. Portanto, você precisa de pelo menos RHEL 9.6 para instalar o SQL Server com SELinux (mssql-server-selinux) e executá-lo como um aplicativo confinado no RHEL 9.
Instalar o SQL Server como um serviço confinado
Por padrão, o pacote mssql-server instala o SQL Server sem a política SELinux e o SQL Server é executado como um serviço não definido. A instalação do pacote mssql-server habilita automaticamente o booliano selinux_execmode. Você pode verificar se o SQL Server está sendo executado sem conexão usando o seguinte comando:
ps -eZ | grep sqlservr
Esta é a saída esperada.
system_u:system_r:unconfined_service_t:s0 48265 ? 00:00:02 sqlservr
Quando você instala o mssql-server-selinux pacote, ele habilita uma política personalizada do SELinux que limita o sqlservr processo. Quando você instala essa política, o selinuxuser_execmod Boolean é redefinido e substituído por uma política chamada mssql. Essa política limita o sqlservr processo no novo mssql_server_t domínio.
ps -eZ | grep sqlservr
Esta é a saída esperada.
system_u:system_r:mssql_server_t:s0 48941 ? 00:00:02 sqlservr
Tipos de SQL Server e SELinux
Quando você instala a política seLinux opcional usando o mssql-server-selinux pacote, ela define alguns novos tipos:
| Política SELinux | Descrição |
|---|---|
mssql_opt_t |
Instalar arquivos do mssql-server para /opt/mssql |
mssql_server_exec_t |
Arquivos executáveis em /opt/mssql/bin/ |
mssql_paldumper_exec_t |
Executáveis e scripts que exigem permissões especiais para gerenciar core dumps |
mssql_conf_exec_t |
Ferramenta de gerenciamento em /opt/mssql/bin/mssql-conf |
mssql_var_t |
Rótulo para arquivos em /var/opt/mssql |
mssql_db_t |
Rótulo para os arquivos de banco de dados em /var/opt/mssql/data |
Exemplos
O exemplo a seguir demonstra a alteração do local do banco de dados quando o SQL Server é executado como um serviço confinado.
Crie os diretórios desejados e rotule-os como
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/mydbO comando
semanage fcontextgerencia o mapeamento de contexto do arquivo SELinux. O-aparâmetro adiciona uma nova regra de contexto de arquivo e o-tparâmetro define o tipo SELinux a ser aplicado, que nesse caso émssql_db_tpara arquivos de banco de dados do SQL Server. Por fim, o comando especifica o padrão de caminho, que está/opt/mydbneste exemplo, e inclui todos os arquivos e subdiretórios dentro dele.Defina o local do banco de dados padrão usando mssql-confe execute a instalação.
sudo /opt/mssql/bin/mssql-conf set filelocation.defaultdatadir /opt/mydb/data sudo systemctl restart mssql-serverVerifique criando um novo banco de dados usando o Transact-SQL:
CREATE DATABASE TestDatabase; GOVerifique se o novo banco de dados foi criado com os rótulos apropriados.
sudo ls -lZ /opt/mydb/data/Esta é a saída esperada.
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.mdfNo exemplo anterior, você pode ver que o arquivo tem o
mssql_db_ttipo associado aos novos arquivos criados.