接続元セキュリティグループがない EKS ノードのリモートアクセス

EKS ノードグループへのリモートアクセスを許可する場合は、接続元のセキュリティグループも制限してください。

説明

EKS マネージドノードグループの作成時に EC2 SSH キーを指定し、接続元セキュリティグループを指定しないと、管理ポートが 0.0.0.0/0 に開かれます。Linux は SSH の 22 番、Windows は RDP の 3389 番ポートが対象です。実際の接続可否は、アドレス、ルートなどのネットワーク設定にも左右されます。

リモートアクセス自体が常に危険なわけではありませんが、許可範囲を明確にする必要があります。

想定される影響

  • 管理ポートの露出拡大: ノードへのリモートアクセス範囲が必要以上に広がる可能性があります。
  • 運用アクセス制御の弱まり: 承認済み管理ホストだけに接続を限定しにくくなります。
  • 攻撃対象の拡大: 外部から到達できるノードが認証試行や脆弱性探索を受ける可能性があります。

対処方法

  • remote_access.source_security_group_ids に、承認済み管理ホストが使用するセキュリティグループ ID を指定してください。
  • リモートアクセスが不要な場合は削除を検討してください。
  • 踏み台ホストや SSM Session Manager などの代替経路には、必要な IAM 権限と接続経路を用意し、変更計画にノードの置換が含まれるか確認してください。

例

リモートアクセス設定の抜粋です。参照するリソース、スケーリング設定、既存の EC2 キーペアを別途用意してください。変更後の management セキュリティグループは、承認済みの管理ホストに関連付けたグループを使用してください。

変更前

hcl
resource "aws_eks_node_group" "example" {
  cluster_name    = aws_eks_cluster.example.name
  node_group_name = "example"
  node_role_arn   = aws_iam_role.example.arn
  subnet_ids      = aws_subnet.example[*].id

  remote_access {
    ec2_ssh_key = "my-rsa-key"
  }
}

変更後

hcl
resource "aws_eks_node_group" "example" {
  cluster_name    = aws_eks_cluster.example.name
  node_group_name = "example"
  node_role_arn   = aws_iam_role.example.arn
  subnet_ids      = aws_subnet.example[*].id

  remote_access {
    ec2_ssh_key                = "my-rsa-key"
    source_security_group_ids = [aws_security_group.management.id]
  }
}

変更前はキーだけを指定し、管理ポートの接続元を制限していません。変更後は管理ホストのセキュリティグループ ID をリストで指定します。実際のホスト接続と、他のセキュリティグループルールも確認してください。

参考資料