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