2.2. ホストおよび仮想マシンのセキュリティーについて
コンテナーと仮想マシンはいずれも、ホストで実行されているアプリケーションをオペレーティングシステム自体から分離する方法を提供します。RHCOS (OpenShift Container Platform で使用されるオペレーティングシステム) に関する理解は、ホストシステムがコンテナーおよびホストを相互から保護する方法を確認する際に役立ちます。
2.2.1. Red Hat Enterprise Linux CoreOS (RHCOS) 上のコンテナーの保護 リンクのコピーリンクがクリップボードにコピーされました!
コンテナーは、それぞれのコンテナーを起動するために同じカーネルおよびコンテナーランタイムを使用して、同じホストで実行される多数のアプリケーションのデプロイメントを単純化します。アプリケーションは多くのユーザーが所有できます。これらのアプリケーションを分離した状態に維持し、これらのアプリケーションの別々のバージョン、また互換性のないバージョンも問題なく同時に実行できるためです。
Linux では、コンテナーは特殊なタイプのプロセスにすぎないため、コンテナーのセキュリティーを保護することは、他の実行中のプロセスを保護することと多くの点で似ています。コンテナーを実行する環境は、オペレーティングシステムで起動します。このオペレーティングシステムでは、ホストで実行しているコンテナーや他のプロセスからホストカーネルのセキュリティーを保護するだけでなく、複数のコンテナーのセキュリティーを相互から保護できる必要があります。
OpenShift Container Platform 4.20 は、RHCOS ホスト上で実行され、Red Hat Enterprise Linux (RHEL) をワーカーノードとして使用することもできます。そのため、デプロイされた OpenShift Container Platform クラスターには、デフォルトで次の概念が適用されます。これらの RHEL セキュリティー機能は、OpenShift Container Platform で実行中のコンテナーのセキュリティーを強化するためのコアとなる機能です。
- Linux 名前空間 は、特定のグローバルなシステムリソースの抽象化を作成し、名前空間内のプロセスに対して、そのリソースが独立したインスタンスであるかのように見せることを可能にします。これにより、複数のコンテナーが競合せずに同じコンピューティングリソースを同時に使用することができます。デフォルトでホストから分離されているコンテナー名前空間として、マウントテーブル、プロセステーブル、ネットワークインターフェイス、ユーザー、コントロールグループ、UTS、および IPC 名前空間があります。ホストの名前空間への直接アクセスが必要なコンテナーには、そのアクセスを要求するための昇格された権限が必要です。名前空間の種類の詳細は、RHEL 9 コンテナーのドキュメントの コンテナーの構築、実行、および管理 を参照してください。
- SELinux はセキュリティーの層を追加し、コンテナーを相互に、またホストから分離させます。SELinux により、管理者は、それぞれのユーザー、アプリケーション、プロセスおよびファイルに対して強制アクセス制御 (MAC) を実施できます。
RHCOS での SELinux の無効化はサポートされていません。
- CGroup (コントロールグループ) はプロセスのコレクションに関するリソースの使用 (CPU、メモリー、ディスク I/O、ネットワークなど) を制限し、設定し、分離します。CGroup は、同じホスト上のコンテナーが相互に影響を与えないようにするために使用されます。
- Secure computing mode (seccomp) プロファイルは、利用可能なシステム呼び出しを制限するためにコンテナーに関連付けることができます。seccomp の詳細は、Red Hat OpenShift security guide の 94 ページを参照してください。
- RHCOS を使用したコンテナーのデプロイは、ホスト環境を最小化してコンテナー向けに調整することで、攻撃される対象の規模を縮小します。CRI-O コンテナーエンジン は、デスクトップ指向のスタンドアロン機能を実装する他のコンテナーエンジンとは対照的に、Kubernetes および OpenShift Container Platform が必要とする機能のみを実装してコンテナーを実行し、管理することで、その攻撃対象領域をさらに削減します。
RHCOS は、OpenShift Container Platform クラスターのコントロールプレーン (マスター) およびワーカーノードとして機能するように特別に設定された Red Hat Enterprise Linux (RHEL) のバージョンです。そのため、RHCOS は、Kubernetes および OpenShift Container Platform サービスと共にコンテナーのワークロードを効率的に実行するように調整されます。
OpenShift Container Platform クラスターの RHCOS システムをさらに保護するには、ホストシステム自体の管理またはモニタリングを行うコンテナーを除き、ほとんどのコンテナーを root 以外のユーザーとして実行する必要があります。権限レベルを下げたり、付与する権限を可能な限り低くしてコンテナーを作成することが、独自の OpenShift Container Platform クラスターを保護する方法として推奨されます。