ネットワーク ポリシーは、ポッド通信を定義および制御することで、Kubernetes クラスターをセキュリティで保護するために不可欠です。 トラフィック フローを規制することで、承認されていないアクセスと潜在的なセキュリティ侵害を軽減します。 Advanced Container Networking Services は、 FQDN ベースのネットワーク ポリシーを使用してセキュリティを強化します。 この基盤を拡張して、Advanced Container Networking Services では L7 ポリシーのサポートが提供されるようになりました。これにより、アプリケーション レベルのトラフィックの詳細な検査と管理が可能になります。 この進歩により、AKS クラスター内のネットワーク通信のセキュリティと効率の両方が向上します。 このオファリングには、HTTP、gRPC、Kafka など、広く採用されているプロトコルに対する包括的なサポートが含まれています。
L7 ポリシーのコンポーネント
Envoy プロキシ: AcNS セキュリティ エージェントの一部である Envoy は、L7 ポリシーの適用ポイントとして機能します。 TPROXY は、定義された L7 ポリシーと比較して、アプリケーション トラフィックを検査します。 スケーラビリティとリソース管理を強化するために、Envoy は Cilium エージェントから切り離された別の DaemonSet としてデプロイされます。
L7 ポリシーのしくみ
アプリケーションまたはポッドに対して L7 ポリシーの適用が有効になっている場合、最初に送信ネットワーク トラフィックが評価され、構成されたアプリケーション レベルの規則への準拠が決定されます。 ソース ポッドのネットワーク インターフェイスに接続されている eBPF プローブによってパケットがマークされ、ノード ローカルの Envoy プロキシにリダイレクトされます。 このリダイレクトは、L7 ポリシーを適用するポッドに対してのみ行われ、ポリシーの適用が選択的に適用されます。
Cilium ネットワーク フィルターで拡張された Envoy プロキシは、ポリシー条件に基づいてトラフィックを宛先ポッドに転送するかどうかを決定します。 許可されている場合、トラフィックは続行されます。そうでない場合、Envoy は発生元のポッドに適切なエラー コードを返します。 承認が成功すると、Envoy プロキシはトラフィック フローを容易にし、アプリケーション レベルの可視性と制御を提供します。 これにより、Cilium エージェントはポリシー エンジン内で詳細なネットワーク ポリシーを適用できます。 次の図は、L7 ポリシー適用の概要フローを示しています。
Hubble と Grafana を使用した L7 トラフィックの監視
L7 トラフィック フロー (特に HTTP、gRPC、Kafka) に関する分析情報を得るために、Azure CNI Powered by Cilium は Hubble エージェントを利用します。これは、Advanced Container Networking Services で既定で有効になっています。 Hubble には、詳細なフロー レベルのメトリックが用意されています。
これらの L7 メトリックの分析を簡略化するために、事前構成済みの Azure Managed Grafana ダッシュボードが用意されています。 "> などのファイル名を含む、Azure Managed Prometheus フォルダーダッシュボードの下にあります。
これらのダッシュボードは、クラスター、名前空間、およびワークロード レベルで L7 フロー データを詳細に可視化します。
注
これらのダッシュボードには、クラスターでこの機能が有効になっていて、関連するポリシーが適用されている場合にのみ、データが表示されます。 さらに、監視メトリックは、ACNS セキュリティ エージェントのコンポーネントである Envoy を通過する必要 はありません 。 代わりに、これらのメトリックは、高度なコンテナー ネットワーク サービスの監視機能の一部としてクラスターにインストールされている Hubble エージェントによって収集されます。
主な利点
詳細な Application-Level 制御: L7 ポリシーを使用すると、HTTP メソッド、gRPC パス、Kafka トピックなど、アプリケーション固有の属性に基づいてネットワーク トラフィックをきめ細かく制御できます。 これは、従来のネットワーク ポリシーの基本的な IP アドレスとポートベースの制御を超えて拡張されます。
セキュリティ強化: アプリケーション レベルのトラフィックを検査することで、L7 ポリシーは、アプリケーション層の脆弱性を悪用する攻撃を防ぐことができます。 これには、特定の API またはサービスへの承認されていないアクセスのブロックが含まれます。 さらに、L7 ポリシーはゼロ トラスト セキュリティ戦略の重要なコンポーネントであり、アプリケーション層で最小限の特権の原則を適用できます。
グレースフル エラー処理: 通常、承認されていないトラフィックをサイレントで削除する L3/L4 ポリシーとは異なり、L7 ポリシーはアプリケーション レベルのエラー コード (HTTP 403、Kafka 承認エラーなど) を返し、アプリケーションでエラーをより適切に処理できます。
可観測性: AKS クラスターに適用された高度なコンテナー ネットワーク サービスと L7 ポリシーに対して可観測性を有効にすると、Grafana ダッシュボードを使用してトラフィックとポリシーの有効性を監視できます。
制限事項と考慮事項
- 現在の機能のサポートは、HTTP、HTTPS、gRPC、Kafka に基づく Cilium のレイヤー 7 ポリシーの適用に依存しています。
- プレビューでは、サポートされるクラスターの最大サイズは最大 1,000 ノードまたは 40,000 ポッドのいずれか大きい方です。
- Envoy プロキシを通過するトラフィックには待機時間が伴います。 ユーザーは、1 秒あたり 3,000 要求を超えて顕著な待機時間の低下が発生する可能性があります。
- 監視ソリューションの一環として、「envoy_http_rq_total」指標を提供します。 これらのメトリックは要求の合計数を示します。これは、1 秒あたりの要求の派生に使用できます (rps)。
- Cilium のアップグレードまたはロールアウト中に、既存のセッションを正常に閉じることができます。 アプリケーションは、これらの中断を適切に処理することが期待されます。通常は、接続または要求レベルで再試行メカニズムを実装します。 ロールアウト中に開始された新しい接続には影響しません。
- Advanced Container Networking Services (ACNS) を介した L7 ポリシーは、Istio などの別の方法で実装された L7 ポリシーと互換性がありません。 次の表は、サポートされているシナリオをまとめたものです。
機能/コンポーネント | AKS、Istio を使用した L7 ポリシー - 管理されたアドオン |
---|---|
Cilium を利用した Azure CNI による K8s ネットワーク ポリシー | サポートされています |
Cilium と ACNS を利用した Azure CNI による L4 (FQDN) ポリシー | サポートされています |
Cilium と ACNS によって強化された Azure CNI による L7 (HTTP(s)/GRPC/Kafka) ポリシー | サポートされていません |
価格設定
重要
アドバンスト コンテナー ネットワークサービスは有料オファリングです。 価格の詳細については、「アドバンスト コンテナー ネットワークサービス - 価格」を参照してください。
次のステップ
AKS に L7 ポリシーを適用する 方法について説明します。
オープン ソース コミュニティが Cilium ネットワーク ポリシーを構築する方法について確認します。
Azure Kubernetes Service (AKS) 用のアドバンスト コンテナー ネットワークサービスの詳細については、Azure Kubernetes Service (AKS) 用のアドバンスト コンテナー ネットワークサービスとは何かに関するページを参照してください。
高度なコンテナネットワーキングサービスのコンテナネットワーク監視機能について調べます。
Azure Kubernetes Service