Udostępnij za pośrednictwem


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.