Amazon EKS セキュリティグループの要件および考慮事項
このトピックでは、Amazon EKS クラスターのセキュリティグループの要件について説明します。
クラスターを作成すると、Amazon EKS により eks-cluster-sg-
という名前のセキュリティグループが作成されます。セキュリティグループには、デフォルトで次のルールがあります。my-cluster
-uniqueID
[Rule type] (ルールタイプ) | プロトコル | ポート | 送信元 | 送信先 |
---|---|---|---|---|
インバウンド |
すべて |
すべて |
自分 | |
アウトバウンド |
すべて |
すべて |
0.0.0.0/0 ( |
重要
クラスターにアウトバウンドルールが必要ない場合は、削除できます。削除する場合でも、「クラスタートラフィックの制限」に記載されている最低限のルールが適用されます。インバウンドルールを削除すると、Amazon EKS はクラスターが更新されるたびにそのルールを再作成します。
Amazon EKS は次のタグをセキュリティグループに追加します。タグを削除した場合、Amazon EKS はクラスターが更新されるたびにこれらのタグをセキュリティグループに追加します。
キー | 値 |
---|---|
kubernetes.io/cluster/ |
owned |
aws:eks:cluster-name |
|
Name |
eks-cluster-sg- |
Amazon EKS は、同様に作成される次のリソースに、セキュリティグループを自動的に関連付けます。
-
2—4 エラスティックネットワークインターフェイス (これ以降、ネットワークインターフェイス) は、クラスターの作成時に作成されます。
-
作成したマネージドノードグループ内のノードのネットワークインターフェイス。
デフォルトのルールでは、すべてのトラフィックがクラスターとノード間で自由に行き来することができます。また、任意の送信先へのすべてのアウトバウンドトラフィックが許可されています。クラスターを作成すると、オプションで独自のセキュリティグループを指定できます。その場合、Amazon EKS は、指定したセキュリティグループをクラスター用に作成するネットワークインターフェイスにも関連付けます。ただし、作成したノードグループには関連付けられません。
クラスターのセキュリティグループの ID は、AWS Management Console のクラスターの [Networking] (ネットワーキング) セクションで確認できます。もしくは、次の AWS CLI コマンドを実行して確認できます。
aws eks describe-cluster --name
my-cluster
--query cluster.resourcesVpcConfig.clusterSecurityGroupId
クラスタートラフィックの制限
クラスターとノード間で開いているポートの数を制限する必要がある場合は、デフォルトのアウトバウンドルールを削除し、クラスターに必要な次の最低限のルールを追加できます。デフォルトのインバウンドルールを削除すると、Amazon EKS はクラスターが更新されるたびにそのルールを再作成します。
[Rule type] (ルールタイプ) | プロトコル | ポート | 送信先 |
---|---|---|---|
アウトバウンド | TCP |
443 |
クラスターセキュリティグループ |
アウトバウンド | TCP |
10250 |
クラスターセキュリティグループ |
アウトバウンド (DNS) | TCP と UDP | 53 | クラスターセキュリティグループ |
次のトラフィックにもルールを追加する必要があります。
-
ノード間通信にノードが使用するプロトコルおよびポート。
-
アウトバウンドのインターネットアクセス。これによりノードが Amazon EKS API にアクセス可能になり、起動時のノードの登録やクラスターの詳細分析が行えます。ノードがインターネットにアクセスできない場合は、「プライベートクラスターの要件」でその他の考慮事項を参照してください。
-
Amazon ECR や、イメージをプルする必要があるその他のコンテナレジストリ (DockerHub など) からコンテナイメージをプルするためのノードのアクセス。詳細については、AWS 全般のリファレンス の「AWS IP アドレスの範囲」を参照してください。
-
Amazon S3 へのノードのアクセス。
-
IPv4
やIPv6
アドレスが必要な個別のルール。
ルールの制限を検討している場合は、変更したルールを本番稼働用のクラスターに適用する前に、すべての Pods を徹底的にテストすることをお勧めします。
最初に Kubernetes 1.14
と eks.3
以前のプラットフォームバージョンを使用してクラスターをデプロイした場合は、次の点を考慮してください。
-
コントロールプレーンおよびノードセキュリティグループがある場合もあります。これらのグループの作成時、前の表に示した制限付きルールが含まれていました。これらのセキュリティグループは不要で、削除できます。ただし、それらのグループに含まれるルールがクラスターセキュリティグループに含まれていることを確認する必要があります。
-
API を使用してクラスターを直接デプロイした場合、または AWS CLI や AWS CloudFormation などのツールを使用してクラスターを作成しており、クラスター作成時にセキュリティグループを指定しなかった場合、Amazon EKS が作成したクラスターネットワークインターフェイスに VPC のデフォルトのセキュリティグループが適用されます。