Compartilhar via


SELinux e Azure CycleCloud

A maioria das distribuições modernas do Linux baseadas no Red Hat (RHEL, CentOS) vem com o SELinux (Security Enhanced Linux ) instalado e definido enforcing como por padrão. O SELinux é um aprimoramento de segurança para o Linux que permite aos administradores mais controle sobre o controle de acesso. O Azure CycleCloud dá suporte ao SELinux por padrão, mas para dar suporte a vários aplicativos HPC, o CycleCloud modificará o ambiente SELinux em nome do administrador.

Clusters HPC e SELinux

Muitos clusters HPC do Azure Cyclecloud usam um diretório NFS compartilhado para facilitar o envio de trabalhos e facilitar o compartilhamento de informações entre nós de computação. Os clusters que utilizam um diretório doméstico compartilhado incluem PBS Pro, Grid Engine e Slurm.

A política de diretório base padrão do SELinux impede o uso de uma montagem NFS ou qualquer coisa além de /home para um diretório doméstico. Por esse motivo, se o gerenciamento de usuários estiver habilitado, o CycleCloud executará automaticamente os comandos necessários para permitir um diretório residencial /compartilhado/home não padrão, bem como permitir diretórios domésticos NFS.

Para habilitar um diretório doméstico não padrão, os seguintes comandos são executados para primeiro copiar o contexto de segurança de /home para /shared/home e, em seguida, redefinir o contexto de segurança recursivamente no novo diretório doméstico:

semanage fcontext -a -e /home /shared/home
restorecon -R /shared/home

Observação

De modo geral, o master nó na maioria dos clusters HPC exporta o sistema de arquivos usado como diretório base para todos os execute nós. Nesse caso, /shared/home não é uma montagem NFS no master mas, em vez disso, é um symlink para /mnt/exports/shared/home , que é o diretório exportado via NFS.

Observação

De modo geral, o scheduler nó na maioria dos clusters HPC exporta o sistema de arquivos usado como diretório base para todos os execute nós. Nesse caso, /shared/home não é uma montagem NFS no scheduler mas, em vez disso, é um symlink para /mnt/exports/shared/home , que é o diretório exportado via NFS.

Para VMs que montam o sistema de arquivos compartilhado, os diretórios domésticos do NFS devem estar explicitamente habilitados para que os usuários façam logon na VM:

setsebool -P use_nfs_home_dirs 1

Para executar os comandos acima, alguns pacotes serão instalados se eles ainda não estiverem instalados no sistema operacional: policycoreutils fornece o e setsebool os restorecon comandos enquanto policycoreutils-python ou policycoreutils-python-utils fornece o semanage comando dependendo da versão do sistema operacional.

Observação

A maioria dos clusters do Azure CycleCloud usa /shared/home como diretório inicial do cluster, mas algumas configurações podem usar um caminho diferente. Se esse for o caso, os mesmos comandos serão executados usando o caminho alternativo em vez de /shared/home.

Desabilitando SELinux

Em alguns casos, um aplicativo pode não funcionar corretamente devido ao SELinux. Para depurar com mais facilidade, o CycleCloud permite que um administrador de cluster defina o modo SELinux para permissive ou disabled por meio da opção de configuração:

cyclecloud.selinux.policy = permissive  # or `disabled`

Para alterar a política SELinux em um nível de sistema operacional, um setenforce 0 comando é emitido para definir temporariamente SELinux como permissive modo e, em seguida, o arquivo /etc/selinux/config é modificado para alterar permanentemente o modo SELinux.

Para executar setenforce o pacote libselinux-utils será instalado se ainda não estiver instalado no sistema operacional.

Importante

Depois de definir SELinux como desabilitado, uma reinicialização da VM é necessária para desabilitar totalmente o SELinux. A VM permanece no modo permissivo até ser reiniciada.