クラウドネイティブ API Gateway インスタンスとバックエンドサービスがデプロイされているノードが異なるセキュリティグループに属している場合は、セキュリティグループルールを構成して、クラウドネイティブ API Gateway インスタンスがバックエンドサービスにアクセスすることを承認できます。
背景情報
セキュリティグループは、Elastic Compute Service(ECS)インスタンスと Elastic Network Interface(ENI)のインバウンドトラフィックとアウトバウンドトラフィックを制御する仮想ファイアウォールとして機能します。 セキュリティグループは、ECS インスタンスのセキュリティを向上させるのに役立ちます。 セキュリティグループは、ステートフルパケットインスペクション(SPI)とパケットフィルタリング機能を提供します。 セキュリティグループとセキュリティグループルールを使用して、クラウド内のセキュリティドメインを定義できます。 詳細については、「概要」をご参照ください。
クラウドネイティブ API Gateway インスタンスを購入する際は、仮想プライベートクラウド(VPC)とセキュリティグループタイプを選択する必要があります。 バックエンドサービスと同じセキュリティグループタイプを選択することをお勧めします。 構成が完了すると、クラウドネイティブ API Gateway インスタンスは、選択したセキュリティグループタイプに基づいてマネージドセキュリティグループを作成します。 マネージドセキュリティグループは、ゲートウェイインスタンスのノードを管理するために使用されます。 クラウドネイティブ API Gateway インスタンスとバックエンドサービスがデプロイされているノードは、異なるセキュリティグループに属しています。 したがって、ポートの範囲でクラウドネイティブ API Gateway インスタンスがバックエンドサービスにアクセスすることを承認する必要があります。

上の図は、クラウドネイティブ API Gateway を使用して、さまざまなサービスタイプ間で安全なアクセスコントロールとトラフィック分散を実装する方法を示しています。 具体的には、次のとおりです。
クライアント(コンピューターなど)を使用して、クラウドネイティブ API Gateway の内部ネットワークにアクセスします。
クラウドネイティブ API Gateway は、構成に基づいてリクエストを service-sg1 と service-sg2 に分散します。
service-sg1 のポッドは、ポート 8080/8080 からのリクエストを処理します。
service-sg2 のポッドは、ポート 80/9000 からのリクエストを処理します。
手順 1:バックエンドサービスがデプロイされているノードのセキュリティグループ情報を取得する
クラウドネイティブ API Gateway インスタンスに関連付けられているアップストリームサービスは、Container Service for Kubernetes(ACK)クラスターまたは ECS インスタンスにデプロイされます。 このセクションでは、セキュリティグループ ID を取得する方法について説明します。
バックエンドサービスが ACK クラスターにデプロイされている場合
ACK コンソール にログインします。 左側のナビゲーションウィンドウで、[クラスター] をクリックします。
[クラスター] ページで、管理するクラスターを見つけ、その名前をクリックします。 左側のナビゲーションウィンドウで、 を選択します。
[ノードプール] ページで、目的のノードを [クリック] します。[概要] タブで、セキュリティグループの ID を取得します。

バックエンドサービスが ECS インスタンスにデプロイされている場合
ECS コンソール にログインします。
左側のナビゲーションウィンドウで、 を選択します。
[インスタンス] ページで、バックエンド サービスがデプロイされている ECS インスタンスをクリックします。[セキュリティ グループ] タブで、セキュリティ グループの ID を取得します。

手順 2:セキュリティグループルールを追加する
クラウドネイティブ API Gateway コンソール にログインします。
左側のナビゲーションウィンドウで、[インスタンス] をクリックします。 上部のナビゲーションバーで、リージョンを選択します。
[インスタンス] ページで、管理するゲートウェイインスタンスの名前をクリックします。
左側のナビゲーションウィンドウで、[概要] をクリックします。 表示されるページで、[セキュリティグループの承認] タブをクリックします。
[セキュリティグループルールの追加] をクリックします。手順 1 で取得したセキュリティグループ ID を [セキュリティグループ ID] フィールドにコピーし、表示されるセキュリティグループを選択します。

開始ポート/終了ポートの形式で [ポート範囲] を入力します。
複数のポート範囲を入力できます。ポート範囲を入力するたびに、Enter キーを押して設定を検証します。
[保存] をクリックします。
クラウドネイティブ API Gateway インスタンスのセキュリティグループルールが生成されます。

バックエンド サービスがデプロイされているノードのセキュリティグループで、セキュリティグループルールを表示することもできます。

セキュリティグループルールを削除する
クラウドネイティブ API Gateway コンソール にログインします。
左側のナビゲーションウィンドウで、[インスタンス] をクリックします。 上部のナビゲーションバーで、リージョンを選択します。
[インスタンス] ページで、管理するゲートウェイインスタンスの名前をクリックします。
[セキュリティグループの承認] タブをクリックします。 削除するセキュリティグループルールを見つけ、[アクション] 列の [削除] をクリックします。 表示されるメッセージで、[OK] をクリックします。
デフォルトでは、クラウドネイティブ API Gateway インスタンスのセキュリティグループルールが削除されます。 サービスがデプロイされているノードのセキュリティグループルールを削除する場合は、表示されるメッセージで [セキュリティグループ内の上記のインバウンドルールも削除されます] を選択します。
FAQ
セキュリティグループルールを構成した後、クラウドネイティブ API Gateway インスタンスからサービスにアクセスできないのはなぜですか?
次の手順を実行します。
セキュリティグループルールを構成するノードが、サービスがデプロイされているノードであることを確認します。
たとえば、サービスはノード A にデプロイされていますが、ノード B のセキュリティグループルールを構成します。
サービスノードに複数のセキュリティグループが構成されているかどうかを確認します。
サービスノードに複数のセキュリティグループが構成されている場合は、セキュリティグループごとにセキュリティグループルールを構成することをお勧めします。
クラウドネイティブ API Gateway インスタンスがサービスにアクセスするためのセキュリティグループルールを構成し、アクセスは成功しました。 しかし、今はアクセスに失敗します。 なぜですか?
次の手順を実行します。
サービスが正常かどうかを確認します。
同じセキュリティグループ内の他のノードで
curlコマンドを実行して、サービスの接続性を確認できます。Cloud Shell: Cloud Shell
たとえば、公開ポートが 8080 から 8081 に変更されましたが、ポート 8080 のみが開かれています。この場合、セキュリティグループルールでポート番号を変更する必要があります。この問題を防ぐために、セキュリティグループルールを作成するときに、ポート範囲を 1/65535 に設定することをお勧めします。