リクエストからのアクセスを規制するために、プロトコル、ポート、およびIPアドレスに基づいてアクセス制御を実装するようにセキュリティグループを構成できます。 Network Load Balancer (NLB) は、Classic Load Balancer (CLB) で使用されるアクセス制御リスト (ACL) の代わりに、プロトコルとポートに基づいたきめ細かいアクセス制御を使用します。 このトピックでは、NLBインスタンスのセキュリティグループを設定して、リスナーとポートに基づくアクセス制御を実装する方法について説明します。
シナリオ
NLBインスタンスがセキュリティグループに追加される前に、NLBインスタンスのリスナーポートはデフォルトですべてのリクエストを受け入れます。
NLBインスタンスがDenyルールを含まないセキュリティグループに追加されると、NLBインスタンスのリスナーポートはデフォルトですべてのリクエストを受け入れます。 特定のIPアドレスからNLBインスタンスへのリクエストのみを許可する場合は、拒否ルールも作成する必要があります。
NLBインスタンスにアクセス制御要件があり、NLBインスタンスへのインバウンドトラフィックを制御する場合は、NLBインスタンスをセキュリティグループに追加し、ビジネス要件に基づいてセキュリティグループルールを設定できます。
NLBインスタンスのアウトバウンドトラフィックは、ユーザーリクエストに返される応答を参照します。 サービスが影響を受けないようにするため、NLBセキュリティグループはアウトバウンドトラフィックを制限しません。 セキュリティグループのアウトバウンドルールを設定する必要はありません。
次の表に、さまざまなシナリオでNLBのセキュリティグループを設定する方法を示します。 次の例では、アクセス制御はプロトコルとポートに基づいています。 ポート80でリッスンするTCPリスナーと、ポート81でリッスンするTCPリスナーが使用されます。
いいえ | セキュリティグループルール | 期待される結果 | 関連ドキュメント |
シナリオ1: NLBインスタンスがセキュリティグループに追加されていません。 | NLBのリスナーポートは、デフォルトですべてのリクエストを受け入れます。 | この例では、ポート80でリッスンするTCPリスナーと、ポート81でリッスンするTCPリスナーがNLBインスタンス用に作成されます。
| |
シナリオ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にアプリケーションをデプロイする方法を示しています。
手順
手順1: サーバーグループの作成
NLBコンソールにログインします。
上部のナビゲーションバーで、サーバーグループがデプロイされているリージョンを選択します。 この例では、中国 (杭州) が選択されています。
左側のナビゲーションウィンドウで、を選択します。
サーバーグループページで、サーバーグループの作成をクリックします。
サーバーグループの作成ダイアログボックスでパラメーターを設定し、作成をクリックします。
次の表に、このトピックに関連するパラメーターを示します。 他のパラメーターにはデフォルト値を使用できます。 詳細については、「Create a server group」をご参照ください。
パラメーター
説明
サーバーグループタイプ
サーバグループの種類を指定します。 この例では、[サーバータイプ] が選択されています。
サーバーグループ名
サーバーグループの名前。 この例では、RS01が使用されます。
[VPC]
ドロップダウンリストからVPCを選択します。 この例では、VPC1が選択されています。
バックエンドサーバープロトコル
バックエンドプロトコルを選択します。 この例では、TCPが選択されています。
スケジューリングアルゴリズム
スケジューリングアルゴリズムを選択します。 この例では、[加重ラウンドロビン] が選択されています。
サーバーグループが作成されました。 ダイアログボックスで、[バックエンドサーバーの追加] をクリックします。
バックエンドサーバータブで、バックエンドサーバーの追加をクリックします。
バックエンドサーバーの追加パネルで、ECS01およびECS02を選択して次へをクリックします。
追加したサーバーのポートと重みを設定し、OKをクリックします。
手順2: NLBインスタンスの作成とリスナーの設定
NLBコンソールにログインします。
上部のナビゲーションバーで、NLBインスタンスがデプロイされているリージョンを選択します。 この例では、中国 (杭州) が選択されています。
インスタンスページで、NLBの作成をクリックします。
NLB (従量課金)ページで、次のパラメーターを設定します。
次のセクションでは、このトピックに関連するパラメーターのみについて説明します。 その他のパラメーターの詳細については、「NLBインスタンスの作成」をご参照ください。
リージョン: この例では、中国 (杭州) が選択されています。
ネットワークタイプ: この例では、イントラネットが選択されています。
VPC: この例では、VPC1が選択されています。
[今すぐ購入] をクリックし、支払いを完了します。
インスタンスページに戻り、管理する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をインストールします。を実行します。Run the
telnet nlb-********* 。****** .nlb.aliyuncs.com 80
コマンドのポート80 (TCPポート) にクライアントがアクセスできるかどうかをテストします。NLBインスタンスを作成します。次の応答パケットは、ポートがアクセス可能であることを示す。
Trying *.*.*.*... Connected to nlb-*********.******.nlb.aliyuncs.com. Escape character is '^]'.
http:// DNSdomain name:80
など、ブラウザからドメイン名とポートにアクセスします。 次の図のレスポンスは、NLBインスタンスがバックエンドサーバーにリクエストを転送できることを示しています。を実行します。Run the
telnet nlb-********* 。****** .nlb.aliyuncs.com 81
コマンドのポート81 (TCPポート) にクライアントがアクセスできるかどうかをテストします。NLBインスタンスを作成します。Trying *.*.*.*... Connected to nlb-*********.******.nlb.aliyuncs.com. Escape character is '^]'.
http:// domain name:81
など、ブラウザからドメイン名とポートにアクセスします。 次の図のレスポンスは、NLBインスタンスがバックエンドサーバーにリクエストを転送できることを示しています。テストは前にそれを示しますNLBインスタンスがセキュリティグループに追加されると、クライアントはNLBインスタンスのポート80とポート81にアクセスできます。
手順3: セキュリティグループの作成
NLBインスタンスをセキュリティグループに追加するには、まずECSコンソールでセキュリティグループを作成する必要があります。
ECSコンソール にログインします。
左側のナビゲーションウィンドウで、を選択します。
上部のナビゲーションバーで、セキュリティグループを作成するリージョンを選択します。 この例では、中国 (杭州) が選択されています。
セキュリティグループページで、セキュリティグループの作成をクリックします。
セキュリティグループの作成ページでパラメーターを設定し、基本情報セクションにアクセスします。
次のセクションでは、このトピックに関連するパラメーターのみについて説明します。 その他のパラメーターの詳細については、「セキュリティグループの作成」をご参照ください。
ネットワーク: この例では、VPC1が選択されています。
セキュリティグループタイプ: この例では、基本的なセキュリティグループが選択されています。
セキュリティグループの作成ページで、アクセスルールセクションでパラメーターを設定します。
インバウンドタブでルールの追加をクリックします。
セキュリティグループルールを作成します。
パラメーター
説明
Action
[拒否] を選択します。
優先度
デフォルト値の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クライアントにログオンします。
を実行します。Run the
telnet nlb-******** 。****** .nlb.aliyuncs.com 80
コマンドのポート80 (TCPポート) にクライアントがアクセスできるかどうかをテストします。NLBインスタンスを作成します。次の応答パケットは、ポートがアクセス可能であることを示す。
Trying *.*.*.*... Connected to nlb-*********.******.nlb.aliyuncs.com. Escape character is '^]'.
http:// DNSdomain name:80
など、ブラウザからドメイン名とポートにアクセスします。 次の図のレスポンスは、NLBインスタンスがバックエンドサーバーにリクエストを転送できることを示しています。を実行します。Run the
telnet nlb-********* 。***** .nlb.aliyuncs.com 81
コマンドのポート81 (TCPポート) にクライアントがアクセスできるかどうかをテストします。NLBインスタンスを作成します。次の応答パケットは、クライアントがNLBインスタンスのポート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インスタンスのポート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クライアントにログオンします。
を実行します。Run the
telnet nlb-********* 。****** .nlb.aliyuncs.com 80
コマンドのポート80 (TCPポート) にクライアントがアクセスできるかどうかをテストします。NLBインスタンスを作成します。次の応答パケットは、クライアントがNLBインスタンスのポート80にアクセスできないことを示します。 結果は、新しいセキュリティグループルールがNLBインスタンスで有効になることを示しています。
Trying *.*.*.*... telnet: connect to address *.*.*.*: Connection timed out Trying *.*.*.*... telnet: connect to address *.*.*.*: Connection timed out
http:// domain name:80
など、ブラウザからドメイン名とポートにアクセスします。 Webページにアクセスできません。 クライアントはNLBインスタンスのポート80にアクセスできません。 結果は、NLBインスタンスに設定された新しいセキュリティグループルールがNLBインスタンスで有効になることを示しています。を実行します。Run the
telnet nlb-********* 。****** .nlb.aliyuncs.com 81
コマンドのポート81 (TCPポート) にクライアントがアクセスできるかどうかをテストします。NLBインスタンスを作成します。次の応答パケットは、クライアントがNLBインスタンスのポート81にアクセスできないことを示します。 結果は、新しいセキュリティグループルールがNLBインスタンスで有効になることを示しています。
Trying *.*.*.*... telnet: connect to address *.*.*.*: Connection timed out Trying *.*.*.*... telnet: connect to address *.*.*.*: Connection timed out
http:// domain name:81
など、ブラウザからドメイン名とポートにアクセスします。 Webページにアクセスできません。 クライアントはNLBインスタンスのポート81にアクセスできません。 結果は、NLBインスタンスに設定された新しいセキュリティグループルールがNLBインスタンスで有効になることを示しています。
関連ドキュメント
セキュリティグループにNLBインスタンスを追加および削除する方法の詳細については、「セキュリティグループにNLBインスタンスを追加する」をご参照ください。
特定のIPアドレスへのアクセスを許可または拒否する方法の詳細については、「Use security groups as blacklists or whitelists」をご参照ください。
セキュリティグループの詳細については、「セキュリティグループ」をご参照ください。
LoadBalancerJoinSecurityGroup: セキュリティグループにNLBインスタンスを追加します。
LoadBalancerLeaveSecurityGroup: セキュリティグループからNLBインスタンスを削除します。