EKS ノードグループのリモートアクセス制限が不十分

EKS ノードの管理ポートを、承認された管理ホストが使うセキュリティグループに制限してください。

説明

EKS マネージドノードグループの作成時に RemoteAccess.Ec2SshKey を指定し、SourceSecurityGroups を省略すると、管理ポートが 0.0.0.0/0 に開かれます。Linux ノードでは SSH の 22、Windows ノードでは RDP の 3389 が対象です。実際のインターネット到達性には、アドレス、経路、他のネットワーク条件も関係します。

運用ノードへの直接リモート接続は、必要な場合だけに制限してください。接続元を絞っても、OS の認証やノード・クラスターの権限管理は必要です。

想定される影響

  • 到達可能な管理ポートが、外部スキャンや認証への攻撃の対象になるおそれがあります。
  • ノードが侵害されると、そのノードのデータ、認証情報、権限に応じてワークロードやクラスターへ影響が広がる可能性があります。

対処方法

  • リモート接続が必要な場合は、SourceSecurityGroups に承認された管理用グループを指定し、実際の管理ホストをそのグループに関連付けてください。
  • 直接接続が不要ならリモートアクセス設定を削除し、必要なエージェント、IAM 権限、通信経路を備えた Session Manager などの管理方法を検討してください。
  • CloudFormation でリモートアクセス属性を変更すると、ノードグループの置き換えが必要です。ワークロードの容量と移行を計画し、接続範囲を試験してください。

例

クラスター、ノードロール、サブネット、VpcId は実際の環境に合わせて用意してください。Ec2SshKey: ED25519 の値はアルゴリズムの指定ではなく、既存の EC2 キーペア名である必要があります。

変更前

yaml
Resources:
  EKSNodegroup:
    Type: AWS::EKS::Nodegroup
    Properties:
      ClusterName: prod
      NodeRole: arn:aws:iam::012345678910:role/eksInstanceRole
      Subnets:
        - subnet-6782e71e
      RemoteAccess:
        Ec2SshKey: ED25519

キーペアだけを指定し、管理アクセスの送信元グループを制限していません。

変更後

yaml
Resources:
  SSHAccessToNodeSG:
    Type: AWS::EC2::SecurityGroup
    Properties:
      VpcId: !Ref VpcId
      GroupDescription: ssh access to eks workers

  EKSNodegroup:
    Type: AWS::EKS::Nodegroup
    Properties:
      ClusterName: prod
      NodeRole: arn:aws:iam::012345678910:role/eksInstanceRole
      Subnets:
        - subnet-6782e71e
      RemoteAccess:
        Ec2SshKey: ED25519
        SourceSecurityGroups:
          - !Ref SSHAccessToNodeSG

指定のグループを使う管理ホストからの接続に制限します。グループを作成するだけではホストは関連付けられないため、関連付けとネットワーク経路を別途準備してください。

参考資料