SELinux と Azure CycleCloud

最新の Red Hat ベースの Linux ディストリビューション (RHEL、CentOS) には、 Security Enhanced Linux (SELinux) がインストールされ、既定で設定 enforcing されています。 SELinux は Linux のセキュリティ強化であり、管理者はアクセス制御をより詳細に制御できます。 Azure CycleCloud は既定で SELinux をサポートしていますが、多数の HPC アプリケーションをサポートするために、CycleCloud は管理者の代わりに SELinux 環境を変更します。

HPC クラスターと SELinux

多くの Azure Cyclecloud HPC クラスターでは、共有 NFS ホーム ディレクトリを使用してジョブの送信を容易にし、コンピューティング ノード間の情報の共有を容易にします。 共有ホーム ディレクトリを利用するクラスターには、PBS Pro、Grid Engine、Slurm があります。

既定の SELinux ホーム ディレクトリ ポリシーでは、NFS マウントまたはホーム ディレクトリに 対して /home 以外のものを使用できなくなります。 このため、 ユーザー管理 が有効になっている場合、CycleCloud は必要なコマンドを自動的に実行して、標準以外のホーム ディレクトリ /shared/home を許可し、NFS ホーム ディレクトリを許可します。

標準以外のホーム ディレクトリを有効にするには、次のコマンドを実行して、最初にセキュリティ コンテキストを /home から /shared/home にコピーしてから、新しいホーム ディレクトリでセキュリティ コンテキストを再帰的にリセットします。

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

注意

一般に master 、ほとんどの HPC クラスターのノードは、すべてのノードのホーム ディレクトリとして使用されるファイルシステムを execute エクスポートします。 この場合、 /shared/home は NFS マウント master ではなく、NFS 経由でエクスポートされたディレクトリである /mnt/exports/shared/home へのシンボリック リンクです。

注意

一般に scheduler 、ほとんどの HPC クラスターのノードは、すべてのノードのホーム ディレクトリとして使用されるファイルシステムを execute エクスポートします。 この場合、 /shared/home は NFS マウント scheduler ではなく、NFS 経由でエクスポートされたディレクトリである /mnt/exports/shared/home へのシンボリック リンクです。

共有ファイルシステムをマウントする VM の場合、ユーザーが VM にログインするには、NFS ホーム ディレクトリを明示的に有効にする必要があります。

setsebool -P use_nfs_home_dirs 1

上記のコマンドを実行するために、一部のパッケージがオペレーティング システムpolicycoreutilsにまだインストールされていない場合にインストールされます。OS のバージョンに応じてコマンドをrestoreconsetsebool提供する一方policycoreutils-python、またはpolicycoreutils-python-utilsコマンドを提供semanageします。

注意

ほとんどの Azure CycleCloud クラスターでは、クラスターのホーム ディレクトリとして /shared/home が使用されますが、一部の構成では別のパスが使用される場合があります。 この場合、 /shared/home ではなく代替パスを使用して同じコマンドが実行されます。

SELinux の無効化

場合によっては、SELinux が原因でアプリケーションが正しく動作しない場合があります。 より簡単にデバッグするために、CycleCloud では、クラスター管理者が構成オプションに対して、またはdisabled構成オプションを使用して SELinux モードpermissiveを設定できます。

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

OS レベルで SELinux ポリシーを変更するには、 setenforce 0 SELinux を一時的にモードに設定する permissive コマンドが発行され、 /etc/selinux/config ファイルが変更されて SELinux モードが完全に変更されます。

実行 setenforce するために、OS にまだインストールされていない場合は、パッケージ libselinux-utils がインストールされます。

重要

SELinux を無効に設定した後、SELinux を完全に無効にするには VM の再起動が必要です。 VM は再起動するまで許容モードのままになります。