プロファイル適用性: レベル2
ノードネットワーク外からのKubernetes APIへのアクセスが不要な場合は、アクセスを無効にしてください。
プライベートクラスターでは、マスターノードにはプライベートエンドポイントとパブリックエンドポイントの2つのエンドポイントがあります。プライベートエンドポイントは、マスターのVPC
Network内の内部ロードバランサーの背後にあるマスターの内部IPアドレスです。ノードはプライベートエンドポイントを使用してマスターと通信します。
パブリックエンドポイントは、Kubernetes APIがマスターのVPC Network外部からアクセスされることを可能にします。Kubernetes APIは機密性の高い操作を行うために認証されたトークンを必要としますが、脆弱性によりKubernetesが無制限のアクセスで公にさらされる可能性があります。
さらに、攻撃者は現在のクラスターとKubernetesAPIバージョンを特定し、それが攻撃に対して脆弱かどうかを判断できる可能性があります。必要でない限り、パブリックエンドポイントを無効にすることでそのような脅威を防ぎ、攻撃者がKubernetesAPIに対して攻撃を行うためにはマスターのVPC
Network上にいることを要求します。
注意初期設定では、プライベートエンドポイントは無効になっています。
|
影響
プライベートエンドポイントを有効にするには、クラスターをプライベートノード、プライベートマスターIP範囲、およびIPエイリアスが有効になっている状態で構成する必要があります。プライベートエンドポイントフラグ
--enable-private-endpointがgcloud CLIに渡されるか、クラスター作成時にGoogle Cloudコンソールで外部IPアドレスが未定義の場合、すべてのアクセスはパブリックIPアドレスから禁止されます。監査
Google Cloud Consoleを使用する:
- Google CloudコンソールKubernetes EngineページにアクセスしてKubernetes Engineに移動します。
- 必要なクラスターを選択し、詳細ペイン内でエンドポイントにパブリックIPアドレスがないことを確認してください。
コマンドラインを使用する:
既存のクラスターのプライベートエンドポイントのステータスを確認するには、まず3つの変数、クラスター名、場所、プロジェクトを定義し、次に以下のコマンドを実行します。
gcloud container clusters describe $CLUSTER_NAME --location $LOCATION -- project $PROJECT_ID --format json | jq '.privateClusterConfig.enablePrivateEndpoint'
上記のコマンドの出力は、プライベートエンドポイントが有効でパブリックアクセスが無効の場合、
{ "enablePrivateEndpoint": true }を返します。追加の確認として、エンドポイントパラメータは次のコマンドで照会できます。
gcloud container clusters describe <cluster_name> --format json | jq '.endpoint'
上記のコマンドの出力は、プライベートエンドポイントが有効でパブリックアクセスが無効の場合、プライベートIPアドレスを返します。
修復
クラスターがプライベートエンドポイントのみを有効にせずに作成された場合、それを修正することはできません。代わりに、クラスターを再作成する必要があります。
Google Cloud Consoleを使用する:
- Google CloudコンソールKubernetes EngineページにアクセスしてKubernetes Engineに移動します。
- CREATE CLUSTERをクリックし、StandardモードクラスターのCONFIGUREを選択します。
- 必要に応じてクラスターを構成し、ナビゲーションペインのCLUSTERの下にあるNetworkingをクリックしてください。
- 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>の設定も必要です。
