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

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

概要

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

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

限定公開クラスタは、承認済みネットワークと同様に、内部 IP アドレスのみを持つノードで動作します。また、Google Cloud 外部の信頼されていない IP アドレスからコントロール プレーンのエンドポイントへのアクセスを許可しません。

限定公開クラスタで承認済みネットワークを使用すると、次の方法でのみコントロール プレーンに到達可能になります。

  • Compute Engine 仮想マシン(VM)Cloud Functions、Cloud Run など、Google Cloud 内部のアドレス
  • 許可された CIDR ブロック
  • クラスタの VPC 内のノードと Pod
  • Google がお客様のコントロール プレーンを管理するために本番環境で実行する内部ジョブ

承認済みネットワークと限定公開クラスタ ユーザーは、Cloud Run や Cloud Functions などのクラウド サービスからコントロール プレーンにアクセスしないようにしてください。このアクセスは今後削除されるためです。

利点

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

制限事項

  • パブリック クラスタには最大 50 個の承認済みネットワーク CIDR 範囲を設定できます。限定公開クラスタに設定できる最大数は 100 です。
  • 承認済みネットワークを持つクラスタが使用しているサブネットを拡張する場合は、拡張された IP アドレス範囲を含むように承認済みネットワークを更新する必要があります。

始める前に

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

  • Google Kubernetes Engine API が有効になっていることを確認します。
  • Google Kubernetes Engine API の有効化
  • Google Cloud CLI がインストールされていることを確認します。
  • 次のいずれかの方法で、プロジェクトにデフォルトの Google Cloud CLI 設定をセットアップします。
    • プロジェクトのデフォルトの設定全般を確認する場合は、gcloud init を使用します。
    • gcloud config を使用して、プロジェクト ID、ゾーン、リージョンを個別に設定します。

    gcloud init

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

      gcloud init

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

      gcloud init --console-only
    2. Google Cloud アカウントを使用できるように、gcloud CLI の承認手順を行います。
    3. 新しい構成を作成するか、既存の構成を選択します。
    4. Google Cloud プロジェクトを選択します。
    5. デフォルトの Compute Engine ゾーンを選択します。
    6. デフォルトの Compute Engine リージョンを選択します。

    gcloud config

    1. デフォルトのプロジェクト ID を設定します。
      gcloud config set project PROJECT_ID
    2. デフォルトの Compute Engine リージョン(例: us-central1)を設定します。
      gcloud config set compute/region COMPUTE_REGION
    3. デフォルトの Compute Engine ゾーン(例: us-central1-c)を設定します。
      gcloud config set compute/zone COMPUTE_ZONE
    4. gcloud を最新バージョンに更新します。
      gcloud components update

    デフォルトの場所を設定することで、gcloud CLI のエラー(One of [--zone, --region] must be supplied: Please specify location など)を防止できます。

承認済みネットワークを使用するクラスタを作成する

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

gcloud

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

gcloud container clusters create CLUSTER_NAME \
    --enable-master-authorized-networks \
    --master-authorized-networks CIDR1,CIDR2,...

次のように置き換えます。

  • CLUSTER_NAME: 既存のクラスタの名前。
  • CIDR1,CIDR2,...: 承認済みネットワークの CIDR 値のカンマ区切りリスト。例: 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 CLI または Cloud Console を使用します。

gcloud

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

gcloud container clusters update CLUSTER_NAME \
    --enable-master-authorized-networks \
    --master-authorized-networks CIDR1,CIDR2,...

次のように置き換えます。

  • CLUSTER_NAME: 既存のクラスタの名前。
  • CIDR1,CIDR2,...: 承認済みネットワークの CIDR 値のカンマ区切りリスト。例: 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 CLI または Cloud Console を使用します。

gcloud

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

gcloud container clusters describe CLUSTER_NAME

出力は次のようになります。

...
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 CLI または 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 CLI または 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 ブロックを正しく指定するよう注意してください

次のステップ