プロファイル適用性: レベル1
エンドポイントPrivate Accessを有効にして、クラスターのコントロールプレーンへのアクセスを許可されたIPの許可リストのみに制限します。
許可されたネットワークは、クラスターのコントロールプレーンにアクセスを許可するIPアドレスの範囲を制限する方法です。Kubernetes Engineは、パブリックインターネットからクラスターのコントロールプレーンへの安全なアクセスを提供するために、Transport
Layer Security (TLS) と認証の両方を使用します。これにより、どこからでもクラスターを管理する柔軟性が得られますが、管理するIPアドレスのセットにアクセスをさらに制限したい場合があります。この制限は、許可されたネットワークを指定することで設定できます。
許可されたネットワークへのアクセスを制限することで、コンテナクラスターに追加のセキュリティメリットを提供できます。
-
外部からの攻撃に対するより良い保護: 認可されたネットワークは、外部アクセスを指定した特定のアドレスに制限することで、追加のセキュリティ層を提供します。これにより、クラスタの認証または認可メカニズムに脆弱性がある場合に、クラスタへのアクセスを保護するのに役立ちます。
-
内部攻撃からのより良い保護: 認可されたネットワークは、会社の敷地内からのマスター証明書の偶発的な漏洩からクラスターを保護します。会社外のアドレスなど、Azure仮想マシン外および認可されたIP範囲外で使用された漏洩証明書は、依然としてアクセスが拒否されます。
注意デフォルトでは、エンドポイントPrivate Accessは無効になっています。
|
影響
Endpoint Private Accessを実装する際は、クラスターのコントロールプレーンへの外部アクセスを誤ってブロックしないように、すべての希望するネットワークが許可リスト
(ホワイトリスト) に含まれていることを確認してください。
制限事項: IP許可範囲はプライベートAPIサーバエンドポイントには適用できず、パブリックAPIサーバにのみ適用されます。可用性ゾーンは現在特定のリージョンでサポートされています。Azure
Private Linkサービスの制限はプライベートクラスターに適用されます。プライベートクラスターではAzure DevOpsのMicrosoftホストエージェントはサポートされていません。セルフホストエージェントの使用を検討してください。プライベートAKSでAzure
Container Registryを有効にする必要があるお客様は、Container Registry仮想ネットワークをエージェントクラスター仮想ネットワークとピアリングする必要があります。
監査
次の設定が適切であることを確認してください:
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の場合、endpointPublicAccessが有効になっており、インターネットからAKS Cluster APIサーバへのアクセスが可能です。falseの場合、endpointPublicAccessが無効であり、APIサーバはインターネット経由でアクセスできません。これはプライベートクラスターの一般的な構成です。このコマンドは、AKS ClusterのapiServerAccessProfile内のenablePrivateClusterプロパティを照会します。出力がtrueの場合、endpointPrivateAccessが有効であり、AKS
Cluster APIサーバがプライベートエンドポイント経由でのみアクセス可能に設定されていることを示します。出力がfalseの場合、クラスターはプライベートアクセス専用に設定されておらず、他の設定によってはAPIサーバがインターネット経由でアクセス可能である可能性があります。
このコマンドは、AKS ClusterのapiServerAccessProfile内のauthorizedIpRangesプロパティを照会します。出力には、AKS
ClusterのAPIサーバにインターネット経由でアクセスすることが許可されているIP範囲が一覧表示されます。リストが空の場合、制限がないことを意味し、他のネットワークおよびセキュリティ設定が許可する限り、任意のIPがAKS
ClusterのAPIサーバにアクセスできます。
修復
KubernetesAPIサーバへのプライベートエンドポイントアクセスを有効にすることで、ノードとAPIサーバ間のすべての通信がVPC内に留まります。また、インターネットからAPIサーバにアクセスできるIPアドレスを制限したり、APIサーバへのインターネットアクセスを完全に無効にすることもできます。
これを念頭に置いて、AKS CLIを使用してクラスターを更新し、プライベートエンドポイントアクセスが有効になっていることを確認できます。
パブリックエンドポイントアクセスを有効にする場合は、許可されるCIDRブロックのリストを設定する必要があります。これにより、インターネットからのアクセスが制限されます。CIDRブロックを指定しない場合、パブリックAPIサーバエンドポイントはデフォルトで['0.0.0.0/0']に設定され、すべてのIPアドレスからのリクエストを受信および処理することができます。
例えば、次のコマンドは、Kubernetes APIへのプライベートアクセスを有効にし、単一のIPアドレス (/32 CIDRサフィックスに注意) からインターネット経由での限定的なパブリックアクセスを可能にします。
