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 orienta você a começar a usar o SQL Server como um serviço confinado em uma distribuição Security-Enhanced Linux (SELinux) 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 a usar gratuitamente um sistema operacional habilitado para SELinux.
O SQL Server 2022 no Linux é oficialmente certificado para o RHEL 9 (desde julho de 2024) e agora está em disponibilidade 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 pacote de mssql-server-selinux
.
Pré-requisitos
O SELinux deve estar habilitado e no modo
enforcing
. Você pode verificar o status do SELinux executando o comandosestatus
.sestatus
Esta é 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: 33
Instale o pacote
mssql-server-selinux
que 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.
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
Depois de instalar o pacote mssql-server-selinux
, ele habilita uma política personalizada do SELinux que limita o processo de sqlservr
. Quando você instala essa política, o selinuxuser_execmod
booliano é redefinido e substituído por uma política chamada mssql
, que limita o processo de sqlservr
no novo domínio mssql_server_t
.
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 a política SELinux opcional é instalada com o pacote mssql-server-selinux
, alguns novos tipos são definidos:
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 despejos de núcleo |
mssql_conf_exec_t |
Ferramenta de gerenciamento em /opt/mssql/bin/mssql-conf |
mssql_var_t |
Etiqueta para arquivos em /var/opt/mssql |
mssql_db_t |
Etiqueta 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 está em execução 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/mydb
O comando
semanage fcontext
gerencia o mapeamento de contexto do arquivo SELinux. O parâmetro-a
adiciona uma nova regra de contexto de arquivo e o parâmetro-t
define o tipo SELinux a ser aplicado, que nesse caso émssql_db_t
para arquivos de banco de dados do SQL Server. Por fim, o padrão de caminho é especificado, que é/opt/mydb
neste exemplo e 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-server
Verifique criando um novo banco de dados usando o Transact-SQL:
CREATE DATABASE TestDatabase; GO
Verifique 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.mdf
No exemplo anterior, você pode ver que o arquivo tem o
mssql_db_t
(tipo) associado aos novos arquivos criados.
Conteúdo relacionado
- limitações de segurança para o SQL Server no Linux
- passo a passo para os recursos de segurança do SQL Server no Linux
- início rápido : instalar o SQL Server e criar um banco de dados no Red Hat