プロファイル適用性: レベル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を使用して起動テンプレートを使用します。
