クラウドセキュリティを強化するため、セキュリティグループを使用して、プロトコル、ポート、または IP アドレスに基づいて Network Load Balancer (NLB) インスタンスへのアクセスを制御できます。 アクセスコントロールリスト (ACL) を使用するクラシックロードバランサー (CLB) とは異なり、NLB はセキュリティグループを使用して、プロトコルとポートに基づいた、よりきめ細かいインスタンス全体のアクセス制御を提供します。 このトピックでは、セキュリティグループを設定して NLB インスタンス上の個々のリスナーへのアクセスを制御する方法について説明します。
シナリオ
NLB インスタンスがセキュリティグループに関連付けられていない場合、デフォルトで NLB リスナーポートへのすべてのトラフィックが許可されます。
NLB インスタンスがセキュリティグループに関連付けられていますが、拒否ルールが設定されていない場合、デフォルトですべての NLB リスナーポートへのトラフィックが許可されます。 特定の IP アドレスのみが NLB インスタンスにアクセスできるようにする場合は、フォールバックとして拒否ルールを追加する必要があります。
NLB インスタンスへのインバウンドトラフィックを制御したい場合は、セキュリティグループをインスタンスに関連付け、ビジネス要件に基づいてセキュリティグループルールを設定できます。
ロードバランサーからのアウトバウンドトラフィックは、クライアントリクエストへの応答パケットで構成されます。 サービスの正常な運用を確保するため、NLB セキュリティグループはアウトバウンドトラフィックを制限しません。 セキュリティグループのアウトバウンドルールを設定する必要はありません。
NLB インスタンスが作成されると、システムはインスタンスが存在する VPC 内にマネージドセキュリティグループを自動的に作成します。 このマネージドセキュリティグループは NLB インスタンスによって制御され、読み取り専用のアクセス権のみが付与されています。 マネージドセキュリティグループには、次の 2 種類のルールが含まれています。
優先度 1 のルール:バックエンドサーバーとの通信およびヘルスチェックのために、デフォルトでインスタンスの Local IP からのトラフィックを許可します。
セキュリティグループルールを追加する際、NLB の Local IP に対して優先度 1 の拒否ルールを追加することは避けてください。 このようなルールは、マネージドセキュリティグループのポリシーと競合し、NLB とバックエンドサービス間の通信に影響を与える可能性があります。 NLB コンソールにログインし、インスタンス詳細ページで Local IP を確認できます。
優先度 100 のルール:デフォルトですべての IP アドレスからのトラフィックを許可します。 つまり、NLB インスタンスがセキュリティグループに関連付けられていても拒否ルールが設定されていない場合、NLB リスナーポートへのすべてのトラフィックが許可されます。
ベーシックまたはアドバンストセキュリティグループの暗黙のルールには、他のすべてのトラフィックを拒否するルールが含まれています。 この場合、NLB マネージドセキュリティグループのデフォルトの許可ルールが優先されます。
このトピックでは、セキュリティグループを使用して NLB インスタンスへのアクセスを制御する方法を、3 つのシナリオで説明します。この例では、ポート 80 とポート 81 に TCP リスナーが設定されている NLB インスタンスを使用します。
シナリオ | セキュリティグループルール | 期待される結果 | 関連する手順 |
1:NLB インスタンスがセキュリティグループに関連付けられていない。 | デフォルトでは、NLB リスナーポートはすべてのトラフィックを許可します。 | この例では、ポート 80 と 81 の TCP リスナーを持つ NLB インスタンスを使用します。
| |
2:NLB インスタンスがセキュリティグループに関連付けられている。 | TCP ポート 81 へのアクセスを拒否します。 説明 このトピックに関連するセキュリティグループルールのみが記載されています。 デフォルトのルールは表示されません。 |
| |
3:NLB インスタンスに関連付けられたセキュリティグループが変更される。 |
説明 このトピックに関連するセキュリティグループルールのみが記載されています。 デフォルトのルールは表示されません。 |
|
制限事項
項目 | セキュリティグループの種類 | 説明 |
NLB でサポートされるセキュリティグループ |
|
基本セキュリティグループおよび高度セキュリティグループの詳細については、「基本セキュリティグループと高度セキュリティグループ」をご参照ください。 |
NLB でサポートされないセキュリティグループ | マネージドセキュリティグループ | マネージドセキュリティグループの詳細については、「マネージドセキュリティグループ」をご参照ください。 |
前提条件
VPC1 という名前の VPC を作成済みであること。 詳細については、「VPC の作成と管理」をご参照ください。
VPC1 に 2 つの ECS インスタンス (ECS01 と ECS02) が作成され、NLB インスタンスのバックエンドサーバーとして機能します。両方の ECS インスタンスにはアプリケーションサービスがデプロイされています。
ECS インスタンスの作成方法の詳細については、「ウィザードを使用したインスタンスの作成」をご参照ください。
このトピックでは、ECS01 と ECS02 での次のアプリケーションデプロイの例を使用します:
ドメイン名を登録し、ICP 申請を完了し、NLB インスタンスの CNAME レコードを設定済みであること。
手順1:サーバーグループの作成
- 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 インスタンスがバックエンドサーバーにリクエストを転送できることを示します。Hello World ! this is ECS01.telnet <domain_name> 81コマンドを実行して、クライアントが NLB インスタンスの TCP ポート 81 にアクセスできるかどうかをテストします。Trying *.*.*.*... Connected to www.example.com. Escape character is '^]'.ブラウザーに、
http://<domain_name>:81のようなドメイン名とポート番号を入力します。 次の図に示すようなページが表示されると、NLB インスタンスがバックエンドサーバーにリクエストを転送できることを示します。Hello World ! this is ECS01.テスト結果は、NLB インスタンスがセキュリティグループに関連付けられていない場合、クライアントがポート 80 の TCP リスナーとポート 81 の TCP リスナーの両方にアクセスできることを示しています。
手順3:セキュリティグループの作成
NLB インスタンスをセキュリティグループに追加する前に、まず ECS コンソールでセキュリティグループを作成する必要があります。
ECS コンソールにログインします。
左側のナビゲーションペインで、ネットワークとセキュリティ の セキュリティグループ をクリックします。
上部メニューで、セキュリティグループを作成するリージョンを選択します。 この例では、[中国 (杭州)] を選択します。
セキュリティグループ ページで、セキュリティグループの作成 をクリックします。
セキュリティグループの作成 ページで、[基本情報] セクションのパラメーターを設定します。
このセクションでは、このトピックに関連するパラメーターのみを説明します。 その他のパラメーターの詳細については、「セキュリティグループの作成」をご参照ください。
ネットワーク:この例では、VPC1 という名前の VPC を選択します。
セキュリティグループタイプ: この例では、基本セキュリティグループ が選択されています。
[セキュリティグループの作成] ページで、ルールの設定 セクションのパラメーターを設定します。
ルールを追加 をクリックします。セキュリティグループルールの作成 ページで、次のパラメーターに基づいてポート 81 へのアクセスを拒否するインバウンドルールを追加します。次に、同じ優先度でポート 80 へのアクセスを許可する 2 つ目のインバウンドルールを追加して、[送信] をクリックします。
パラメーター
説明
[トラフィック方向]
インバウンド を選択します。
[ポリシー]
拒否 を選択します。
[優先順位]
デフォルト値の [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 インスタンスがリクエストをバックエンドサーバーに転送できることを示します。Hello World ! this is ECS01.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 をクリックします。インスタンスの詳細 タブで、セキュリティグループ タブをクリックします。
セキュリティグループ タブで、ECS コンソール をクリックします。
セキュリティグループの詳細 ページで、TCP ポート 80 へのアクセスを許可するルールを探し、操作 列で 編集 をクリックして、ポリシー を 拒否 に変更します。
ここでは、関連するセキュリティグループルールのみを示します。 変更後のセキュリティグループルールは次のとおりです:
アクション
優先度
プロトコルタイプ
ポート範囲
ソース
拒否
1
カスタム TCP
宛先: 80/80送信元: 0.0.0.0/0拒否
1
カスタム TCP
宛先: 81/81送信元:0.0.0.0/0重要セキュリティグループルールを変更または追加した後、システムは、[優先度 1] の [192.168.0.0/16] からの [すべての TCP] トラフィックを [許可] するルールなど、優先度の高いセキュリティグループルールを自動的に追加する場合があります。 これらのシステムによって生成されたルールは、ユーザー定義ルールよりも優先度が高く、手動で設定した [拒否] ルールを上書きする可能性があります。
アクセス制御の結果を検証する前に、セキュリティグループルールを確認し、意図したアクセス制御ポリシーと競合する可能性のあるシステム生成ルールを削除または調整することを推奨します。
NLB インスタンスのセキュリティグループルールを変更した後、アクセス結果を確認します。
インターネットにアクセスできる 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 インスタンスの関連付けを解除します。