説明
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 アクセスを許可します。変更後はプライベートエンドポイントを有効にし、公開アクセスを無効にします。必要なノードと管理者の接続を先に検証してください。プライベートアクセスでも適切な認証と認可が必要です。