パブリックアクセスが有効な EKS クラスター

EKS API の公開アクセスが必要か確認し、不要な場合はプライベートな管理経路へ切り替えてください。

説明

EKS のパブリック Kubernetes API エンドポイントは、許可された外部ネットワークから接続できる管理用エンドポイントです。接続元の範囲はパブリックアクセス CIDR で決まり、公開エンドポイントでも IAM 認証と Kubernetes の認可が適用されます。

EKS コントロールプレーンはクラスター全体を管理する重要な接続先です。公開範囲を必要以上に広げると、外部からのスキャンやアクセス試行を受ける範囲が増えます。

想定される影響

  • コントロールプレーンの露出: 許可された外部の接続元から Kubernetes API サーバーへのアクセスを試行できます。
  • 攻撃対象の拡大: 認証の試行や脆弱性探索の対象となる可能性が高まります。
  • 運用上の分離の弱まり: 内部専用の管理経路ではなく、公開アクセスの制御に依存します。

対処方法

  • 公開アクセスが不要な場合は、endpoint_private_access = true を設定し、endpoint_public_access = false に切り替えてください。
  • 切り替える前に、VPC または接続済みの管理ネットワークから、必要な DNS、ルート、セキュリティグループを通じてノードと管理者が API に接続できることを確認してください。
  • 公開アクセスが必要な場合は CIDR を承認済みの送信元に限定し、認証と認可も併せて管理してください。

例

API アクセス設定の抜粋です。参照する IAM ロールとサブネットを別途定義し、実際の管理接続を準備してください。

変更前

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
  }
}

変更後

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 = false
    endpoint_private_access = true
  }
}

変更前はパブリック API アクセスを許可します。変更後はプライベートエンドポイントを有効にし、公開アクセスを無効にします。必要なノードと管理者の接続を先に検証してください。プライベートアクセスでも適切な認証と認可が必要です。

参考資料