ビュー:
プロファイル適用性: レベル1
クラスター ノードのパブリック IP アドレスを無効にして、プライベート IP アドレスのみを持つようにします。プライベート ノードは、パブリック IP アドレスを持たないノードです。
クラスターノードでパブリックIPアドレスを無効にすると、アクセスが内部ネットワークのみに制限され、攻撃者は基盤となるKubernetesホストを侵害しようとする前にローカルネットワークへのアクセスを取得する必要があります。

影響

プライベートノードを有効にするには、クラスターをプライベートマスターIP範囲とIPエイリアシングが有効な状態で構成する必要があります。
プライベートノードはパブリックインターネットへのアウトバウンドアクセスを持っていません。プライベートノードにアウトバウンドインターネットアクセスを提供したい場合は、Cloud NATを使用するか、独自のNATゲートウェイを管理することができます。

監査

以下がenabled: trueであることを確認してください:
export CLUSTER_NAME=<your cluster name>
aws eks describe-cluster --name ${CLUSTER_NAME} --query \
"cluster.resourcesVpcConfig.endpointPrivateAccess"
aws eks describe-cluster --name ${CLUSTER_NAME} --query \
"cluster.resourcesVpcConfig.endpointPublicAccess"
次の項目がnullでなく、適切なIPが設定されており、0.0.0.0/0でないことを確認してください:
export CLUSTER_NAME=<your cluster name>
aws eks describe-cluster --name ${CLUSTER_NAME} --query \
"cluster.resourcesVpcConfig.publicAccessCidrs"
注意
注意
ノードがプライベートサブネットにデプロイされており、パブリックIPが割り当てられていないかどうかも確認してください。プライベートサブネットは、インターネットゲートウェイ (IGW) へのルートを持つルートテーブルに関連付けられてはいけません。

修復

AWS CLIを使用してEKSノードグループノードのパブリックIPアドレスを無効にするには、create-nodegroupを実行する際に次の点を確認する必要があります。
  • パブリックIPを自動割り当てしないプライベートサブネットを使用してください。
  • associatePublicIpAddressをfalseに設定します。
"NetworkInterfaces": [{ "AssociatePublicIpAddress": false }]
次の方法を使用して、コントロールプレーンエンドポイントへのアクセスを制限できます。
aws eks update-cluster-config \
--name $CLUSTER_NAME \
--region $REGION_CODE \
--resources-vpc-config endpointPublicAccess=false,endpointPrivateAccess=true
これによりAPIサーバはプライベートになりますが、ノードのIPには影響しません。
ノードがプライベートIPのみを使用するようにするには:
  • aws eks create-nodegroupを使用してプライベートサブネットのみを指定するか
  • AssociatePublicIpAddress=falseを使用して起動テンプレートを使用します。