翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
ランタイムセキュリティ
ランタイムセキュリティは、コンテナの実行中にコンテナをアクティブに保護します。このアイデアは、コンテナ内で悪意のあるアクティビティが発生しないように検出および/または防止することです。これは、Linux 機能、セキュアコンピューティング (seccomp)、AppArmor、SELinux など、Kubernetes と統合された Linux カーネルまたはカーネル拡張機能のさまざまなメカニズムで実現できます。また、Linux カーネルメカニズムの手動設定を少なくして、ベースラインの確立や異常なアクティビティの検出に役立つ Amazon GuardDuty やサードパーティーツールなどのオプションもあります。
重要
Kubernetes は現在、seccomp、AppArmor、または SELinux プロファイルを Nodes にロードするためのネイティブメカニズムを提供していません。手動でロードするか、ブートストラップ時にノードにインストールする必要があります。これは、スケジューラがプロファイルを持つノードを認識しないため、ポッドでそれらを参照する前に実行する必要があります。Security Profiles Operator などのツールが、ノードへのプロファイルのプロビジョニングを自動化する方法を以下に示します。
セキュリティコンテキストと組み込み Kubernetes コントロール
多くの Linux ランタイムセキュリティメカニズムは Kubernetes と緊密に統合されており、Kubernetes セキュリティコンテキストprivilegedフラグです。これはfalseデフォルトで、有効になっている場合、ホストのルートと基本的に同等です。本番環境のワークロードで特権モードを有効にすることはほぼ常に適切ではありませんが、必要に応じてコンテナに詳細な権限を提供できるコントロールが他にも多数あります。
Linux の機能
Linux 機能を使用すると、ルートユーザーのすべての機能を提供することなく、特定の機能を Pod またはコンテナに付与できます。例としてはCAP_NET_ADMIN、ネットワークインターフェイスまたはファイアウォールの設定を許可する や、システムクロックの操作CAP_SYS_TIMEを許可する などがあります。
Seccomp
セキュアコンピューティング (seccomp) を使用すると、コンテナ化されたアプリケーションが基盤となるホストオペレーティングシステムのカーネルに対して特定の syscall を行うことを防ぐことができます。Linux オペレーティングシステムには数百のシステムコールがありますが、コンテナを実行するために lion が共有する必要はありません。コンテナによって実行できる syscall を制限することで、アプリケーションのアタックサーフェスを効果的に減らすことができます。
Seccomp は、syscalls を傍受し、許可リストに登録されているもののみを通過できるようにすることで機能します。Docker には、ほとんどの汎用ワークロードに適したデフォルトのsecurityContextセクションに追加することで、コンテナランタイムのデフォルトの seccomp プロファイルを使用するようにコンテナまたは Pod を設定できます。
securityContext: seccompProfile: type: RuntimeDefault
1.22 以降 (アルファでは 1.27 以降安定)、上記RuntimeDefaultは単一の kubelet フラグ--seccomp-default。次に、 で指定されたプロファイルsecurityContextは、他のプロファイルにのみ必要です。
追加の権限を必要とするモノに対して独自のプロファイルを作成することもできます。これは手動で行うと非常に面倒ですが、Inspektor Gadget
AppArmor と SELinux
AppArmor と SELinux は、必須アクセスコントロールまたは MAC システム
AppArmor と SELinux はどちらも Kubernetes と統合されていますが、Kubernetes 1.28 以降の AppArmor プロファイルは注釈
seccomp プロファイルと同様に、上記の Security Profiles Operator は、クラスター内のノードへのプロファイルのデプロイに役立ちます。(将来、プロジェクトは seccomp の場合と同様に AppArmor と SELinux のプロファイルを生成することも目標としています)。
推奨事項
Amazon GuardDuty を使用したランタイムのモニタリングと EKS 環境への脅威の検出
現在、EKS ランタイムを継続的にモニタリングし、EKS 監査ログを分析し、マルウェアやその他の疑わしいアクティビティをスキャンするソリューションがない場合、Amazon では、AWS 環境を保護するためのシンプルで高速、安全、スケーラブル、および費用対効果の高いワンクリック方法を必要とするお客様に Amazon GuardDuty
この AWS Online Tech Talk「Amazon GuardDuty で Amazon EKS の脅威検出を強化 - AWS Online Tech Talks
オプション: ランタイムモニタリングにサードパーティーソリューションを使用する
Linux セキュリティに慣れていない場合、seccomp プロファイルと Apparmor プロファイルの作成と管理は難しい場合があります。習熟する時間がない場合は、サードパーティーの商用ソリューションの使用を検討してください。その多くは Apparmor や seccomp などの静的プロファイルを超えて移動し、機械学習を使用して疑わしいアクティビティをブロックまたは警告し始めています。これらのソリューションのいくつかは、 ツールセクションで以下にあります。その他のオプションについては、AWS Marketplace for Containers
seccomp ポリシーを作成する前に Linux 機能の追加/削除を検討する
機能には、syscalls が到達可能なカーネル関数のさまざまなチェックが含まれます。チェックが失敗した場合、syscall は通常エラーを返します。チェックは、特定の syscall の最初、または複数の異なる syscall を通じて到達可能な領域 (特定の特権ファイルへの書き込みなど) でカーネルのより深い方で行うことができます。一方、Seccomp は、実行前にすべての syscall に適用される syscall フィルターです。プロセスは、特定の syscall を実行する権利、または特定の syscall の特定の引数を取り消すことができるフィルターを設定できます。
seccomp を使用する前に、Linux 機能を追加/削除すると、必要なコントロールが得られるかどうかを検討してください。詳細については、「 コンテナの機能の設定
Pod セキュリティポリシー (PSPs) を使用して目標を達成できるかどうか確認する
Pod セキュリティポリシーは、過度に複雑になることなくセキュリティ体制を改善するさまざまな方法を提供します。seccomp プロファイルと Apparmor プロファイルを構築する前にPSPs で使用できるオプションを確認してください。
警告
Kubernetes 1.25 以降、PSPsは削除され、Pod Security Admission
ツールとリソース
-
Security Profiles Operator
は、ユーザーが Kubernetes クラスターで SELinux、seccomp、AppArmor を簡単に使用できるようにする Kubernetes の機能強化です。実行中のワークロードからプロファイルを生成し、Pod で使用する Kubernetes ノードにプロファイルをロードする機能の両方を提供します。 -
Inspektor Gadget
を使用すると、Seccomp プロファイルの生成の支援など、Kubernetes でのランタイム動作のさまざまな側面を検査、トレース、プロファイリングできます。 -
SUSE オープンソースのゼロトラストコンテナセキュリティプラットフォームによる NeuVector
は、プロセスプロファイルルールとファイルアクセスルールを提供します。