セキュリティ グループのルール

このトピックでは、GKE on AWS がクラスタの AWS セキュリティ グループのルールを管理する仕組みと、ノードプールとコントロール プレーンのレプリカのファイアウォール ルールを変更する方法について説明します。

セキュリティ グループとホスト型 DNS

AWS 提供の DNS ではなく、ホストされた DNS サーバーを使用する場合は、コントロール プレーンノードプールのセキュリティ グループが TCP と UDP ポート 53 でアウトバウンド トラフィックを許可する必要があります。

コントロール プレーンのセキュリティ グループ

コントロール プレーンのセキュリティ グループは、各コントロール プレーン レプリカのインバウンドおよびアウトバウンド TCP トラフィックのファイアウォール ルールを定義します。

コントロール プレーンは、AWS ネットワーク ロードバランサ(NLB)の背後にある 3 つの EC2 インスタンスで構成されます。これらのインスタンスは、他のノード、ノードプール ノード、NLB の etcd インスタンスからの接続を受け入れます。コントロール プレーン インスタンスは、Google サービスと AWS サービスへのアウトバウンド HTTPS 接続も行います。

GKE on AWS は、マネージド コントロール プレーンのセキュリティ グループを作成してすべてのコントロール プレーン インスタンスに接続します。このグループのルールは変更しないでください。セキュリティ グループのルールを追加する必要がある場合は、クラスタの作成時に、コントロール プレーンに追加するセキュリティ グループ ID を指定できます。

コントロール プレーンのセキュリティ グループのデフォルトのルール

GKE on AWS がコントロール プレーンに接続するデフォルトのルールは以下のとおりです。これらのルールは、セキュリティ グループと正確には一致しません。表の各行は、複数の AWS セキュリティ グループ ルールに展開できます。

タイプ プロトコル ポート アドレス範囲または SG 説明
受信 TCP(クラスタ バージョン 1.26 未満) 443 VPC のプライマリ CIDR 範囲 ノードプール ノードからの HTTPS を許可します。
受信 TCP(クラスタ バージョン 1.26 以降) 443 ノードプールのサブネット CIDR 範囲 ノードプール ノードからの HTTPS を許可します(ノードプールで使用されるサブネットごとに 1 つのルール)。
受信 TCP 2380 コントロール プレーン SG コントロール プレーンの etcd レプリケーションを許可します。
受信 TCP 2381 コントロール プレーン SG コントロール プレーンの etcd イベント レプリケーションを許可します。
受信 TCP(クラスタ バージョン 1.26 未満) 8132 VPC のプライマリ CIDR 範囲 ノードプールからの Konnectivity 接続を許可します。
受信 TCP(クラスタ バージョン 1.26 以降) 8132 ノードプールのサブネット CIDR 範囲 ノードプール ノードからの Konnectivity 接続を許可します(ノードプールで使用されるサブネットごとに 1 つのルール)
受信 TCP 11872 コントロール プレーンの CIDR 範囲 ロードバランサを HTTP ヘルスチェックします。
送信 TCP 443 0.0.0.0/0 アウトバウンド HTTPS を許可します。
送信 TCP 2380 コントロール プレーン SG コントロール プレーンの etcd レプリケーションを許可します。
送信 TCP 2381 コントロール プレーン SG コントロール プレーンの etcd イベント レプリケーションを許可します。

ノードプールのセキュリティ グループ

ノードプールのセキュリティ グループは、ノードプール内の VM のインバウンドおよびアウトバウンド TCP トラフィックのファイアウォール ルールを定義します。

GKE on AWS は、マネージド ノードプールのセキュリティ グループを作成し、すべてのノードプール インスタンスに接続します。このグループのルールは変更しないでください。セキュリティ グループのルールを追加する必要がある場合は、ノードプールを作成する際に、インスタンスに接続する追加のセキュリティ グループ ID を指定できます。

デフォルトの場合、ノードプール VM には開いているポートがありません。受信トラフィックを許可するには、ノードプールの作成時にノードプール セキュリティ グループを追加し、追加したセキュリティ グループを使用してノードプールに必要なインバウンド / アウトバウンド ルールを管理します。

ノードプールのセキュリティ グループのデフォルトのルール

GKE on AWS がノードプールに接続するデフォルトのルールは以下のとおりです。これらのルールは、セキュリティ グループと正確には一致しません。表の各行は、複数の AWS セキュリティ グループ ルールに展開できます。

タイプ プロトコル ポート アドレス範囲または SG 説明
受信 TCP すべて ノードプール SG Pod 間の通信を許可します。
送信 TCP すべて ノードプール SG Pod 間の通信を許可します。
送信 TCP 443 0.0.0.0/0 アウトバウンド HTTPS を許可します。
送信 TCP 8132 コントロール プレーン SG コントロール プレーンへの Konnectivity 接続を許可します。
送信 TCP 8132 コントロール プレーンの CIDR 範囲 コントロール プレーンへの Konnectivity 接続を許可します。

VPC セカンダリ CIDR ブロックのノードプール

GKE on AWS バージョン 1.26 以降では、セカンダリ VPC CIDR ブロックのサブネットを使用してノードプールをサポートするために必要なセキュリティ グループ ルールが自動的に作成され、管理されます。これらのバージョンのいずれかを使用している場合は、カスタム セキュリティ グループを作成する、または手動で更新する必要はありません。

ただし、マネージド コントロール プレーン セキュリティ グループを作成するときに、セカンダリ VPC CIDR ブロックにサブネットを持つノードプールをサポートするルールは、以前のバージョンの GKE on AWS では作成されません。

この制限を回避するには、コントロール プレーン用のカスタム セキュリティ グループを作成します。クラスタの作成時に、--security-group-ids フラグを使用して、セキュリティ グループ ID を渡します。別の方法としては、クラスタのセキュリティ グループを更新することもできます。

セキュリティ グループは、次のルールを使用して作成します。

タイプ プロトコル ポート アドレス範囲または SG 説明
受信 TCP 443 ノードプールの範囲(VPC セカンダリ CIDR ブロック内) ノードプール ノードからの HTTPS を許可します。
受信 TCP 8132 ノードプールの範囲(VPC セカンダリ CIDR ブロック内) ノードプールからの Konnectivity 接続を許可します。

次のステップ