CSP)は、コンテナとクラウドネイティブアプリケーションへのフルライフサイクルなセキュリティを提供します。CSPの機能の1つ、ファイアウォールについて説明します。CSPが特定のコンテナファイアウォールポリシーを適用できるコンテナの論理グループです。ファイアウォールサービスに適用されるポリシーには、デフォルトコンテナファイアウォールポリシー、および1つ以上のカスタムコンテナファイアウォールポリシーを含めることが出来ます。多くの場合はデフォルトファイアウォールで、コンテナ同士の通を信可能に出来ます。CSPのサービスネットワークによって、実行中コンテナ間通信の可視化を行うことが出来ます。ファイアウォールの必要性コンテナでサービスを行う例として、以下の組み合わせを考えます。Volume(以下PV)この組み合わせの場合、以下のような構成図になります。ファイアウォールでは、以下のように通信を許可します(上記青線部分になります)。HTTPDの通信root以外のユーザ権限でサービス起動する推奨構成の場合は、HTTPDは1024以上のポート番号を使用する必要があります。外部からの通信はホストに対してポートフォワードすることで行います。そのため、ホストもしくはLBでIP接続制限を行います。外部からの接続はHTTPDを経由して受信するため、HTTPDからの接続のみ許可すべきです。外部からアプリケーションへの接続は行わず、プロキシ(HTTPDなど)を経由することをお勧めします。アプリケーションから外部への接続を行うのは、アプリケーションが使用する通信のみに限定することをお勧めします。DBの通信アプリケーションからDBへの接続のみを許可します。接続ポートはDBによって異なります。Socketによる接続の場合は、アプリケーション/DBが同じPVにsocketファイルを配置する必要があります。この場合、接続ポートの許可は必要ありません。DBから別コンテナへの通信は、別DBとレプリカやクラスタを組む場合のみです。DBからDB以外への通信は許可しません。CSPの「サービス」は、コンテナファイアウォールのポリシーを適用できるコンテナの論理グループです。ファイアウォールによるフィルタリングは、コンテナファイアウォールポリシー、メンバーシップルール、コンテナファイアウォールポリシーによって決定されます。CSPのサービスは、以下のコンポーネントで構成されます。ファイアウォールによるフィルタリングは、コンテナファイアウォールポリシー、メンバーシップルール、コンテナファイアウォールポリシーによって決定されます。CSPがコンテナファイアウォールのポリシー違反をどのように処理するかを決定します。ポリシー違反時の処理は、コンテナホスト上などに配置されるエンフォーサーが制御します。Enforce(制御)実行時に、エンフォーサーはコンテナに適用されるコンテナファイアウォールポリシーを適用し、制御します。Only(監査のみ)実行時に、エンフォーサーはコンテナファイアウォールポリシーを適用しませんが、監査ログにイベントを記録します。メンバーンバーシップルールスコープサービスに所属するコンテナを定義します。これは、論理演算子で結合された、1つ以上のコンテナ関連の属性からなる表現です。指定されたコンテナがどのサービスに属しているかを判断するために使用されます。0から100までの値を指定でき、100が優先度一番高いものになります。コンテナファイアウォールポリシーサービス内のすべてのコンテナに適用される0個以上のファイアウォールポリシーです。デフォルトコンテナファイアウォールポリシーやカスタムコンテナファイアウォールポリシーの0個以上の組み合わせになります。コンテナファイアウォールポリシーポリシーが適用されるべきコンテナイメージを定義します。これは、論理演算子で結合された、1つ以上のコンテナ関連の属性からなる表現です。CSPは、コンテナファイアウォールポリシーを「サービス(Services)」に登録されたコンテナへ適用します。デフォルトコンテナファイアウォールポリシーは、すべてのコンテナに適用されます。このデフォルトコンテナファイアウォールポリシーには、独自のルールを追加・変更することが出来ます。多くの場合、予め定義されたファイアウォールポリシーの組み合わせで必要なコンテナファイアウォールを管理することが出来ます。独自にカスタムファイアウォールポリシーを定義することが出来ます。特定のサービスに対してネットワークのルールを追加出来ます。カスタムファイアウォールポリシー単位で、違うルールを定義出来ます。CSPは、Istio/EnvoyおよびConduit/LinkerDプロキシのどちらのサービスメッシュ環境にも展開出来ます。このセキュリティソリューションはサービスメッシュ環境に対して透過的に適用出来ます。コンテナファイアウォールのルールは、EnvoyまたはLinkerDポリシーと並行して適用することが出来ます。runC環境のためのファイアウォールポリシーコンテナファイアウォールポリシーは、runCコンテナランタイム環境(CRI-Oとcontainerdをサポート)をサポートします。Enforcerを展開するとき、コンテナファイアウォールの有効・無効を選択出来ます。コンテナホスト上で実行されているコンテナに対してコンテナファイアウォールポリシーを適用するには、コンテナファイアウォールを有効にする必要があります。CSPで事前定義されています。これは、デフォルトで各サービスに含まれ、サービスのメンバーでないすべてのコンテナにも適用されます。デフォルトコンテナファイアウォールポリシーは、サービスから削除することも可能です。デフォルトコンテナファイアウォールポリシーはすべてのIPアドレスおよびポートに関してインバウンド・アウトバウンドの通信を許可します。このルールに対して、追加・変更を行えます。カスタムファイアウォールポリシーを追加する追加のコンテナーファイアウォールポリシーを追加して、サービスに適用出来ます。新しいポリシーを追加するには、ポリシーを作成し規則を追加します。サービスページのポリシーセクションで「Add」を押すと、以下の画面が表示されます。Changes」ボタンを押せば新しいコンテナファイアウォールポリシーを追加出来ます。コンテナファイアウォールポリシーの追加には、以下の項目が必要です。ポリシー名(必須)ポリシーの説明また1つのポリシーに、以下のアウトバウンド・インバウンドのネットワークポリシーを複数設定可能です。アウトバウンド・インバウンドポート(複数設定、ポート範囲指定可能)送信先もしくは送信元のIPアドレス/CIDR上記条件の許可・拒否アウトバウンドルールでは、クラウドメタデータサービスへのアクセスを許可・拒否するかを選択出来ます。クラウドメタデータサービスは、コンテナがAWS、Azure、GCPで動作している場合に付加されます。サービスにコンテナファイアウォールポリシーを追加サービスにコンテナファイアウォールポリシーを追加するには、サービスページのコンテナファイアウォールセクションでファイアウォールポリシーを選択し、「Add」を押して以下の設定画面を表示させます。この設定画面で、ルールを追加・削除することが出来ます。ルールの優先順位(100~0で、数字の大きい方優先)もこの画面で設定出来ます。トラフィック監視から、コンテナファイアウォールポリシーを作成。サービスへの実際のネットワークトラフィックに基づいて、コンテナファイアウォールポリシーを作成出来ます。サービスのネットワークマップビューを開き、一定期間のネットワークトラフィックを記録します。CSPは、記録された実際のトラフィックから得られた有効なファイアウォール規則のリストを作成することが出来ます。これらの規則を新しいコンテナファイアウォールポリシーとして保存し、変更することが出来ます。不要なトラフィックはブロックしたほうが良いでしょう。ネットワークマップ上のブロックされた接続はすべて赤い線で表示されます。Enforcerがインストール・実行されているホスト上で動作するコンテナを含むことがあります。どの時点でも、コンテナはサービスなしに属することも、1つのサービスに属することも出来ます。サービスのメンバーシップを評価するために、Aquaは各コンテナの属性(例えばKubernetes名前空間やAquaラベル)を、すべてのサービス定義の範囲で定義されたものと比較します。CSPはそのサービスのコンテナファイアウォールポリシーをコンテナに適用します。CSPは最も高いルール優先順位を持つサービスをそのコンテナに適用します。コンテナ複数のサービスのメンバーシップに対して品質を提供し、そのサービスが同じルール優先順位を持つ場合、その割当結果は不確定です。ベストプラクティスとして、すべてのサービスに異なるルール優先度が設定されていることを確認してください。CSPは、以下のような評価の結果を変える可能性のあるイベント発生時に、サービスメンバーシップを再評価します。コンテナの作成サービスの追加または削除サービス定義の変更(スコープ、ルール優先度など)上の図で、スコープ・ルール優先度、コンテナファイアウォールポリシーについて説明します。スコープとしてScope1~4、ルールとしてA、B、Cを用意します。Cが一番低いものとします。