リクエストからのアクセスを制御するために、プロトコル、ポート、および IP アドレスに基づいてアクセス制御を実装するようにセキュリティグループを構成できます。 クラシックロードバランサー(CLB)で使用されるアクセス制御リスト(ACL)の代わりに、ネットワークロードバランサー(NLB)は、プロトコルとポートに基づくよりきめ細かいアクセス制御を使用します。 このトピックでは、リスナーとポートに基づいてアクセス制御を実装するために NLB インスタンスのセキュリティグループを構成する方法について説明します。
シナリオ
NLB インスタンスがセキュリティグループに追加される前は、NLB インスタンスのリスナーポートはデフォルトですべてのリクエストを受け入れます。
NLB インスタンスが拒否ルールを含まないセキュリティグループに追加された後、NLB インスタンスのリスナーポートはデフォルトですべてのリクエストを受け入れます。 特定の IP アドレスからのリクエストのみを NLB インスタンスに許可する場合は、少なくとも 1 つの拒否ルールを作成する必要があります。
NLB インスタンスにアクセス制御要件があり、NLB インスタンスへのインバウンドトラフィックを制御する場合は、NLB インスタンスをセキュリティグループに追加し、ビジネス要件に基づいてセキュリティグループルールを構成できます。
NLB インスタンスのアウトバウンドトラフィックとは、ユーザーリクエストに返される応答を指します。 サービスが影響を受けないように、NLB セキュリティグループはアウトバウンドトラフィックを制限しません。 セキュリティグループのアウトバウンドルールを構成する必要はありません。
NLB インスタンスが作成されると、システムは NLB インスタンスが存在する VPC にマネージドセキュリティグループを自動的に作成します。 このセキュリティグループは NLB インスタンスによって制御されるため、詳細を表示できますが、変更することはできません。 マネージドセキュリティグループには、次のタイプのセキュリティグループルールが含まれています。
優先度 1 のルール:これらのルールは、NLB インスタンスで使用されるローカル IP アドレスを許可し、インスタンスとそのバックエンドサーバー間の通信、およびヘルスチェックを有効にします。
優先度 1 のセキュリティグループルールを追加して NLB インスタンスのローカル IP アドレスを拒否しないことをお勧めします。このような競合が発生すると、NLB インスタンスとバックエンドサーバー間の通信が中断される可能性があります。 NLB コンソールにログインして、NLB インスタンスのローカル IP アドレスを確認できます。
優先度 100 のルール:これらのルールはすべての IP アドレスを許可します。 構成された拒否ルールがない場合、このセキュリティグループの NLB インスタンスは、リスナーを使用してすべてのリクエストをチェックします。
基本セキュリティグループまたは高度なセキュリティグループのデフォルトのアクセス制御ルール(非表示)には、すべてのリクエストを拒否するルールが含まれています。 この場合、NLB インスタンスのマネージドセキュリティグループのデフォルトの許可ルールが有効になります。
次の表は、さまざまなシナリオでNLB のセキュリティグループを構成する方法を示しています。 次の例では、アクセス制御はプロトコルとポートに基づいています。 ポート 80 をリッスンする TCP リスナーとポート 81 をリッスンする TCP リスナーが使用されます。
番号 | セキュリティグループルール | 期待される結果 | 参照 |
シナリオ 1:NLB インスタンスはセキュリティグループに追加されていません。 | NLB のリスナーポートは、デフォルトですべてのリクエストを受け入れます。 | この例では、NLB インスタンス用にポート 80 をリッスンする TCP リスナーとポート 81 をリッスンする TCP リスナーが作成されます。
| |
シナリオ 2:NLB インスタンスがセキュリティグループに追加されます。 | TCP ポート 81 はリクエストを拒否します。 説明 次の表は、このトピックに関連するセキュリティグループルールのみを説明しています。 他のデフォルトルールは含まれていません。 |
| |
シナリオ 3:NLB インスタンスが追加されているセキュリティグループが変更されます。 |
説明 次の表は、このトピックに関連するセキュリティグループルールのみを説明しています。 他のデフォルトルールは含まれていません。 |
|
制限
項目 | セキュリティグループタイプ | 説明 |
NLB でサポートされているセキュリティグループ |
|
基本セキュリティグループと高度なセキュリティグループの詳細については、「基本セキュリティグループと高度なセキュリティグループ」をご参照ください。 |
NLB でサポートされていないセキュリティグループ | マネージドセキュリティグループ | マネージドセキュリティグループの詳細については、「マネージドセキュリティグループ」をご参照ください。 |
前提条件
仮想プライベートクラウド(VPC)が作成されます。 この例では、VPC1 が使用されます。 詳細については、「VPC の作成と管理」をご参照ください。
2 つの Elastic Compute Service(ECS)インスタンスが VPC1 にデプロイされています。 ECS01 と ECS02 は、NLB インスタンスのバックエンドサーバーとして機能します。 アプリケーションは ECS01 と ECS02 にデプロイされます。
ECS インスタンスの作成方法の詳細については、「ウィザードを使用してインスタンスを作成する」をご参照ください。
次のコードブロックは、ECS01 と ECS02 にアプリケーションをデプロイする方法を示しています。
ドメイン名が登録され、ドメイン名にインターネットコンテンツプロバイダー(ICP)番号が取得され、ドメイン名を NLB インスタンスのドメイン名にマッピングする CNAME レコードが作成されます。 詳細については、「汎用ドメイン名を登録する」、「ICP 登録プロセス」、および「ステップ 4:DNS レコードを作成する」をご参照ください。
ステップ 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 インスタンスがセキュリティグループに追加される前に、NLB インスタンスのアクセス可能性を確認します。
インターネットアクセスのある Linux クライアントにログインします。 CentOS を使用していて telnet がインストールされていない場合は、
yum install -y telnet
コマンドを実行して telnet をインストールします。telnet ドメイン名 80
コマンドを実行して、クライアントがNLB インスタンスのポート 80(TCP ポート)にアクセスできるかどうかをテストします。次の応答パケットは、ポートにアクセスできることを示しています。
Trying *.*.*.*... Connected to www.example.com. Escape character is '^]'. /* ポートへの接続に成功しました。 */
http://ドメイン名:80
など、ブラウザからドメイン名とポートにアクセスします。 次の図の応答は、NLB インスタンスがリクエストをバックエンドサーバーに転送できることを示しています。telnet ドメイン名 81
コマンドを実行して、クライアントがNLB インスタンスのポート 81(TCP ポート)にアクセスできるかどうかをテストします。Trying *.*.*.*... Connected to www.example.com. Escape character is '^]'. /* ポートへの接続に成功しました。 */
http://ドメイン名:81
など、ブラウザからドメイン名とポートにアクセスします。 次の図の応答は、NLB インスタンスがリクエストをバックエンドサーバーに転送できることを示しています。テストは、NLB インスタンスがセキュリティグループに追加される前に、クライアントが NLB インスタンスのポート 80 とポート 81 にアクセスできることを示しています。
ステップ 3:セキュリティグループを作成する
NLB インスタンスをセキュリティグループに追加するには、まずECS コンソールでセキュリティグループを作成する必要があります。
ECS コンソールにログインします。
左側のナビゲーションウィンドウで、 を選択します。
上部のナビゲーションバーで、セキュリティグループを作成するリージョンを選択します。 この例では、[中国 (杭州)] が選択されています。
[セキュリティグループ] ページで、[セキュリティグループの作成] をクリックします。
[セキュリティグループの作成] ページで、[基本情報] セクションのパラメーターを設定します。
次のセクションでは、このトピックに関連するパラメーターのみについて説明します。 他のパラメーターの詳細については、「セキュリティグループを作成する」をご参照ください。
[ネットワーク]:この例では、VPC1 が選択されています。
[セキュリティグループタイプ]:この例では、[基本セキュリティグループ] が選択されています。
[セキュリティグループの作成] ページで、[アクセスルール] セクションのルールを設定します。
[インバウンド] タブで、[ルールの追加] をクリックします。
セキュリティグループルールを構成します。
パラメーター
説明
アクション
[拒否] を選択します。
優先度
デフォルト値 [1] が使用されます。
プロトコルタイプ
[カスタム TCP] を選択します。
ポート範囲
ポート番号 81 を入力します。
承認オブジェクト
0.0.0.0/0
を選択します。説明
セキュリティグループルールの説明を入力します。
[セキュリティグループの作成] をクリックします。
ステップ 4:NLB インスタンスをセキュリティグループに追加し、結果を確認する
ステップ 3 で作成したセキュリティグループにNLB インスタンスを追加し、セキュリティグループルールがNLB インスタンスで有効になっているかどうかを確認します。
NLB コンソールにログインします。
上部のナビゲーションバーで、NLB インスタンスがデプロイされているリージョンを選択します。 この例では、[中国 (杭州)] が選択されています。
左側のナビゲーションウィンドウで、NLB > [インスタンス] を選択します。 ステップ 2 で作成した NLB インスタンスを見つけて、ID をクリックします。 インスタンスの詳細ページで、[セキュリティグループ] タブをクリックします。
[セキュリティグループ] タブで、[セキュリティグループの作成] をクリックします。 [セキュリティグループに NLB インスタンスを追加] ダイアログボックスで、ステップ 3 で作成したセキュリティグループを選択し、[OK] をクリックします。
左側のナビゲーションウィンドウで、管理するセキュリティグループの ID をクリックします。 [インバウンドポリシー] タブまたは [アウトバウンドポリシー] タブをクリックして、セキュリティグループルールを表示できます。
次の表は、このトピックに関連するインバウンドルールのみを説明しています。 次の表は、NLB インスタンスに作成されたセキュリティグループルールの構成について説明しています。
ポリシー
優先度
プロトコルタイプ
ポート範囲
承認オブジェクト
許可
1
カスタム TCP
宛先: 80/80
送信元: 0.0.0.0/0
拒否
1
カスタム TCP
宛先: 81/81
送信元: 0.0.0.0/0
NLB インスタンスをセキュリティグループに追加し、結果を確認します。
インターネットアクセスのある Linux クライアントにログインします。
telnet ドメイン名 80
コマンドを実行して、クライアントがNLB インスタンスのポート 80(TCP ポート)にアクセスできるかどうかをテストします。次の応答パケットは、ポートにアクセスできることを示しています。
Trying *.*.*.*... Connected to www.example.com. Escape character is '^]'. /* ポートへの接続に成功しました。 */
http://ドメイン名:80
など、ブラウザからドメイン名とポートにアクセスします。 次の図の応答は、NLB インスタンスがリクエストをバックエンドサーバーに転送できることを示しています。telnet ドメイン名 81
コマンドを実行して、クライアントがNLB インスタンスのポート 81(TCP ポート)にアクセスできるかどうかをテストします。次の応答パケットは、クライアントがNLB インスタンスのポート 81 にアクセスできないことを示しています。 結果は、NLB インスタンスに構成されたセキュリティグループルールがNLB インスタンスで有効になっていることを示しています。
Trying *.*.*.*... telnet: connect to address *.*.*.*: Connection timed out Trying *.*.*.*... telnet: connect to address *.*.*.*: Connection timed out /* ポートへの接続にタイムアウトしました。 */
http://ドメイン名:81
など、ブラウザからドメイン名とポートにアクセスします。 ウェブページにアクセスできません。 クライアントはNLB インスタンスのポート 81 にアクセスできません。 結果は、NLB インスタンスに構成されたセキュリティグループルールがNLB インスタンスで有効になっていることを示しています。
ステップ 5:セキュリティグループルールを変更し、結果を確認する
セキュリティグループルールを変更し、NLB インスタンスへのアクセスが許可されているか拒否されているかを確認します。
NLB > [インスタンス] ページに戻り、ステップ 2 で作成した NLB インスタンスを見つけて、ID をクリックします。 [インスタンスの詳細] ページで、[セキュリティグループ] タブをクリックします。
[基本情報] セクションのセキュリティグループの ID をクリックするか、[セキュリティグループ] タブの右上隅にある [ECS コンソール] をクリックします。 次に、[セキュリティグループルール] タブでセキュリティグループルールを変更できます。
[セキュリティグループルール] タブで、ポート 80 へのアクセスを許可するセキュリティグループルールを見つけます。 [アクション] 列の [変更] をクリックし、[アクション] を [拒否] に設定します。
次の表は、このトピックに関連するセキュリティグループルールのみを説明しています。 次の表は、新しいセキュリティグループルールについて説明しています。
ポリシー
優先度
プロトコルタイプ
ポート範囲
承認オブジェクト
拒否
1
カスタム TCP
宛先: 80/80
送信元: 0.0.0.0/0
拒否
1
カスタム TCP
宛先: 81/81
送信元: 0.0.0.0/0
セキュリティグループルールが変更された後、NLB インスタンスへのアクセスが拒否されているかどうかをテストします。
インターネットアクセスのある Linux クライアントにログインします。
telnet ドメイン名 80
コマンドを実行して、クライアントがNLB インスタンスのポート 80(TCP ポート)にアクセスできるかどうかをテストします。次の応答パケットは、クライアントがNLB インスタンスのポート 80 にアクセスできないことを示しています。 結果は、新しいセキュリティグループルールがNLB インスタンスで有効になっていることを示しています。
Trying *.*.*.*... telnet: connect to address *.*.*.*: Connection timed out Trying *.*.*.*... telnet: connect to address *.*.*.*: Connection timed out /* ポートへの接続にタイムアウトしました。 */
http://ドメイン名:80
など、ブラウザからドメイン名とポートにアクセスします。 ウェブページにアクセスできません。 クライアントはNLB インスタンスのポート 80 にアクセスできません。 結果は、NLB インスタンスに構成された新しいセキュリティグループルールがNLB インスタンスで有効になっていることを示しています。telnet ドメイン名 81
コマンドを実行して、クライアントがNLB インスタンスのポート 81(TCP ポート)にアクセスできるかどうかをテストします。次の応答パケットは、クライアントがNLB インスタンスのポート 81 にアクセスできないことを示しています。 結果は、新しいセキュリティグループルールがNLB インスタンスで有効になっていることを示しています。
Trying *.*.*.*... telnet: connect to address *.*.*.*: Connection timed out Trying *.*.*.*... telnet: connect to address *.*.*.*: Connection timed out /* ポートへの接続にタイムアウトしました。 */
http://ドメイン名:81
など、ブラウザからドメイン名とポートにアクセスします。 ウェブページにアクセスできません。 クライアントはNLB インスタンスのポート 81 にアクセスできません。 結果は、NLB インスタンスに構成された新しいセキュリティグループルールがNLB インスタンスで有効になっていることを示しています。
参照
NLB インスタンスをセキュリティグループに追加する方法、およびセキュリティグループから NLB インスタンスを削除する方法の詳細については、「NLB インスタンスをセキュリティグループに追加する」をご参照ください。
特定の IP アドレスのアクセスを許可または拒否する方法の詳細については、「セキュリティグループをブラックリストまたはホワイトリストとして使用する」をご参照ください。
セキュリティグループの詳細については、「セキュリティグループ」をご参照ください。
LoadBalancerJoinSecurityGroup:NLB インスタンスをセキュリティグループに追加します。
LoadBalancerLeaveSecurityGroup:セキュリティグループから NLB インスタンスを削除します。