コントロール プレーン アクセス用の承認済みネットワークの追加

このページでは、承認済みネットワークに、Google Kubernetes Engine(GKE)クラスタ内のクラスタ コントロール プレーン(マスター)へのアクセスを許可する方法について説明します。GKE ネットワーキングに関する一般的な情報については、ネットワークの概要をご覧ください。

概要

承認済みネットワークを使用すると、CIDR 範囲を指定して、その範囲内の IP アドレスから HTTPS を使用してクラスタのコントロール プレーン エンドポイントにアクセスできるようになります。承認済みネットワークは、すべてのクラスタに対応しています。

GKE では、TLS(Transport Layer Security)と認証の両方を使用して、公共のインターネットからクラスタ コントロール プレーン エンドポイントに安全にアクセスできます。これにより、クラスタをどこからでも柔軟に管理できます。承認済みネットワークを使用することで、特定の IP アドレスセットに対するアクセスをさらに制限できます。

利点

承認済みネットワークを追加すると、クラスタにさらなるセキュリティ上の利点がもたらされます。承認済みネットワークにより、指定された特定のアドレスセット(自分の環境から発信されるものなど)に対してアクセスが許可されます。これによって、クラスタの認証や承認メカニズムに脆弱性が存在する場合でも、クラスタへのアクセスを保護できます。

限定公開クラスタの利点

限定公開クラスタでは、ノードが外部 IP アドレスなしで動作します。また、必要に応じて、公開アクセス可能なエンドポイントなしでクラスタのコントロール プレーンを実行することもできます。さらに、デフォルトでは、Google Cloud IP アドレスでコントロール プレーン エンドポイントにアクセスすることはできません。承認済みネットワークを限定公開クラスタで使用すると、許可された CIDR、クラスタの VPC 内のノード、コントロール プレーンを管理する Google 内部の本番環境ジョブのみが、コントロール プレーンに到達可能になります。

制限事項

  • パブリック クラスタには最大 50 個の承認済みネットワーク CIDR 範囲を設定できます。限定公開クラスタに設定できる最大数は 100 です。

始める前に

作業を始める前に、次のことを確認してください。

次のいずれかの方法で gcloud のデフォルトの設定を指定します。

  • gcloud init。デフォルトの設定全般を確認する場合に使用します。
  • gcloud config。プロジェクト ID、ゾーン、リージョンを個別に設定する場合に使用します。

gcloud init の使用

エラー One of [--zone, --region] must be supplied: Please specify location を受信した場合は、このセクションの内容を実施します。

  1. gcloud init を実行して、次の操作を行います。

    gcloud init

    リモート サーバーで SSH を使用している場合は、--console-only フラグを指定して、コマンドがブラウザを起動しないようにします。

    gcloud init --console-only
  2. 手順に従って gcloud を承認し、Google Cloud アカウントを使用します。
  3. 新しい構成を作成するか、既存の構成を選択します。
  4. Google Cloud プロジェクトを選択します。
  5. ゾーンクラスタの場合はデフォルトの Compute Engine ゾーン、リージョン クラスタまたは Autopilot クラスタの場合はデフォルトの Compute Engine リージョンを選択します。

gcloud config の使用

  • デフォルトのプロジェクト ID を設定します。
    gcloud config set project PROJECT_ID
  • ゾーンクラスタを使用する場合は、デフォルトのコンピューティング ゾーンを設定します。
    gcloud config set compute/zone COMPUTE_ZONE
  • Autopilot クラスタまたはリージョン クラスタを使用する場合は、デフォルトのコンピューティング リージョンを設定します。
    gcloud config set compute/region COMPUTE_REGION
  • gcloud を最新バージョンに更新します。
    gcloud components update

承認済みネットワークを持つクラスタの作成

gcloud ツール、Google Cloud Console、または GKE API を使用して、1 つ以上の承認済みネットワークを使用するクラスタを作成できます。

gcloud

次のコマンドを実行します。

gcloud container clusters create cluster-name \
    --enable-master-authorized-networks \
    --master-authorized-networks cidr1,cidr2...

以下を置き換えます。

  • cluster-name: 既存のクラスタの名前。
  • cidr1cidr2: 承認済みネットワークの CIDR 値。

--master-authorized-networks フラグを使用すると、HTTPS を介したクラスタ コントロール プレーン エンドポイントへのアクセス権を付与する CIDR をカンマで区切って指定できます(例: 8.8.8.0/24)。

次に例を示します。

gcloud container clusters create example-cluster \
    --enable-master-authorized-networks \
    --master-authorized-networks 8.8.8.8/32,8.8.8.0/24

Console

  1. Cloud Console で Google Kubernetes Engine のページに移動します。

    Google Kubernetes Engine に移動

  2. [ 作成] をクリックします。

  3. 必要に応じてクラスタを構成します。

  4. ナビゲーション パネルの [クラスタ] の下の [ネットワーキング] をクリックします。

  5. [高度なネットワーキングのオプション] で [コントロール プレーン承認済みネットワークを有効にする] チェックボックスをオンにします。

  6. [承認済みネットワークを追加] をクリックします。

  7. ネットワークの名前を入力します。

  8. [ネットワーク] に、クラスタ コントロール プレーンへのアクセス権を付与する CIDR 範囲を入力します。

  9. [完了] をクリックします。必要に応じて、承認済みネットワークを追加します。

  10. [作成] をクリックします。

API

クラスタ create リクエストmasterAuthorizedNetworksConfig オブジェクトを指定します。

"masterAuthorizedNetworksConfig": {
  "enabled": true,
  "cidrBlocks": [
  {
      "displayName": string,
      "cidrBlock": string
  }
]
}

詳細については、MasterAuthorizedNetworksConfig をご覧ください。

