SELinux i Azure CycleCloud
Większość nowoczesnych dystrybucji systemu Linux opartych na systemie Red Hat (RHEL, CentOS) jest domyślnie zainstalowana z enforcing
zainstalowanym systemem Linux rozszerzonym o zabezpieczenia (SELinux). SELinux to rozszerzenie zabezpieczeń systemu Linux, które umożliwia administratorom większą kontrolę nad kontrolą dostępu. Usługa Azure CycleCloud domyślnie obsługuje środowisko SELinux, ale w celu obsługi wielu aplikacji HPC usługa CycleCloud zmodyfikuje środowisko SELinux w imieniu administratora.
Klastry HPC i SELinux
Wiele klastrów HPC usługi Azure Cyclecloud używa udostępnionego katalogu macierzystego systemu plików NFS, aby ułatwić przesyłanie zadań i ułatwić udostępnianie informacji między węzłami obliczeniowymi. Klastry korzystające z udostępnionego katalogu macierzystego to PBS Pro, Grid Engine i Slurm.
Domyślne zasady katalogu głównego SELinux uniemożliwiają użycie instalacji systemu plików NFS lub innych elementów poza /home dla katalogu macierzystego. Z tego powodu, jeśli zarządzanie użytkownikami jest włączone, usługa CycleCloud automatycznie uruchamia niezbędne polecenia, aby zezwolić zarówno na nieskonfigurowany katalog główny /shared/home , jak również zezwala na katalogi macierzyste NFS.
Aby włączyć nietypowy katalog główny, należy uruchomić następujące polecenia, aby najpierw skopiować kontekst zabezpieczeń z /home do /shared/home , a następnie zresetować kontekst zabezpieczeń cyklicznie w nowym katalogu głównym:
semanage fcontext -a -e /home /shared/home
restorecon -R /shared/home
Uwaga
Ogólnie rzecz biorąc, master
węzeł w większości klastrów HPC eksportuje system plików używany jako katalog główny dla wszystkich execute
węzłów. W takim przypadku /shared/home nie jest instalacją systemu plików NFS na serwerze master
, ale zamiast tego jest to symlink do /mnt/export/shared/home , który jest katalogiem wyeksportowanym za pośrednictwem systemu plików NFS.
Uwaga
Ogólnie rzecz biorąc, scheduler
węzeł w większości klastrów HPC eksportuje system plików używany jako katalog główny dla wszystkich execute
węzłów. W takim przypadku /shared/home nie jest instalacją systemu plików NFS na serwerze scheduler
, ale zamiast tego jest to symlink do /mnt/export/shared/home , który jest katalogiem wyeksportowanym za pośrednictwem systemu plików NFS.
W przypadku maszyn wirtualnych instalowania udostępnionego systemu plików katalogi główne systemu plików NFS muszą być jawnie włączone, aby użytkownicy logowali się do maszyny wirtualnej:
setsebool -P use_nfs_home_dirs 1
Aby uruchomić powyższe polecenia, niektóre pakiety zostaną zainstalowane, jeśli nie zostały jeszcze zainstalowane w systemie operacyjnym: policycoreutils
udostępnia restorecon
polecenia i setsebool
podczas policycoreutils-python
lub policycoreutils-python-utils
udostępnia semanage
polecenie w zależności od wersji systemu operacyjnego.
Uwaga
Większość klastrów Usługi Azure CycleCloud używa /shared/home jako katalogu macierzystego klastra, ale niektóre konfiguracje mogą używać innej ścieżki. Jeśli tak jest, te same polecenia są uruchamiane przy użyciu alternatywnej ścieżki zamiast /shared/home.
Wyłączanie środowiska SELinux
W niektórych przypadkach aplikacja może nie działać poprawnie z powodu selinux. Aby łatwiej debugować, usługa CycleCloud umożliwia administratorowi klastra ustawienie trybu SELinux na permissive
lub disabled
za pomocą opcji konfiguracji:
cyclecloud.selinux.policy = permissive # or `disabled`
Aby zmienić zasady SELinux na poziomie setenforce 0
systemu operacyjnego, polecenie jest wydawane w celu tymczasowego ustawienia trybu SELinux, permissive
a następnie plik /etc/selinux/config jest modyfikowany w celu trwałej zmiany trybu SELinux.
Aby uruchomić setenforce
pakiet libselinux-utils
, zostanie zainstalowany, jeśli nie został jeszcze zainstalowany w systemie operacyjnym.
Ważne
Po ustawieniu ustawienia seLinux na wyłączone ponowne uruchomienie maszyny wirtualnej jest wymagane do pełnego wyłączenia seLinux. Maszyna wirtualna pozostaje w trybie permisywnym do momentu ponownego uruchomienia.