説明
AKS の制御プレーンはクラスター全体を管理するインターフェイスです。公開 API エンドポイントの許可範囲が広いと、外部からの接続試行が増える場合があります。公開エンドポイントは認証なしのアクセスを意味せず、プライベートクラスターでも認証と最小権限が必要です。
想定される影響
- クラスター API が外部のスキャンや攻撃試行の対象になる場合があります。
- アクセス制限を誤って変更すると、管理ツールやデプロイ処理が停止する場合があります。
対処方法
- 内部アクセスだけが必要なら
private_cluster_enabled = trueを検討し、管理ネットワークのルーティングと DNS を先に設定してください。VPN や ExpressRoute など必要な接続をテストしてください。 - 公開 API が必要なら承認された IP 範囲に限定し、認証と RBAC を維持してください。Terraform 計画でクラスターの置換を確認し、ワークロードと管理経路の移行を準備してください。
例
API の公開設定だけを比較する抜粋であり、ノードプールや ID など他の必須設定は省略しています。既存クラスターへ適用する前に、プライベート接続と DNS を用意してください。
変更前
hcl
resource "azurerm_kubernetes_cluster" "example" {
name = "example-aks1"
location = azurerm_resource_group.example.location
resource_group_name = azurerm_resource_group.example.name
dns_prefix = "exampleaks1"
private_cluster_enabled = false
}
変更後
hcl
resource "azurerm_kubernetes_cluster" "example" {
name = "example-aks1"
location = azurerm_resource_group.example.location
resource_group_name = azurerm_resource_group.example.name
dns_prefix = "exampleaks1"
private_cluster_enabled = true
}
補足:
- 変更前: プライベートクラスターを使用しません。実際の公開 API 制限と認証は別途確認が必要です。
- 変更後: API サーバーのプライベートアクセスを使用します。アプリケーションの LoadBalancer や Ingress まで非公開になる設定ではありません。