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.