ネットワーク セキュリティ グループ

このページでは、GKE on Azure に必要な Azure ネットワーク セキュリティ グループ(NSG)のリストを表示して説明します。

マネージド NSG

GKE on Azure は、各仮想マシン(VM)インスタンスの仮想ネットワーク インターフェース カード(NIC)に接続された NSG を管理します。ネットワーク トラフィックをさらに制御するには、サブネットに NSG を追加できます。

GKE on Azure は、必要な NSG ルールを自動的に管理します。それは、欠落している NSG ルールを追加し、もう必要ではなくなったルールを削除します。GKE on Azure も、Kubernetes Service の構成に基づいてルールを変更します。たとえば、LoadBalancer タイプの Kubernetes Service を追加すると、GKE on Azure は対応する NSG ルールを追加します。

ルールの優先度

Azure NSG ルールの優先度の範囲は 100~4,096 です。優先度の数が小さいほど優先度が高くなります。

設計上、GKE on Azure は優先度 500 以上の NSG ルールのみを管理します。そのため、特定のルールを実装するか、追加のルールを作成する必要がある場合は、優先度が 100~499 の NSG を使用できます。

Azure は、優先度の数値が最小のルールから順にルールを処理します。新しいルールを作成する場合、既存の Anthos NSG ルールとの競合を回避するため、常に 100~499 の範囲のルール優先度を選択してください。

アプリケーション セキュリティ グループ

GKE on Azure は、コントロール プレーンとワーカーノードの仮想 NIC に適用される 2 つのアプリケーション セキュリティ グループ(ASG)を作成します。GKE on Azure クラスタは、クラスタに新しいノードプールを追加するときなどに、自動的に更新します。NSG ルールの作成時に、これらの ASG を使用できます。

NSG とコントロール プレーン ASG の Azure Resource Manager(ARM)ID は、gcloud container azure clusters describe の出力から取得できます。

たとえば、コントロール プレーン VM への SSH 接続を許可するには、az network nsg rule create コマンドを実行して、コントロール プレーン ASG を参照する NSG を作成します。

NSG_NAME=$(basename $(gcloud container azure clusters describe \
  CLUSTER_NAME --location=GOOGLE_CLOUD_LOCATION \
  --format 'value(managedResources.networkSecurityGroupId)'))

ASG_CP_NAME=$(basename $(gcloud container azure clusters describe \
  CLUSTER_NAME --location=GOOGLE_CLOUD_LOCATION \
  --format 'value(managedResources.controlPlaneApplicationSecurityGroupId)'))

az network nsg rule create \
  --name AllowSshToControlPlane \
  --nsg-name "${NSG_NAME}" \
  --priority 100 \
  --resource-group "CLUSTER_RESOURCE_GROUP" \
  --access Allow \
  --protocol Tcp \
  --destination-port-ranges 22 \
  --destination-asgs "${ASG_CP_NAME}"

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

  • CLUSTER_NAME: クラスタの名前
  • GOOGLE_CLOUD_LOCATION: クラスタを管理する Google Cloud のロケーション
  • CLUSTER_RESOURCE_GROUP: クラスタを保持する Azure リソース グループの名前

新しいルールの作成の詳細については、Azure NSG ルールの作成の手順をご覧ください。

デフォルトの NSG ルール

GKE on Azure を設定すると、Azure 仮想ネットワークに次の NSG ルールが作成されます。

優先度 ポート プロトコル ソース 宛先 アクション 目的
1000 2380、2381 TCP コントロール プレーン NIC コントロール プレーン NIC 許可 コントロール プレーンと etcd の通信
1001 443、8132 TCP 任意 コントロール プレーン NIC 許可 Kubernetes API へのアクセスの許可
1002 10250 TCP コントロール プレーン NIC ノードプール NIC 許可 コントロール プレーンからノードへの通信
1003 10250、10255 TCP ノードプール NIC ノードプール NIC 許可 ノード間の通信
1004 6081 UDP ノードプール NIC ノードプール NIC 許可 ノード間の CNI 通信
1005 任意 任意 Azure ロードバランサ 任意 許可 ロードバランサへの受信トラフィックの許可
4096 任意 任意 任意 任意 拒否 別のルールで適用されていない受信接続をすべて拒否