Amazon EKS セキュリティグループの考慮事項 - Amazon EKS

Amazon EKS セキュリティグループの考慮事項

以下のセクションでは、クラスター、コントロールプレーン、およびクラスターのノードのセキュリティグループに対して推奨されるセキュリティグループ設定または必要最小限のセキュリティグループ設定について説明します。これらの考慮事項は、使用している Kubernetes のバージョンと Amazon EKS プラットフォームのバージョンによって異なります。

クラスターセキュリティグループ

Kubernetes バージョン 1.14 以降およびプラットフォームバージョン eks.3 以降では、Amazon EKS クラスターの作成時に、クラスターセキュリティグループが作成されます。これは、以前のバージョンのクラスターがこの Kubernetes バージョンおよびプラットフォームバージョンにアップグレードされた場合にも同様です。クラスターセキュリティグループは、コントロールプレーンとマネージド型ノードグループからのすべてのトラフィックが相互に自由に流れるように設計されています。コントロールプレーンがマネージド型ノードグループインスタンスと通信することを可能にする Elastic Network Interface を Amazon EKS によって作成します。この Elastic Network Interface にクラスターセキュリティグループを割り当てれば、この通信を許可するために複雑なセキュリティグループルールを設定する必要がありません。このセキュリティグループが割り当てられているインスタンスまたはネットワークインターフェイスは、このセキュリティグループを使用して他のリソースと自由に通信できます。

クラスターのクラスターセキュリティグループをチェックするには、AWS Management Console の [ネットワーク] セクションを見るか、または次の AWS CLI コマンドを実行します。

aws eks describe-cluster --name <cluster_name> --query cluster.resourcesVpcConfig.clusterSecurityGroupId

クラスターセキュリティグループは、既存のノードグループおよび今後作成するノードグループすべてに追加することをお勧めします。詳細については、Amazon VPC ユーザーガイドの「VPC のセキュリティグループ」を参照してください。Amazon EKS マネージド型ノードグループはクラスターセキュリティグループを使用するように自動的に設定されます。

プロトコル ポート 送信元 送信先

推奨インバウンドトラフィック

すべて

すべて

Self

推奨アウトバウンドトラフィック

すべて

すべて

0.0.0.0/0

クラスタートラフィックの制限

コントロールプレーンとノード間で開いているポートを制限する必要がある場合は、デフォルトのクラスターセキュリティグループを変更して、次の必要最小限のポートのみを許可することができます。必要最小限のポートは、以前の Amazon EKS バージョンと同じです。

プロトコル ポート 送信元 送信先
最小インバウンドトラフィック TCP

443

クラスターセキュリティグループ
最小インバウンドトラフィック* TCP

10250

クラスターセキュリティグループ
最小アウトバウンドトラフィック TCP

443

クラスターセキュリティグループ

最小アウトバウンドトラフィック * TCP

10250

クラスターセキュリティグループ

*必要に応じて、ノード間の通信に使用するプロトコルとポートを含める必要があります。ノードには、クラスターの詳細分析と起動時のノード登録のために Amazon EKS API へのアウトバウンドのインターネットアクセスも必要です。また、プライベートクラスター で実装した所要の設定も必要です。コンテナイメージを取得するには、Amazon S3、Amazon ECR API、および DockerHub などのイメージを取得する必要があるその他のコンテナレジストリにアクセスする必要があります。詳細については、AWS 全般のリファレンスの「AWS IP アドレス範囲」を参照してください。

コントロールプレーンおよびノードセキュリティグループ

Kubernetes バージョン 1.14 および プラットフォームバージョン eks.3 より前に作成された Amazon EKS クラスター では、コントロールプレーンからノードへの通信は、手動でコントロールプレーンのセキュリティグループを作成し、クラスターの作成時にそのセキュリティグループを指定することによって設定されていました。その後クラスターの作成時に、このセキュリティグループは、Amazon EKS が作成したコントロールプレーンとノード間で通信が可能なネットワークインターフェイスにアタッチされました。これらのネットワークインターフェイスの説明には Amazon EKS <cluster name> が記載されています。

注記

API を直接使用するか、AWS CloudFormation などのツールを使用してクラスターを作成し、セキュリティグループを指定しなかった場合、VPC のデフォルトのセキュリティグループがコントロールプレーンのクロスアカウントネットワークインターフェイスに適用されました。