承認済みネットワークを持つ限定公開クラスタの作成

承認済みネットワークを 1 つ以上持つ限定公開クラスタを作成する方法については、限定公開クラスタをご覧ください。

承認済みネットワークを既存のクラスタに追加する

既存のクラスタに承認済みネットワークを追加するには、gcloud コマンドライン ツールまたは Cloud Console を使用できます。

gcloud

次のコマンドを実行します。

gcloud container clusters update cluster-name \
    --enable-master-authorized-networks \
    --master-authorized-networks cidr1,cidr2...

以下を置き換えます。

  • cluster-name: 既存のクラスタの名前。
  • cidr1cidr2: 承認済みネットワークの CIDR 値。

--master-authorized-networks フラグを使用すると、HTTPS を介したクラスタ コントロール プレーン エンドポイントへのアクセス権を付与する CIDR をカンマで区切って指定できます(例: 8.8.8.0/24)。

次に例を示します。

gcloud container clusters update example-cluster \
    --enable-master-authorized-networks \
    --master-authorized-networks 8.8.8.8/32,8.8.8.0/24

Console

  1. Cloud Console で Google Kubernetes Engine のページに移動します。

    Google Kubernetes Engine に移動

  2. 変更するクラスタの名前をクリックします。

  3. [ネットワーキング] の [コントロール プレーン承認済みネットワーク] フィールドで、[ コントロール プレーン承認済みネットワークの編集] をクリックします。

  4. [コントロール プレーン承認済みネットワークを有効にする] チェックボックスをオンにします。

  5. [承認済みネットワークを追加] をクリックします。

  6. ネットワークの名前を入力します。

  7. [ネットワーク] に、クラスタ コントロール プレーンへのアクセス権を付与する CIDR 範囲を入力します。

  8. [完了] をクリックします。必要に応じて、承認済みネットワークを追加します。

  9. [変更を保存] をクリックします。

API

クラスタ update リクエストdesiredMasterAuthorizedNetworksConfig フィールドを指定します。このフィールドで、MasterAuthorizedNetworksConfig オブジェクトを次のように指定します。

"desiredMasterAuthorizedNetworksConfig": {
    object(MasterAuthorizedNetworksConfig)
  }

承認済みネットワークの確認

既存のクラスタ内で承認済みネットワークを確認するには、gcloud コマンドライン ツールまたは Cloud Console を使用できます。

gcloud

次のコマンドを実行します。

gcloud container clusters describe cluster-name

コマンド出力で、masterAuthorizedNetworksConfig フィールドを探します。

  ...
masterAuthorizedNetworksConfig:
  cidrBlocks:
  - cidrBlock: 8.8.8.8/32
  - cidrBlock: 8.8.4.4/32
  enabled: true
  ...

Console

  1. Cloud Console で Google Kubernetes Engine のページに移動します。

    Google Kubernetes Engine に移動

  2. 変更するクラスタの名前をクリックします。

  3. [ネットワーキング] の [コントロール プレーン承認済みネットワーク] フィールドに、許可された CIDR が表示されます。

API

get リクエストを送信します。masterAuthorizedNetworksConfig フィールドの下で CIDR ブロックを探します。次に例を示します。

"masterAuthorizedNetworksConfig": {
"enabled": true,
"cidrBlocks": [
  {
    "displayName": "Office",
    "cidrBlock": "192.0.2.0/24"
  }
]
}

承認済みネットワークの無効化

既存のクラスタ用の承認済みネットワークを無効化するには、gcloud コマンドライン ツールまたは Cloud Console を使用できます。

gcloud

次のコマンドを実行します。

gcloud container clusters update cluster-name \
    --no-enable-master-authorized-networks

Console

  1. Cloud Console で Google Kubernetes Engine のページに移動します。

    Google Kubernetes Engine に移動

  2. 変更するクラスタの名前をクリックします。

  3. [ネットワーキング] の [コントロール プレーン承認済みネットワーク] フィールドで、[ コントロール プレーン承認済みネットワークの編集] をクリックします。

  4. [コントロール プレーン承認済みネットワークを有効にする] チェックボックスをオフにします。

  5. [変更を保存] をクリックします。

承認済みネットワークの削除

既存のクラスタ用のカスタム承認済みネットワークをすべて削除するには、gcloud コマンドライン ツールまたは Cloud Console を使用します。

gcloud

次のコマンドを実行します。

gcloud container clusters update cluster-name \
    --enable-master-authorized-networks

Console

  1. Cloud Console で Google Kubernetes Engine のメニューに移動します。

    Google Kubernetes Engine のメニューに移動

  2. 変更するクラスタの名前をクリックします。

  3. [ネットワーキング] の [コントロール プレーン承認済みネットワーク] フィールドで、[ コントロール プレーン承認済みネットワークの編集] をクリックします。

  4. 削除アイコンをクリックして、目的の CIDR を削除します。

  5. [変更を保存] をクリックします。

トラブルシューティング

以降のセクションでは、承認済みネットワークに関連する一般的な問題の解決方法について説明します。

CIDR ブロックが多すぎる

50 個を超える CIDR ブロックがあるクラスタを作成または更新しようとすると、gcloud は次のエラーを返します。

ERROR: (gcloud.container.clusters.update) argument --master-authorized-networks: too many args

この問題を解決するには、クラスタが公開されている場合は指定する CIDR ブロックの数を 50 個以下にしてください。クラスタが非公開の場合は、指定する CIDR ブロックの数を 100 個以下にしてください。

サーバーに接続できない

CIDR ブロックの指定に誤りがあると、kubectl コマンドはタイムアウトになります。

Unable to connect to the server: dial tcp MASTER_IP: getsockopt: connection timed out

クラスタを作成または更新するときは、CIDR ブロックを正しく指定するよう注意してください

次のステップ