説明
EKS の公開 API に 0.0.0.0/0 を許可すると、すべての IPv4 アドレスから接続を試行できます。認証と Kubernetes の認可は引き続き適用されますが、公開アクセスが必要な場合も管理用 IP 範囲を限定する必要があります。
全送信元を許可すると、不要な認証試行やスキャンを受ける範囲が広がります。
想定される影響
- コントロールプレーンの広範な露出: インターネット上の各所からクラスターエンドポイントへのアクセスを試行できます。
- 攻撃試行の増加: 総当たり、脆弱性探索、自動スキャンの対象となる可能性があります。
- 運用上のリスク: 漏えいした認証情報が、接続元ネットワークの制限を受けずに悪用される可能性があります。
対処方法
public_access_cidrsを管理ネットワークや承認済みクライアントの実際の送信元 IP 範囲に限定してください。- プライベートエンドポイントを使わないノードがある場合は、ノードまたは NAT の送信元アドレスも許可する必要があります。変更前にノードと管理者の接続をテストしてください。
- 公開アクセスが不要な場合は、プライベートエンドポイントと接続経路を用意してから
endpoint_public_access = falseに切り替えてください。
例
参照するロールとサブネットは別途定義してください。変更後の 203.0.113.10/32 は説明用のアドレスです。承認済みの管理用アドレスと、必要なノードの送信元アドレスに置き換えてください。
変更前
hcl
resource "aws_eks_cluster" "example" {
name = "example"
role_arn = aws_iam_role.example.arn
vpc_config {
subnet_ids = [aws_subnet.example1.id, aws_subnet.example2.id]
endpoint_public_access = true
public_access_cidrs = ["0.0.0.0/0"]
}
}
変更後
hcl
resource "aws_eks_cluster" "example" {
name = "example"
role_arn = aws_iam_role.example.arn
vpc_config {
subnet_ids = [aws_subnet.example1.id, aws_subnet.example2.id]
endpoint_public_access = true
public_access_cidrs = ["203.0.113.10/32"]
}
}
変更前は、すべての IPv4 アドレスに公開 API へのアクセスを許可します。変更後は指定したアドレスに範囲を絞ります。CIDR 制限は認証や認可の代わりにはならず、プライベートエンドポイントへのアクセスを制御する設定でもありません。