使用 SELinux 保護容器

SELinux 可讓您強化主機上的容器隔離和存取控管機制。在執行 Red Hat Enterprise Linux (RHEL) 的主機上啟用 SELinux 時,容器執行階段也會啟用 SELinux。您必須在叢集的所有主機上啟用 SELinux,這項設定可在建立或升級叢集之前或之後進行。

檢查是否已啟用 SELinux

RHEL 預設會啟用 SELinux。

  • 如要驗證,請執行:

    getenforce
    

指令會傳回 Enforcing、Permissive 或 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
    

在 Enforcing 模式中啟用 SELinux 後,主機上的所有程序 (包括容器執行階段) 都會啟用 SELinux。