Freigeben über


SELinux und Azure CycleCloud

Die meisten modernen Red Hat-basierten Linux-Distributionen (RHEL, CentOS) sind mit installierter Security Enhanced Linux (SELinux) installiert und standardmäßig festgelegt enforcing . SELinux ist eine Sicherheitsverbesserung für Linux, die Administratoren mehr Kontrolle über die Zugriffssteuerung ermöglicht. Azure CycleCloud unterstützt STANDARDMÄßIG SELinux, aber um eine Reihe von HPC-Anwendungen zu unterstützen, ändert CycleCloud die SELinux-Umgebung im Namen des Administrators.

HPC-Cluster und SELinux

Viele Azure Cyclecloud HPC-Cluster verwenden ein freigegebenes NFS-Heimverzeichnis, um die Übermittlung von Aufträgen zu erleichtern und die Freigabe von Informationen zwischen Computeknoten zu erleichtern. Cluster, die ein freigegebenes Heimverzeichnis verwenden, umfassen PBS Pro, Grid Engine und Slurm.

Die Standardmäßige SELinux-Verzeichnisrichtlinie verhindert die Verwendung eines NFS-Mounts oder eines anderen Elements neben /home für ein Startverzeichnis. Aus diesem Grund führt CycleCloud automatisch die erforderlichen Befehle aus, um sowohl ein nicht standardmäßiges Heimverzeichnis /shared/home zuzulassen als auch NFS-Heimverzeichnisse zuzulassen.

Um ein nicht standardmäßiges Startverzeichnis zu aktivieren, werden die folgenden Befehle ausgeführt, um zuerst den Sicherheitskontext von /home nach /shared/home zu kopieren und dann den Sicherheitskontext rekursiv im neuen Startverzeichnis zurückzusetzen:

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

Hinweis

Im Allgemeinen exportiert der master Knoten in den meisten HPC-Clustern das Dateisystem, das als Startverzeichnis für alle execute Knoten verwendet wird. In diesem Fall ist /shared/home kein NFS-Mount, master sondern stattdessen ein Symlink zu /mnt/exports/shared/home , das das Verzeichnis ist, das über NFS exportiert wird.

Hinweis

Im Allgemeinen exportiert der scheduler Knoten in den meisten HPC-Clustern das Dateisystem, das als Startverzeichnis für alle execute Knoten verwendet wird. In diesem Fall ist /shared/home kein NFS-Mount, scheduler sondern stattdessen ein Symlink zu /mnt/exports/shared/home , das das Verzeichnis ist, das über NFS exportiert wird.

Für VMs, die das freigegebene Dateisystem bereitstellen, müssen NFS-Heimverzeichnisse explizit aktiviert sein, damit benutzer sich bei der VM anmelden können:

setsebool -P use_nfs_home_dirs 1

Um die obigen Befehle auszuführen, werden einige Pakete installiert, wenn sie nicht bereits auf dem Betriebssystem installiert sind: policycoreutils stellt die restorecon Befehle bereit, setsebool während policycoreutils-python oder policycoreutils-python-utils der semanage Befehl abhängig von der Betriebssystemversion bereitgestellt wird.

Hinweis

Die meisten Azure CycleCloud-Cluster verwenden /shared/home als Startverzeichnis des Clusters, aber einige Konfigurationen verwenden möglicherweise einen anderen Pfad. Wenn dies der Fall ist, werden dieselben Befehle mit dem alternativen Pfad anstelle von /shared/home ausgeführt.

Deaktivieren von SELinux

In einigen Fällen funktioniert eine Anwendung aufgrund von SELinux möglicherweise nicht ordnungsgemäß. Um das Debuggen zu erleichtern, ermöglicht CycleCloud einem Clusteradministrator das Festlegen des SELinux-Modus auf permissive oder disabled über die Konfigurationsoption:

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

Um die SELinux-Richtlinie auf Betriebssystemebene zu ändern, wird ein setenforce 0 Befehl ausgegeben, um SELinux vorübergehend auf permissive den Modus festzulegen, und dann wird die Datei "/etc/selinux/config " geändert, um den SELinux-Modus dauerhaft zu ändern.

Um das Paket auszuführen setenforce , wird das Paket installiert, wenn das Paket libselinux-utils nicht bereits auf dem Betriebssystem installiert ist.

Wichtig

Nach dem Festlegen von SELinux auf deaktiviert ist ein Neustart der VM erforderlich, um SELinux vollständig zu deaktivieren. Der virtuelle Computer bleibt im unzulässigen Modus, bis er neu gestartet wurde.