特定の IP アドレスから Network Load Balancer (NLB) インスタンスへのリクエストを拒否または許可する場合、NLB インスタンスのセキュリティグループを設定してアクセス制御を実装できます。NLB のセキュリティグループは、きめ細かなアクセス制御を実装するホワイトリストまたはブラックリストとして使用できます。
シナリオ例
デフォルトでは、NLB インスタンスがセキュリティグループに関連付けられているかどうかにかかわらず、そのリスナーポートはすべてのインバウンドリクエストを受け付けます。許可ルールのみを持つセキュリティグループを追加しても、この動作は変わりません。特定の IP アドレスへのアクセスを制限するには、セキュリティグループに少なくとも 1 つの拒否ルールを追加する必要があります。
NLB セキュリティグループはインバウンドトラフィックにのみ適用されます。アウトバウンドトラフィック (クライアントリクエストへの応答) は決して制限されないため、アウトバウンドルールは不要です。
マネージドセキュリティグループ
NLB インスタンスを作成すると、システムは同じ Virtual Private Cloud (VPC) 内にマネージドセキュリティグループを自動的に作成します。このセキュリティグループは読み取り専用であり、ルールを表示することはできますが、変更することはできません。
マネージドセキュリティグループには、次のルールが含まれています。
優先度 | アクション | プロトコル | ソース | ポート範囲 | 説明 |
1 | 許可 | すべて | NLB ローカル IP アドレス | すべて | NLB インスタンスとバックエンドサーバー間の通信を有効にし、ヘルスチェックのトラフィックを許可します |
100 | 許可 | すべて | 0.0.0.0/0 | すべて | デフォルトですべてのインバウンドトラフィックを許可します |
(暗黙的) | 拒否 | すべて | 0.0.0.0/0 | すべて | ベーシックセキュリティグループおよびアドバンストセキュリティグループに組み込まれたデフォルトの deny-all ルールです。優先度 100 の許可ルールが優先されます |
NLB のローカル IP アドレスを対象とする優先度 1 の拒否ルールを追加しないでください。このようなルールはマネージドセキュリティグループと競合し、NLB インスタンスとバックエンドサーバー間の通信を妨げる可能性があります。NLB インスタンスのローカル IP アドレスを確認するには、NLB コンソールにログインします。
以下のシナリオで、ホワイトリストとブラックリストがどのように機能するかを説明します。詳細については、「セキュリティグループのルール」をご参照ください。
ブラックリストは、特定のIPアドレスからのアクセスを拒否します。

ホワイトリストは、特定のIPアドレスからのアクセスのみを許可します。

