SELinux を使用してコンテナを保護する

このページでは、SELinux を有効にしてコンテナを保護する方法について説明します。RHEL と CentOS の SELinux がサポートされています。ホストマシンが RHEL または CentOS を実行している場合で、クラスタで SELinux を有効にするには、すべてのホストマシンで SELinux を有効にする必要があります。リリース 1.9.0 以降の GDCV for Bare Metal では、クラスタの作成かアップグレードの前後で SELinux を有効または無効にできます。ホストで SELinux が有効になっている場合、コンテナ ランタイムで有効化されます。

SELinux が有効化されていることを確認する

デフォルトでは、RHEL と CentOS で SELinux が有効になっています。確認するには、次のコマンドを実行します。

$ getenforce

このコマンドからは、EnforcingPermissive または Disabled が返されます。コマンドから Enforcing が返された場合は、クラスタのアップグレードやクラスタの作成に進むことができます。

SELinux を有効にする

getenforce コマンドが Permissive を返す場合は、setenforce コマンドを使用して Enforcing モードに切り替えることができます。setenforce を使用した Permissive モードと Enforcing モードの切り替えにシステムの再起動は必要ありません。ただし、再起動後も変更を維持する場合は、/etc/selinux/config ファイルを更新する必要があります。

Enforcing モードに切り替えるには、次のコマンドを実行します。

$ sudo setenforce 1 # temporary
$ sudo sed -i 's/SELINUX=permissive/SELINUX=enforcing/g' /etc/selinux/config # persistent - after reboot

SELinux が Disabled の場合は、有効にするには、まず Permissive モードで有効にしてシステムを再起動し、システムが正常に起動することを確認するようおすすめします。SELinux にエラーが存在しない場合は、SELinux を Enforcing モードに安全に切り替えることができます。

  1. 省略可: Permissive モードで SELinux を有効にします。

    $ sudo sed -i 's/SELINUX=disabled/SELINUX=permissive/g' /etc/selinux/config
    $ sudo reboot
    
  2. システムが SELinux のエラーが生じることなく正常に再起動した場合は、Enforcing モードを有効にできます。

    $ sudo sed -i 's/SELINUX=disabled/SELINUX=enforcing/g' /etc/selinux/config
    $ sudo reboot
    

SELinux が Enforcing モードで有効になると、コンテナ ランタイムを含むホスト上のすべてのプロセスに対して SELinux が有効になります。