プロファイル適用性: レベル2
ノードネットワーク外からのKubernetes APIへのアクセスが不要な場合は、アクセスを無効にしてください。
プライベートクラスターでは、マスターノードにはプライベートエンドポイントとパブリックエンドポイントの2つのエンドポイントがあります。プライベートエンドポイントは、マスターの内部IPアドレスであり、マスターの仮想ネットワーク内の内部ロードバランサーの背後にあります。ノードはプライベートエンドポイントを使用してマスターと通信します。パブリックエンドポイントは、マスターの仮想ネットワーク外からKubernetes
APIにアクセスできるようにします。
Kubernetes APIは機密性の高い操作を行うために認証されたトークンを必要としますが、脆弱性によりKubernetesが無制限のアクセスで公開される可能性があります。さらに、攻撃者は現在のクラスターとKubernetes
APIのバージョンを特定し、それが攻撃に対して脆弱かどうかを判断できるかもしれません。必要でない限り、パブリックエンドポイントを無効にすることで、そのような脅威を防ぎ、攻撃者がKubernetes
APIに対して攻撃を行うためにはマスターの仮想ネットワーク上にいる必要があります。
監査
次の設定が適切であることを確認してください:
export CLUSTER_NAME=<your cluster name>
export RESOURCE_GROUP=<your resource group name>
az aks show \
--name "${CLUSTER_NAME}" \
--resource-group "${RESOURCE_GROUP}" \
--query "{enablePrivateCluster:apiServerAccessProfile.enablePrivateCluster, enablePublicFqdn:apiServerAccessProfile.enablePublicFqdn, authorizedIpRanges:apiServerAccessProfile.authorizedIpRanges}" \
--output json
出力は次のようになります:
{
"enablePrivateCluster": true,
"enablePublicFqdn": false,
"authorizedIpRanges": [
"203.0.113.10/32",
"198.51.100.0/24"
]
}
このコマンドは、AKS Clusterの
apiServerAccessProfile内のenablePrivateClusterプロパティを照会します。出力がtrueの場合、endpointPrivateAccessが有効になっており、AKS Cluster APIサーバがプライベートエンドポイント経由でのみアクセス可能に設定されていることを示します。出力がfalseの場合、クラスターはプライベートアクセス専用に設定されておらず、他の設定によってはAPIサーバがインターネット経由でアクセス可能である可能性があります。修復
プライベートエンドポイントを使用するには、仮想ネットワークに新しいプライベートエンドポイントを作成し、仮想ネットワークと新しいプライベートDNS Zoneの間にリンクを作成します。
