ネットワーク セキュリティ グループ
このページでは、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 | 任意 | 任意 | 任意 | 任意 | 拒否 | 別のルールで適用されていない受信接続をすべて拒否 |