クラスターのコントロールプレーンのセキュリティグループは、AWS Management Console のクラスターの [ネットワーク] セクション ([追加のセキュリティグループ] として一覧表示されています)、または次の AWS CLI コマンドでチェックできます。

aws eks describe-cluster --name <cluster_name> --query cluster.resourcesVpcConfig.securityGroupIds

Amazon EKS の使用開始 チュートリアルの AWS CloudFormation テンプレートを使用してノードを起動した場合、AWS CloudFormation はコントロールプレーンのセキュリティグループを変更し、ノードとの通信を許可します。Amazon EKS では、コントロールプレーンごとに専用のセキュリティグループ (クラスターごとに 1 つ) を使用することを強くお勧めします。コントロールプレーンのセキュリティグループを他の Amazon EKS クラスターまたはリソースと共有している場合、それらのリソースへの接続がブロックされたり中断されたりすることがあります。

ノードのセキュリティグループとノードへのコントロールプレーン通信のセキュリティグループは、ノードの特権付きのポートとの通信を行わないように設定されています。アプリケーションでコントロールプレーンまたはノードからの追加のインバウンドまたはアウトバウンドアクセスが必要な場合は、これらのルールをクラスターに関連付けられているセキュリティグループに追加する必要があります。詳細については、Amazon VPC ユーザーガイドの「VPC のセキュリティグループ」を参照してください。

注記

特権付きのポートでプロキシ機能を許可したり、CNCF 適合テストを自分で実行したりするには、コントロールプレーンとノードのセキュリティグループを編集する必要があります。ノード側のセキュリティグループは、コントロールプレーンからのポート 0-65535 のインバウンドアクセスを許可する必要があり、コントロールプレーン側は、ポート 0-65535 のノードへのアウトバウンドアクセスを許可する必要があります。

コントロールプレーンセキュリティグループ
プロトコル ポート範囲 送信元 送信先
最小インバウンドトラフィック

TCP

443

すべてのノードセキュリティグループ

クラスターエンドポイントのプライベートアクセスが有効になっている場合: API サーバークライアントトラフィックを生成する任意のセキュリティグループ (クラスターの VPC 内の踏み台ホスト上での kubectl コマンドなど)

推奨インバウンドトラフィック

TCP

443

すべてのノードセキュリティグループ

クラスターエンドポイントのプライベートアクセスが有効になっている場合: API サーバークライアントトラフィックを生成する任意のセキュリティグループ (クラスターの VPC 内の踏み台ホスト上での kubectl コマンドなど)

最小アウトバウンドトラフィック

TCP

10250

すべてのノードセキュリティグループ

推奨アウトバウンドトラフィック

TCP

1025-65535

すべてのノードセキュリティグループ

ノードセキュリティグループ
プロトコル ポート範囲 送信元 送信先
最小インバウンドトラフィック (他のノードから)

ノードでノード間通信に使用されるプロトコル

ノードでノード間通信に使用されるポート

すべてのノードセキュリティグループ

最小インバウンドトラフィック (コントロールプレーン)

TCP

10250

コントロールプレーンセキュリティグループ

推奨インバウンドトラフィック

すべて

TCP

すべて

443, 1025-65535

すべてのノードセキュリティグループ

コントロールプレーンセキュリティグループ

最小アウトバウンドトラフィック *

TCP

443

コントロールプレーンセキュリティグループ

推奨アウトバウンドトラフィック

すべて

すべて

0.0.0.0/0

* ノードには、クラスターの詳細分析と起動時のノード登録のために Amazon EKS API にインターネットか VPC エンドポイントを通じてアクセスすることも必要です。コンテナイメージを取得するには、Amazon S3 および Amazon ECR API に (さらに DockerHub など、他のコンテナレジストリにも) アクセスする必要があります。詳細については、AWS 全般のリファレンスの「AWS IP アドレス範囲」および「プライベートクラスター」を参照してください。

ノードに関連付けられたセキュリティグループのうち 1 つだけに、次のタグを適用する必要があります。タグ付けの詳細については、「コンソールでのタグの処理」を参照してください。

キー

kubernetes.io/cluster/<cluster-name>

owned