制限事項
項目 | セキュリティグループの種類 | 説明 |
NLB でサポートされるセキュリティグループ |
|
基本セキュリティグループおよび高度セキュリティグループの詳細については、「基本セキュリティグループと高度セキュリティグループ」をご参照ください。 |
NLB でサポートされないセキュリティグループ | マネージドセキュリティグループ | マネージドセキュリティグループの詳細については、「マネージドセキュリティグループ」をご参照ください。 |
前提条件
4 つの Elastic Compute Service (ECS) インスタンスを作成します。ECS インスタンスの作成方法の詳細については、「ECS インスタンスの購入」をご参照ください。
ECS01 と ECS02 は、NLB インスタンスのバックエンドサーバーとして使用します。アプリケーションは ECS01 と ECS02 にデプロイされます。
以下のサンプルコマンドを使用して、ECS01 と ECS02 にテストアプリケーションをデプロイします。
ECS03 と ECS04 は、NLB インスタンスにアクセスするために使用する、インターネットに接続可能なインスタンスです。既存の Linux サーバーを使用して NLB インスタンスにアクセスすることもできます。その場合、ECS03 と ECS04 を作成する必要はありません。
ドメイン名の登録、ドメイン名のインターネットコンテンツプロバイダー (ICP) 番号の取得、およびカスタムドメイン名を NLB インスタンスのドメイン名にマッピングするための CNAME レコードの作成が完了している必要があります。詳細については、「ドメイン名の登録」、「ICP申請プロセス」、および「ステップ 4:DNS レコードの作成」をご参照ください。
次の表に、このトピックで使用される ECS インスタンスの設定を示します。
インスタンス
ECS 設定
VPC
IP アドレス
手順
ECS01
インスタンスタイプ:ecs.u1-c1m1.large
CPU とメモリ:2 vCPU と 2 GiB のメモリ
オペレーティングシステム:Alibaba Cloud Linux 3.2104 LTS 64-bit
ネットワークタイプ:VPC
VPC01
プライベート:192.168.0.24
パブリック:割り当てなし
NLB インスタンスのバックエンドサーバーとして使用します。
ECS02
プライベート:192.168.0.37
パブリック:割り当てなし
ECS03
VPC02
プライベート:192.168.0.25
パブリック:47.xx.xx.55
NLB インスタンスにアクセスするためのクライアントとして使用します。
ECS04
プライベート:192.168.0.26
パブリック:101.xx.xx.251
ステップ 1:サーバーグループの作成
- NLBコンソールにログインします。
上部メニューで、サーバーグループを作成するリージョンを選択します。この例では、[中国 (杭州)] を選択します。
左側のナビゲーションウィンドウで、を選択します。
サーバーグループ ページで、サーバーグループの作成 をクリックします。
サーバーグループの作成 ダイアログボックスで、次のパラメーターを設定し、作成 をクリックします。
サーバーグループを作成するための主要なパラメーターを次の表に示します。他のパラメーターにはデフォルト値を使用します。詳細については、「サーバーグループの作成」をご参照ください。
パラメーター
説明
[タイプ]
サーバーグループのタイプを指定します。この例では、サーバータイプ を選択します。
[サーバーグループ名]
サーバーグループの名前を入力します。この例では、RS01 を使用します。
[VPC]
ドロップダウンリストから VPC を選択します。この例では、VPC01 を選択します。サーバーグループは、ECS01 および ECS02 と同じ VPC に存在する必要があります。
[バックエンドサーバープロトコル]
バックエンドプロトコルを選択します。この例では、[TCP] を選択します。
[サーバーグループが作成されました]ダイアログボックスで、バックエンドサーバーの追加 をクリックします。
バックエンドサーバー タブで、バックエンドサーバーの追加 をクリックします。
バックエンドサーバーの追加 パネルで、ECS01 と ECS02 を選択し、次のステップ をクリックします。
バックエンドサーバーのポートと重みを指定し、[OK] をクリックします。この例では、ポートに 80 を指定し、重みはデフォルト値を使用します。
ステップ 2:NLB インスタンスの作成とリスナーの設定
左側のナビゲーションペインで、を選択し、インスタンスページでNLB の作成をクリックします。
[Network Load Balancer (従量課金)] ページで、次のパラメーターを設定します。
以下に、一部のパラメーターのみを説明します。他のパラメーターの詳細については、「インスタンスの作成」をご参照ください。
[リージョン]:この例では、[中国 (杭州)] を選択します。
[インスタンスのネットワークタイプ]:この例では、[インターネット]を選択します。
[VPC]:この例では、VPC01 を選択します。
今すぐ購入 をクリックし、支払いを完了します。
インスタンス ページに戻り、作成した NLB インスタンスを見つけて、NLB インスタンスの ID をクリックします。
リスナー タブをクリックします。リスナー タブで、リスナーのクイック作成 をクリックします。リスナーのクイック作成 ダイアログボックスで、次のパラメーターを設定してポート 80 を使用する TCP リスナーを作成し、OK をクリックします。
パラメーター
手順
[リスナープロトコルの選択]
リスナープロトコルを選択します。この例では、[TCP] を選択します。
[リスニングポート]
この例では、ポート 80 を使用します。
[サーバーグループ]
サーバータイプ を選択し、サーバータイプ の横にあるドロップダウンリストからサーバーグループを選択します。
この例では、「ステップ 1:サーバーグループの作成」で作成したサーバーグループが選択されています。
NLB インスタンスがセキュリティグループに追加されていない場合、NLB インスタンスのアクセシビリティを確認します。コマンド
curl -s http://whatismyip.akamai.com/を使用して、リクエストを送信するクライアントのパブリック IP アドレスを照会できます。ECS03 にログオンし、次のコマンドを実行して、ECS03 が NLB インスタンスにアクセスできるかどうかをテストします:
telnet Domain name 80。エコー応答パケットを受信した場合は、ECS03 から NLB インスタンスにアクセスできることを意味します。
[root@iZbp1esczkzr2jlz ~]# curl -s http://whatismyip.akamai.com/ 47.xxx.55[root@iZbp1exxx lz ~]# telnet xxx.com 80 Trying 47.xxx.164... Connected to xxx.com.ECS04 にログインします。次のコマンドを実行して、ECS04 が NLB インスタンスにアクセスできるかどうかをテストします:
telnet ドメイン名 80。エコー応答パケットを受信した場合は、ECS04 から NLB インスタンスにアクセスできることを意味します。
[root@iZbp1esczkr2jlxxx ~]# curl -s http://whatismyip.akamai.com/ 101.xxx.251[root@iZbp1escxxx jl ~]# telnet nxxx xxx xxx.s.com 80 Trying 47.xxx.164... Connected to xxx.com.
この結果は、NLB インスタンスがセキュリティグループに追加される前に、ECS03 と ECS04 が NLB インスタンスにアクセスできることを示しています。
ステップ 3:セキュリティグループの作成
NLB インスタンスをセキュリティグループに追加する前に、ECS コンソールでセキュリティグループを作成する必要があります。このセクションでは、2 つのセキュリティグループの作成方法について説明します。
ブラックリストとしてのセキュリティグループ 1
指定された IP アドレスからのアクセスを拒否するルールを追加します。この例では、ECS03 のパブリック IP アドレス 47.xx.xx.55 からのアクセスを拒否するルールを作成します。デフォルトのセキュリティグループルールを維持できます。次の表に、ルールの設定を示します。
アクション
優先度
プロトコル
ポート範囲
承認オブジェクト
拒否
1
すべて
宛先: -1/-1ソース: 47.xx.xx.55ホワイトリストとしてのセキュリティグループ 2
特定の IP アドレスからのアクセスを許可するルールと、それ以外のアクセスを拒否するルールを追加します。この例では、ECS03 のパブリック IP アドレス 47.xx.xx.55 からのアクセスを許可するルールと、拒否ルールを作成します。次の表に、ルールの設定を示します。
アクション
優先度
プロトコル
ポート範囲
承認オブジェクト
許可
1
すべて
宛先: -1/-1ソース: 47.xx.xx.55拒否
100
すべて
宛先: -1/-1ソース: 0.0.0.0/0
ECS コンソールにログインします。
左側のナビゲーションペインで、を選択します。
上部メニューで、セキュリティグループを作成するリージョンを選択します。この例では、[中国 (杭州)] を選択します。
セキュリティグループ ページで、セキュリティグループの作成 をクリックします。
セキュリティグループの作成 ページで、基本情報 セクションのパラメーターを設定します。
以下のパラメーターを設定します。他のパラメーターの詳細については、「セキュリティグループの作成」をご参照ください。
[ネットワーク]:この例では、VPC01 を選択します。セキュリティグループは、NLB インスタンスと同じ VPC に存在する必要があります。
[タイプ]:この例では、[基本セキュリティグループ]を選択します。
セキュリティグループの作成 ページで、アクセスルール セクションのパラメーターを設定します。
インバウンド タブで、ルールを追加 をクリックして、セキュリティグループ 1 と セキュリティグループ 2 のルールの設定に基づいてルールを追加します。
セキュリティグループの作成 をクリックします。
ステップ 4:NLB インスタンスをセキュリティグループに追加し、結果を検証する
ブラックリストとしてセキュリティグループ 1 を使用する
ステップ 3 で作成したセキュリティグループ 1 に NLB インスタンスを追加し、セキュリティグループ 1 のルールが NLB インスタンスで有効になるか確認します。
- NLBコンソールにログインします。
上部メニューで、NLB インスタンスがデプロイされているリージョンを選択します。この例では、[中国 (杭州)] を選択します。
左側のナビゲーションペインで、[NLB] > インスタンス を選択します。 表示されたページで、ステップ 2: NLB インスタンスを作成し、リスナーを設定するで作成した NLB インスタンスを見つけ、インスタンス ID をクリックします。 インスタンス詳細ページで、セキュリティグループ タブをクリックします。
セキュリティグループ タブで、セキュリティグループの追加 をクリックします。セキュリティグループに NLB インスタンスを追加する ダイアログボックスで、「ステップ 3」で作成したセキュリティグループを選択し、OK をクリックします。
左側のパネルで、管理したいセキュリティグループの ID をクリックします。インバウンドポリシー または アウトバウンドポリシー タブをクリックして、セキュリティグループのルールを表示できます。
次の表に、このトピックに関連するパラメーターを示します。
アクション
優先度
プロトコル
ポート範囲
承認オブジェクト
拒否
1
すべて
宛先: -1/-1ソース: 47.xx.xx.55セキュリティグループ内の NLB インスタンスへのアクセスが拒否されるかどうかをテストします。コマンド
curl -s http://whatismyip.akamai.comを使用して、リクエストを送信するクライアントのパブリック IP アドレスを照会できます。ECS03 にログオンします。 次のコマンドを実行して、ECS03 が NLB インスタンスにアクセスできるか確認します:
telnet Domain name 80。エコー応答パケットを受信しなかった場合は、ECS03 から NLB インスタンスにアクセスできないことを意味します。
[root@izbp1esczkr2jlzx6 ~]# curl -s http://whatismyip.akamai.com/ 47.xxx.55 [root@izbp1esczkr2jlzx6 ~]# telnet xxx.xxx.com 80 Trying 47.xxx.189... telnet: connect to address 47.xxx.189: Connection timed outECS04 にログオンします。次のコマンドを実行して、ECS04 が NLB インスタンスにアクセスできるかどうかをテストします:
telnet ドメイン名 80。エコー応答パケットを受信した場合は、ECS04 から NLB インスタンスにアクセスできることを意味します。
[root@iZbp1esczkr2jlxxx ~]# curl -s http://whatismyip.akamai.com/ 101.xxx.251[root@iZbp1escxxx jlxxx ~]# telnet xxx.com 80 Trying 47.xxx.164... Connected to xxx.xxx.xxx.xxx.com.
この結果は、NLB インスタンスが セキュリティグループ 1 に追加された後、拒否ルールで指定された IP アドレスからは NLB インスタンスにアクセスできなくなることを示しています。拒否ルールで指定されていない IP アドレスからは、NLB インスタンスにアクセスできます。
ホワイトリストとしてセキュリティグループ 2 を使用する
ステップ 3 で作成したセキュリティグループ 2 に NLB インスタンスを追加し、セキュリティグループ 2 のルールが NLB インスタンスで有効になるか確認します。
- NLBコンソールにログインします。
上部メニューで、NLB インスタンスがデプロイされているリージョンを選択します。この例では、[中国 (杭州)] を選択します。
左側のナビゲーションペインで、[NLB] > インスタンス を選択します。表示されたページで、ステップ 2: NLB インスタンスを作成し、リスナーを設定するで作成した NLB インスタンスを探し、インスタンス ID をクリックします。インスタンス詳細ページで、セキュリティグループ タブをクリックします。
セキュリティグループ タブで、セキュリティグループの追加 をクリックします。セキュリティグループに NLB インスタンスを追加する ダイアログボックスで、「ステップ 3」で作成したセキュリティグループ 2 を選択し、OK をクリックします。
左側のパネルで、管理したいセキュリティグループの ID をクリックします。インバウンドポリシー または アウトバウンドポリシー タブをクリックして、セキュリティグループのルールを表示できます。
アクション
優先度
プロトコル
ポート範囲
承認オブジェクト
許可
1
すべて
宛先: -1/-1ソース: 47.xx.xx.55拒否
100
すべて
宛先: -1/-1ソース: 0.0.0.0/0セキュリティグループ内の NLB インスタンスへのアクセスが拒否されるかどうかをテストします。コマンド
curl -s http://whatismyip.akamai.comを使用して、リクエストを送信するクライアントのパブリック IP アドレスを照会できます。ECS03 にログオンします。次のコマンドを実行して、ECS03 が NLB インスタンスにアクセスできるかどうかをテストします:
telnet Domain name 80。エコー応答パケットを受信した場合は、ECS03 から NLB インスタンスにアクセスできることを意味します。
[root@izbp1esczkr2jlz ~]# curl -s http://whatismyip.akamai.com/ 47.xxx.55 [root@izbp1esczkr2jlz ~]# telnet xxx.com 80 Trying 47.xxx.164... Connected to xxx.com.ECS04 にログオンします。NLB インスタンスにアクセスできるかテストするために、コマンド
telnet ドメイン名 80を実行します。エコー応答パケットを受信しなかった場合は、ECS04 から NLB インスタンスにアクセスできないことを意味します。
[ @iZbp1esczkzr2jlz ~]# curl -s http://whatismyip.akamai.com/ 101.xxx.251[ @iZbp1esczkzr2 ~]# telnet xxx.xxx.com 80 Trying 47.xxx.164... telnet: connect to address 47.xxx.164: Connection timed out
この結果は、NLB インスタンスが セキュリティグループ 2 に追加された後、セキュリティグループ 2 の許可ルールで指定された IP アドレスのみが NLB インスタンスにアクセスできることを示しています。
関連ドキュメント
NLB インスタンスをセキュリティグループに追加したり、セキュリティグループから削除したりする方法の詳細については、「NLB インスタンスをセキュリティグループに追加する」をご参照ください。
リスナーまたはポートに基づいてきめ細かなアクセス制御を有効にする方法の詳細については、「NLB インスタンスのセキュリティグループを設定する」をご参照ください。
セキュリティグループの詳細については、「セキュリティグループ」をご参照ください。