ある企業が、Amazon EKS クラスター上で動作するマイクロサービスの通信をセキュアにしたい。サービス間の通信は mTLS(相互TLS)で暗号化・認証し、各サービスが最小限のサービスとのみ通信できるようにアクセス制御したい。また、Kubernetes のネットワークポリシーを超えた高度なアクセス制御も必要。これらを実現するサービス/コンポーネントを 2 つ選択してください。
- A. Amazon Cognito でサービス間の認証を行う。
- B. AWS App Mesh をサービスメッシュとして導入し、Envoy プロキシサイドカーで mTLS 通信と高度なトラフィック管理を実現する。
- C. Kubernetes の NetworkPolicy リソースを使ってラベルベースのネットワーク分離を設定する(Kubernetes ネイティブな L3/L4 アクセス制御)。
- D. AWS WAF を EKS クラスターに統合してサービス間通信を保護する。
- E. Amazon VPC セキュリティグループで Pod 間の通信を IP アドレスレベルで制限する。
解答と解説を見る
正解: B, C
EKS のサービス間通信のセキュリティには複数の層でのアプローチが有効である。選択肢BのAWS App Mesh はサービスメッシュとして Envoy プロキシを各 Pod にサイドカーとして注入し、mTLS による自動的なサービス間通信の暗号化と相互認証を実現する。また、HTTP ルーティングルール・サービスグラフ・詳細なトラフィック制御など Kubernetes NetworkPolicy を超えた高度なアクセス制御が可能。選択肢CのKubernetes NetworkPolicy は Pod ラベルに基づく L3/L4 レベルのアクセス制御を提供し、特定の Pod グループ間の通信のみを許可するホワイトリスト型の制御が実装できる。App Mesh(L7 レベルのアクセス制御)と NetworkPolicy(L3/L4 レベル)の組み合わせにより多層防御が実現できる。選択肢EのVPC セキュリティグループは Pod 単位ではなくノード単位の制御が基本であり、Pod レベルの細かい制御には NetworkPolicy が適切(ただし EKS で VPC CNI Security Groups for Pods を使えば Pod 単位も可能だが要件の mTLS 実現には不十分)。選択肢AのCognito はエンドユーザー認証向けであり、サービス間 mTLS 認証には不適切。選択肢DのWAF は HTTP/HTTPS の外部トラフィックのフィルタリングに使うもので、クラスター内部のサービス間通信には適用しない。