クラウドのセキュリティを強化するため、セキュリティグループを使用して、プロトコル、ポート、または IP アドレスに基づいて、ご利用の Network Load Balancer (NLB) インスタンスへのアクセスを制御できます。アクセス制御リスト (ACL) を使用する Classic Load Balancer (CLB) とは異なり、NLB はセキュリティグループを使用して、プロトコルとポートに基づいた、より詳細なインスタンス全体のアクセス制御を提供します。このトピックでは、セキュリティグループを設定して、NLB インスタンス上の個々のリスナーへのアクセスを制御する方法について説明します。
利用シーン
このトピックでは、セキュリティグループを使用して NLB インスタンスへのアクセスを制御する方法を、3 つのシナリオで説明します。 例では、ポート 80 とポート 81 に TCP リスナーが構成された NLB インスタンスを使用します。
利用シーン | セキュリティグループルール | 期待される結果 | 関連する操作手順 |
1:NLB インスタンスがセキュリティグループに関連付けられていない。 | デフォルトでは、NLB リスナーポートはすべてのトラフィックを許可します。 | この例では、ポート 80 と 81 に TCP リスナーを備えたNLB インスタンスを使用します。
| |
2:NLB インスタンスがセキュリティグループに関連付けられている。 | TCP ポート 81 へのアクセスを拒否します。 説明 このトピックに関連するセキュリティグループルールのみがリストされています。デフォルトのルールは表示されません。 |
| |
3:NLB インスタンスに関連付けられたセキュリティグループが変更される。 |
説明 このトピックに関連するセキュリティグループルールのみがリストされています。デフォルトのルールは表示されません。 |
|
制限事項
項目 | 詳細 |
サポートされているセキュリティグループの種類 | 基本セキュリティグループ、高度セキュリティグループ |
サポートされていないセキュリティグループの種類 | マネージドセキュリティグループ |
同じ VPC が必要 | セキュリティグループと NLB インスタンスは同じ VPC に属している必要があります |
セキュリティグループの最大数 | NLB インスタンスあたり最大 4 つのセキュリティグループ |
種類の混在は不可 | NLB インスタンスに関連付けられているすべてのセキュリティグループは、同じ種類である必要があります。基本から高度に切り替えるには、まず NLB インスタンスを基本セキュリティグループから削除します。高度から基本に切り替えるには、まず NLB インスタンスを高度セキュリティグループから削除します |
クォータの計算 | 利用可能なセキュリティグループのスロット数 = ECS の ENI セキュリティグループクォータ − 1 (マネージドセキュリティグループ用に予約) |
セキュリティグループルールのクォータ | 利用可能なルールのスロット数 = ECS の ENI セキュリティグループルールクォータ − マネージドセキュリティグループのルール数 |
レガシーインスタンス | 2022 年 9 月 30 日 (パブリックプレビュー期間中) より前に作成された NLB インスタンスは、セキュリティグループに追加できません。この機能を使用するには、これらのインスタンスを置き換えるか、新しいインスタンスを購入してください |
基本セキュリティグループと高度セキュリティグループの違いの詳細については、「基本セキュリティグループと高度セキュリティグループ」をご参照ください。
前提条件
VPC1 という名前の VPC が作成済みであること。詳細については、「VPC の作成と管理」をご参照ください。
VPC1 には、NLB インスタンスのバックエンドサーバーとなる 2 つの ECS インスタンス (ECS01 と ECS02) が作成されており、両方の ECS インスタンスにアプリケーションサービスがデプロイされています。
ECS インスタンスの作成方法の詳細については、「ウィザードを使用したインスタンスの作成」をご参照ください。
このトピックでは、ECS01 と ECS02 での以下のアプリケーションデプロイメント例を使用します。
ドメイン名を登録し、ICP 登録を完了し、NLB インスタンスの CNAME レコードを設定済みであること。
ステップ 1:サーバーグループの作成
NLB コンソールにログインします。
上部のナビゲーションバーで、サーバーグループがデプロイされているリージョンを選択します。この例では、中国 (杭州) を選択します。
-
左側のナビゲーションウィンドウで、NLB > サーバーグループ を選択します。
サーバーグループ ページで、サーバーグループの作成 をクリックします。
サーバーグループの作成 ダイアログボックスで、以下のパラメーターを設定し、作成 をクリックします。
このセクションでは、このトピックに関連するパラメーターのみを説明します。他のパラメーターについては、デフォルト値のままにすることができます。詳細については、「サーバーグループの作成」をご参照ください。
パラメーター
説明
サーバーグループタイプ
サーバーグループタイプを選択します。この例では、サーバータイプ が選択されています。
サーバーグループ名
サーバーグループの名前を入力します。この例では、RS01 を使用します。
VPC
ドロップダウンリストから VPC を選択します。この例では、VPC1 を選択します。
バックエンドサーバープロトコル
バックエンドサーバーのプロトコルを選択します。この例では、[TCP] を選択します。
スケジューリングアルゴリズム
スケジューリングアルゴリズムを選択します。この例では、重み付きラウンドロビン が選択されています。
サーバーグループが作成されました ダイアログボックスで、バックエンドサーバーの追加 をクリックします。
バックエンドサーバー タブで、バックエンドサーバーの追加 をクリックします。
バックエンドサーバーの追加 パネルで、作成した ECS01 および ECS02 インスタンスを選択し、次へ をクリックします。
追加されたサーバーのポートと重みを設定し、OK をクリックします。
ステップ 2:NLB インスタンスの作成とリスナーの設定
NLB コンソールにログインします。
トップナビゲーションバーで、NLB インスタンスがデプロイされているリージョンを選択します。この例では、[中国 (杭州)] が選択されています。
インスタンス ページで、NLB の作成 をクリックします。
NLB (従量課金) 購入ページで、次のパラメーターを設定し、[今すぐ作成] をクリックします。
このセクションでは、このトピックに関連するパラメーターのみを説明します。他のパラメーターの詳細については、「NLB インスタンスの作成」をご参照ください。
リージョンを選択します。この例では、中国 (杭州) を選択します。
ネットワークタイプ:この例では、[プライベート] を選択します。
VPC:この例では、VPC1 を選択します。
インスタンス ページに戻り、作成した NLB インスタンスを見つけ、NLB インスタンス ID をクリックします。
リスナー タブをクリックします。 リスナー タブで、リスナーのクイック作成 をクリックします。 リスナーのクイック作成 ダイアログボックスで、次のパラメーターを設定してポート 80 に TCP リスナーを作成し、OK をクリックします。
リスナー設定
説明
リスナープロトコルの選択
リスナープロトコルを選択します。この例では、[TCP] を選択します。
リスナーポート
リスナーポートを入力します。この例では、ポート 80 を使用します。
サーバーグループ
サーバータイプ と、サーバータイプ 配下のサーバーグループを選択します。
この例では、「ステップ 1:サーバーグループの作成」で作成したサーバーグループ RS01 を選択します。
リスナー タブで、リスナーのクイック作成 をクリックします。リスナーのクイック作成 ダイアログボックスで、次のパラメーターを設定してポート 81 に TCP リスナーを作成し、OK をクリックします。
リスナー設定
説明
リスナープロトコルの選択
リスナープロトコルを選択します。この例では、[TCP] を選択します。
リスナーポート
リスナーポートを入力します。この例では、ポート 81 を使用します。
サーバーグループ
サーバータイプ と、サーバータイプ 配下のバックエンドサーバーグループを選択します。
この例では、「ステップ 1:サーバーグループの作成」で作成したサーバーグループ RS01 を選択します。
セキュリティグループに関連付ける前の NLB インスタンスのアクセシビリティを検証します。
インターネットにアクセスできる Linux クライアントにログインします。CentOS システムを使用していて Telnet がインストールされていない場合は、
yum install -y telnetコマンドを実行してインストールできます。telnet <domain_name> 80コマンドを実行して、クライアントが NLB インスタンスの TCP ポート 80 にアクセスできるかどうかをテストします。次の応答は、接続が成功したことを示します。
Trying *.*.*.*... Connected to www.example.com. Escape character is '^]'.ブラウザに
http://<domain_name>:80などのドメイン名とポート番号を入力します。 次の図に示すようなページが表示されると、NLB インスタンスがバックエンドサーバーにリクエストを転送できることを示します。
telnet <domain_name> 81コマンドを実行して、クライアントが NLB インスタンスの TCP ポート 81 にアクセスできるかどうかをテストします。Trying *.*.*.*... Connected to www.example.com. Escape character is '^]'.ブラウザに
http://<domain_name>:81などのドメイン名とポート番号を入力します。 次の図に示すようなページが表示されると、NLB インスタンスがリクエストをバックエンドサーバーに転送できることを示します。
テスト結果は、NLB インスタンスがセキュリティグループに関連付けられていない場合、クライアントがポート 80 の TCP リスナーとポート 81 の TCP リスナーの両方にアクセスできることを示しています。
ステップ 3:セキュリティグループの作成
NLB インスタンスをセキュリティグループに追加する前に、まずECS コンソールでセキュリティグループを作成する必要があります。
ECS コンソールにログインします。
左側のナビゲーションウィンドウの [ネットワークとセキュリティ] で、[セキュリティグループ] をクリックします。
上部のナビゲーションバーで、セキュリティグループを作成するリージョンを選択します。この例では、中国 (杭州) を選択します。
[セキュリティグループ] ページで、セキュリティグループの作成 をクリックします。
セキュリティグループの作成 ページで、[基本情報] セクションのパラメーターを設定します。
このセクションでは、このトピックに関連するパラメーターのみを説明します。他のパラメーターの詳細については、「セキュリティグループの作成」をご参照ください。
ネットワーク:この例では、VPC1 という名前の VPC を選択します。
セキュリティグループタイプ: この例では、基本セキュリティグループ が選択されています。
[セキュリティグループの作成] ページで、ルールの設定 セクションのパラメーターを設定します。
ルールを追加 をクリックします。 セキュリティグループルールの作成 ページで、次のパラメーターに基づいてポート 81 へのアクセスを拒否するインバウンドルールを追加します。 次に、同じ優先度でポート 80 へのアクセスを許可する 2 番目のインバウンドルールを追加します。 [OK] をクリックします。
パラメーター
説明
トラフィック方向
インバウンド を選択します。
ポリシー
拒否 を選択します。
優先順位
デフォルト値の 1 のままにします。
プロトコルタイプ
[カスタム TCP] を選択します。
ソース
0.0.0.0/0を選択します。ポート範囲
ポート番号 81 を入力します。
説明
セキュリティグループルールの説明を入力します。
ステップ 4:NLB インスタンスの関連付けと検証
手順 3: セキュリティグループの作成で作成したセキュリティグループに NLB インスタンスを関連付け、セキュリティグループルールが NLB インスタンスに対して有効になることを確認します。
NLB コンソールにログインします。
上部のナビゲーションバーで、NLB インスタンスがデプロイされているリージョンを選択します。この例では、[中国 (杭州)] が選択されています。
NLB の インスタンス ページで、ステップ 2: NLB インスタンスを作成し、リスナーを設定するで作成した NLB インスタンスを探し、インスタンス ID をクリックします。インスタンスの詳細 タブで、セキュリティグループ タブをクリックします。
セキュリティグループ タブで、セキュリティグループの追加 をクリックします。セキュリティグループに NLB インスタンスを追加する ダイアログボックスで、手順3:セキュリティグループの作成 で作成したセキュリティグループを選択し、OK をクリックします。
左側のリストで対象のセキュリティグループの ID をクリックし、インバウンド または アウトバンド タブをクリックすると、セキュリティグループルールを表示できます。
ここでは、関連するセキュリティグループのインバウンドルールのみを記載しています。NLB インスタンスに関連付けられたセキュリティグループのルールは次のとおりです。
アクション
優先度
プロトコルタイプ
ポート範囲
ソース
許可
1
カスタム TCP
宛先: 80/80ソース: 0.0.0.0/0拒否
1
カスタム TCP
宛先: 81/81ソース: 0.0.0.0/0NLB インスタンスをセキュリティグループに関連付けた後、アクセス結果を検証します。
インターネットにアクセスできる Linux クライアントにログインします。
telnet <domain_name> 80コマンドを実行して、クライアントが NLB インスタンスのポート 80 上の TCP リスナーにアクセスできるかどうかをテストします。次の応答は、接続が成功したことを示します。
Trying *.*.*.*... Connected to www.example.com. Escape character is '^]'.ブラウザに、
http://<domain_name>:80のようにドメイン名とポート番号を入力します。 次の図に示すようなページが表示されると、NLB インスタンスがバックエンドサーバーにリクエストを転送できることを示します。
telnet <domain_name> 81コマンドを実行して、クライアントが NLB インスタンスのポート 81 にある TCP リスナーにアクセスできるかどうかを確認します。以下のような応答メッセージを受信した場合、クライアントは NLB インスタンスの TCP リスナーのポート 81 にアクセスできないことを意味します。これは、NLB インスタンスが追加されているセキュリティグループが、NLB インスタンスに対してアクセスの制御を実施していることも意味します。
Trying *.*.*.*... telnet: connect to address *.*.*.*: Connection timed out Trying *.*.*.*... telnet: connect to address *.*.*.*: Connection timed outブラウザにドメイン名とポート番号 (例:
http://domain_name:81) を入力します。Web ページにアクセスできない場合は、クライアントが NLB インスタンスの TCP リスナーのポート 81 にアクセスできず、NLB インスタンスが追加されているセキュリティグループのアクセスの制御が NLB インスタンスで有効になっていることを示します。
ステップ 5:セキュリティグループの変更と検証
セキュリティグループルールを変更し、NLB インスタンスの更新されたルールが有効であることを確認してください。
NLB の インスタンス ページに戻り、手順 2:NLB インスタンスを作成し、リスナーを設定するで作成した NLB インスタンスを見つけ、インスタンス ID をクリックします。インスタンスの詳細 タブで、セキュリティグループ タブをクリックします。
セキュリティグループルールを変更するには、基本情報 セクションでセキュリティグループ ID をクリックします。または、セキュリティグループ タブで ECS コンソール をクリックします。いずれの操作でも セキュリティグループの詳細 ページに移動します。
セキュリティグループの詳細 ページで、TCP ポート 80 へのアクセスを許可するルールを見つけ、操作 列で 編集 をクリックし、ポリシー を 拒否 に変更します。
ここでは、関連するセキュリティグループルールのみが表示されます。変更されたセキュリティグループルールは次のとおりです。
アクション
優先度
プロトコルタイプ
ポート範囲
ソース
拒否
1
カスタム TCP
宛先: 80/80ソース: 0.0.0.0/0拒否
1
カスタム TCP
宛先: 81/81ソース: 0.0.0.0/0NLB インスタンスのセキュリティグループルールを変更した後、アクセス結果を確認します。
インターネットにアクセスできる Linux クライアントにログインします。
telnet <domain_name> 80コマンドを実行して、クライアントが NLB インスタンスのポート 80 の TCP リスナーにアクセスできるかどうかを確認します。以下に示す応答メッセージは、クライアントが NLB インスタンスの TCP リスナーのポート 80 にアクセスできないことを示しています。これにより、NLB インスタンスの変更されたセキュリティグループルールによるアクセスの制御が有効になったことが確認できます。
Trying *.*.*.*... telnet: connect to address *.*.*.*: Connection timed out Trying *.*.*.*... telnet: connect to address *.*.*.*: Connection timed outブラウザに、
http://domain_name:80のようにドメイン名とポート番号を入力します。 ウェブページにアクセスできない場合は、クライアントが NLB インスタンスの TCP リスナーのポート 80 にアクセスできず、かつ NLB インスタンスが追加されているセキュリティグループのアクセスの制御が NLB インスタンスで有効になっていることを示します。telnet <domain_name> 81コマンドを実行して、クライアントが NLB インスタンスのポート 81 の TCP リスナーにアクセスできるかどうかを確認します。以下に示す応答メッセージを受信した場合、クライアントが NLB インスタンスの TCP リスナーのポート 81 にアクセスできず、NLB インスタンスに対するアクセスの制御用に変更されたセキュリティグループルールが有効になったことを意味します。
Trying *.*.*.*... telnet: connect to address *.*.*.*: Connection timed out Trying *.*.*.*... telnet: connect to address *.*.*.*: Connection timed outブラウザに、
http://domain_name:81のようにドメイン名とポート番号を入力します。ウェブページにアクセスできない場合、クライアントが NLB インスタンスの TCP リスナーのポート 81 にアクセスできず、NLB インスタンスのセキュリティグループのアクセスの制御が NLB インスタンスで有効になっていることを示します。
関連トピック
NLB インスタンスをセキュリティグループに関連付けたり、関連付けを解除したりする方法については、「NLB インスタンスとセキュリティグループの関連付け」をご参照ください。
特定の IP アドレスからの NLB インスタンスへのアクセスを許可または拒否するには、「セキュリティグループを許可リストまたはブロックリストとして使用する」をご参照ください。
セキュリティグループの詳細については、「セキュリティグループ」をご参照ください。
LoadBalancerJoinSecurityGroup:セキュリティグループを NLB インスタンスに関連付けます。
LoadBalancerLeaveSecurityGroup:セキュリティグループと NLB インスタンスの関連付けを解除します。