SELinux e Azure CycleCloud
A maioria das distribuições modernas baseadas em Chapéu Vermelho Linux (RHEL, CentOS) vêm com o Linux Melhorado de Segurança (SELinux) instalado e definido por enforcing
padrão. SELinux é um reforço de segurança para o Linux que permite aos administradores um maior controlo sobre o controlo de acessos. O Azure CycleCloud suporta o SELinux por padrão, mas para suportar uma série de aplicações HPC, o CycleCloud modificará o ambiente SELinux em nome do administrador.
Clusters HPC e SELinux
Muitos clusters HPC Azure Cyclecloud usam um diretório doméstico NFS compartilhado para facilitar a submissão de empregos e facilitar a partilha de informações entre nós de computação. Os clusters que utilizam um diretório doméstico partilhado incluem PBS Pro, Grid Engine e Slurm.
A política de diretório doméstico SELinux padrão impede a utilização de um suporte NFS ou qualquer coisa além de /casa para um diretório doméstico. Por esta razão, se a gestão do utilizador estiver ativada, o CycleCloud executará automaticamente os comandos necessários para permitir um diretório doméstico não standard /partilhado/casa , bem como permitir diretórios domésticos NFS.
Para permitir um diretório doméstico não normal, os seguintes comandos são executados para primeira cópia do contexto de segurança de /casa para /compartilhado/casa e, em seguida, para redefinir o contexto de segurança recursivamente no novo diretório doméstico:
semanage fcontext -a -e /home /shared/home
restorecon -R /shared/home
Nota
De um modo geral, o nó na maioria dos master
clusters HPC exporta o sistema de ficheiros usado como diretório doméstico para todos os execute
nós. Neste caso, /shared/home não é um suporte NFS no master
, mas sim um symlink para /mnt/exportações/compartilhado/casa que é o diretório exportado via NFS.
Nota
De um modo geral, o nó na maioria dos scheduler
clusters HPC exporta o sistema de ficheiros usado como diretório doméstico para todos os execute
nós. Neste caso, /shared/home não é um suporte NFS no scheduler
, mas sim um symlink para /mnt/exportações/compartilhado/casa que é o diretório exportado via NFS.
Para a montagem de VMs no sistema de ficheiros partilhados, os diretórios domésticos NFS devem ser explicitamente habilitados para que os utilizadores iniciem sessão no VM:
setsebool -P use_nfs_home_dirs 1
Para executar os comandos acima, algumas embalagens serão instaladas se ainda não estiverem instaladas no sistema operativo: policycoreutils
fornece os restorecon
comandos e setsebool
comandos enquanto policycoreutils-python
ou policycoreutils-python-utils
fornece o semanage
comando dependendo da versão OS.
Nota
A maioria dos clusters Azure CycleCloud usam /compartilhado/casa como diretório doméstico do cluster, mas algumas configurações podem usar um caminho diferente. Se for esse o caso, os mesmos comandos são executados utilizando o caminho alternativo em vez de /compartilhado/casa.
SeLinux incapacitante
Em alguns casos, uma aplicação pode não funcionar corretamente devido ao SELinux. Para depurar mais facilmente, o CycleCloud permite que um administrador de cluster deslote o modo permissive
SELinux ou disabled
através da opção de configuração:
cyclecloud.selinux.policy = permissive # or `disabled`
Para alterar a política SELinux num nível DESebo é emitido um setenforce 0
comando para definir temporariamente o MODOLINUX para permissive
o modo e, em seguida, o ficheiro /etc/selinux/config é modificado para alterar permanentemente o modo SELinux.
Para executar setenforce
a embalagem libselinux-utils
será instalada se ainda não estiver instalada no SISTEMA.
Importante
Depois de configurar o SELinux para desativar, é necessário reiniciar o VM para desativar totalmente o SELinux. O VM permanece em modo permissivo até ser reiniciado.