プロファイル適用性: レベル2
ノードネットワーク外からのKubernetes APIへのアクセスが不要な場合は、アクセスを無効にしてください。
プライベートクラスターでは、マスターノードにはプライベートエンドポイントとパブリックエンドポイントの2つのエンドポイントがあります。プライベートエンドポイントは、マスターの内部IPアドレスであり、マスターのVPCネットワーク内の内部ロードバランサーの背後にあります。ノードはプライベートエンドポイントを使用してマスターと通信します。パブリックエンドポイントは、マスターのVPCネットワーク外からKubernetesAPIにアクセスできるようにします。
Kubernetes APIは機密性の高い操作を行うために認証されたトークンを必要としますが、脆弱性によりKubernetesが無制限のアクセスで公にさらされる可能性があります。さらに、攻撃者は現在のクラスターとKubernetes
APIのバージョンを特定し、それが攻撃に対して脆弱かどうかを判断できるかもしれません。必要でない限り、パブリックエンドポイントを無効にすることでそのような脅威を防ぎ、攻撃者がKubernetes
APIに対して攻撃を行うためにはマスターのVPCネットワーク上にいることを要求します。
![]() |
注意デフォルトでは、プライベートエンドポイントは無効です。
|
影響
プライベートエンドポイントを有効にするには、クラスターをプライベートノード、プライベートマスターIP範囲、およびIPエイリアスが有効になっている状態で構成する必要があります。
プライベートエンドポイントフラグ
--enable-private-endpoint
がgcloud CLIに渡されるか、クラスタ作成時にGoogle Cloud Consoleで外部IPアドレスが未定義の場合、すべてのアクセスはパブリックIPアドレスから禁止されます。監査
Google Cloud Consoleを使用する:
- Kubernetes Engine のウェブサイトにアクセスしてください。
- 必要なクラスターを選択し、詳細ペイン内でエンドポイントにパブリックIPアドレスがないことを確認してください。
コマンドラインの使用:
このコマンドを実行してください:
gcloud container clusters describe <cluster_name> --format json | jq '.privateClusterConfig.enablePrivateEndpoint'
上記のコマンドの出力は、プライベートエンドポイントが有効でパブリックアクセスが無効の場合に
true
を返します。追加の確認として、エンドポイントパラメータは次のコマンドで照会できます。
gcloud container clusters describe <cluster_name> --format json | jq '.endpoint'
上記のコマンドの出力は、パブリックアクセスが無効でプライベートエンドポイントが有効になっている場合、プライベートIPアドレスを返します。
修復
クラスターがプライベートエンドポイントのみを有効にせずに作成された場合、それを修正することはできません。代わりに、クラスターを再作成する必要があります。
Google Cloud Consoleを使用する:
- Kubernetes Engine のウェブサイトにアクセスしてください。
- [CREATE CLUSTER]をクリックし、標準モードクラスターの設定を選択します。
- 必要に応じてクラスターを構成し、ナビゲーションペインのCLUSTERの下にある[Networking]をクリックします。
- IPv4ネットワークアクセスの下で、プライベートクラスターのラジオボタンをクリックします。
- 外部IPアドレスのチェックボックスを使用してアクセス制御プレーンのチェックを外します。
- コントロールプレーンIP範囲テキストボックスに、コントロールプレーンのIP範囲を入力してください。
- 必要に応じて他の設定を構成し、[CREATE]をクリックしてください。
コマンドラインの使用:
--enable-private-endpointフラグをクラスター作成コマンドに含めることで、プライベートエンドポイントが有効でパブリックアクセスが無効なクラスターを作成します。
gcloud container clusters create <cluster_name> --enable-private-endpoint
このフラグを設定するには、
--enable-private-nodes
、--enable-ip-alias
、および--master-ipv4-cidr=<master_cidr_range>
の設定も必要です。