Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Este artigo ajuda-o a começar com o SQL Server como um serviço confinado numa distribuição Security-Enhanced Linux (SELinux) baseada no Red Hat Enterprise Linux (RHEL).
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 Arquitetura SELinux. Você também pode começar a usar um sistema operacional habilitado para SELinux gratuitamente.
O SQL Server 2022 no Linux é oficialmente certificado com RHEL 9 (a partir de julho de 2024) e agora está disponível em geral no Red Hat Ecosystem Catalog.
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 mssql-server-selinux pacote.
Pré-requisitos
Ative o SELinux e defini-lo para o modo
enforcing. Verifica o estado do SELinux executando osestatuscomando.sestatusAqui está 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
mssql-server-selinuxpacote que define as políticas personalizadas necessárias.
Observação
Se algum dos pré-requisitos não for atendido, o SQL Server será executado como um serviço não confinado.
Requisito mínimo de versão menor de RHEL
Para correr o SQL Server como uma aplicação confinada no RHEL 9, deve usar pelo menos uma versão menor do RHEL. Este requisito existe devido às dependências de lançamento pontual nos pacotes SELinux. O pacote mssql-server-selinux, que é necessário para correr o SQL Server em modo confinado, depende dos pacotes selinux-policy e selinux-policy-base.
Passos para identificar a versão mínima do RHEL
Adicione o repositório SQL Server que contém
mssql-server-selinux.Para 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 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.repoObservação
Se planeias instalar no RHEL 10, então muda para os repositórios RHEL 10.
Execute o seguinte comando para visualizar as dependências de políticas do 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 exigida, indicada por um sufixo como
.el9_6. Este sufixo representa a versão mínima de RHEL 9 para a qual a política foi criada. Por exemplo,.el9_6corresponde ao RHEL 9.6.Se não aparecer tal sufixo na saída, consulte a documentação da Red Hat para determinar a versão mínima de RHEL associada a essa build de política SELinux. No exemplo seguinte, a versão base necessária do SELinux é
38.1.53-5.sudo dnf repoquery --requires --latest-limit=1 mssql-server-selinux | egrep '^selinux-policy(-base)?'Aqui está um exemplo de saída:
selinux-policy >= 38.1.53-5.el9_6 selinux-policy-base >= 38.1.53-5.el9_6Neste exemplo, o requisito mais alto marcado por versão menor é
38.1.53-5.el9_6. Portanto, precisas de pelo menos RHEL 9.6 para instalar SQL Server com SELinux (mssql-server-selinux), e executá-lo como uma aplicação confinada no RHEL 9.
Instalar o SQL Server como um serviço confinado
Por padrão, o pacote instala o SQL Server sem a política SELinux e o mssql-server SQL Server é executado como um serviço não confinado. A mssql-server instalação do pacote habilita automaticamente o selinux_execmode Boolean. Você pode verificar se o SQL Server está sendo executado sem confinamento usando o seguinte comando:
ps -eZ | grep sqlservr
Aqui está a saída esperada.
system_u:system_r:unconfined_service_t:s0 48265 ? 00:00:02 sqlservr
Quando instalas o mssql-server-selinux pacote, ele ativa uma política SELinux personalizada que limita o sqlservr processo. Quando instala esta política, o selinuxuser_execmod Booleano é redefinido e substituído por uma política chamada mssql. Esta política limita o sqlservr processo ao novo mssql_server_t domínio.
ps -eZ | grep sqlservr
Aqui está a saída esperada.
system_u:system_r:mssql_server_t:s0 48941 ? 00:00:02 sqlservr
Tipos SQL Server e SELinux
Quando instala a política opcional SELinux usando o mssql-server-selinux pacote, ela define alguns novos tipos:
| Política do SELinux | Descrição |
|---|---|
mssql_opt_t |
Instale arquivos do mssql-server em /opt/mssql |
mssql_server_exec_t |
Arquivos executáveis em /opt/mssql/bin/ |
mssql_paldumper_exec_t |
Executáveis e scripts que requerem permissões especiais para gerir despejos de memória |
mssql_conf_exec_t |
Ferramenta de gestão na /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 seguinte demonstra como alterar a localização da base de dados quando o SQL Server corre 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 do ficheiro, e o-tparâmetro define o tipo SELinux a aplicar, que neste caso émssql_db_tpara ficheiros de base de dados SQL Server. Finalmente, o comando especifica o padrão de caminho, que está/opt/mydbneste exemplo, e inclui todos os ficheiros e subdiretórios dentro dele.Defina o local do banco de dados padrão usando mssql-conf e 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 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/Aqui está 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, pode ver que o ficheiro tem o
mssql_db_ttipo associado aos novos ficheiros criados.