インバウンドクラウドトラフィックのセキュリティを向上させるために、Application Load Balancer (ALB) インスタンスにセキュリティグループを設定して、プロトコル、ポート、または IP アドレスに基づいてアクセスを制御できます。セキュリティグループは、アクセス制御リスト (ACL) よりも包括的な ALB のアクセス制御を提供します。プロトコルとポートに基づくアクセス制御のサポートに加えて、セキュリティグループは IPv6 アドレスのアクセス制御ポリシーもサポートします。
シナリオ
次の表は、3 つの異なるシナリオでセキュリティグループを設定することにより、ALB インスタンスのポートでアクセス制御を有効にする方法を示しています。これらのシナリオでは、ポート 80 の HTTP リスナーとポート 81 の HTTP リスナーが ALB インスタンスに設定されています。
シナリオ | セキュリティグループルール | 期待される結果 | リファレンス |
ALB インスタンスがセキュリティグループに追加される前 | ALB インスタンスのリスナーポートは、デフォルトですべてのリクエストを許可します。 |
| |
ALB インスタンスをセキュリティグループに追加する | HTTP ポート 81 へのアクセスを拒否します。 説明 このセクションでは、この Topic に関連するセキュリティグループルールのみを説明します。その他のデフォルトルールについては説明しません。 |
| |
ALB インスタンスが追加されているセキュリティグループを変更する |
説明 このセクションでは、この Topic に関連するセキュリティグループルールのみを説明します。その他のデフォルトルールについては説明しません。 |
|
前提条件
VPC1 という名前の Virtual Private Cloud (VPC) が作成されます。詳細については、「VPC の作成と管理」をご参照ください。
ECS01 と ECS02 という名前の 2 つの Elastic Compute Service (ECS) インスタンスが VPC1 に作成されます。ECS01 と ECS02 は、ALB インスタンスのバックエンドサーバーとして機能します。ECS01 と ECS02 には異なるアプリケーションがデプロイされます。
ECS インスタンスの作成方法の詳細については、「ウィザードを使用したインスタンスの作成」をご参照ください。
IPv6 アドレスに対する ALB セキュリティグループのアクセス制御機能をテストする場合は、ECS01 と ECS02 が IPv6 通信 をサポートしていることを確認してください。
次のサンプルコードは、ECS01 と ECS02 にテストアプリケーションをデプロイする方法を示しています。
カスタムドメイン名が登録され、ドメイン名の ICP 登録が取得されます。詳細については、「Alibaba Cloud でのドメイン名の登録」および「ICP 登録」をご参照ください。
手順
ステップ 1: サーバーグループの作成
ALB コンソールにログインします。
トップナビゲーションバーで、サーバーグループが存在するリージョンを選択します。この例では、[中国 (杭州)] が選択されています。
左側のナビゲーションウィンドウで、 を選択します。
[サーバーグループ] ページで、[サーバーグループの作成] をクリックします。
[サーバーグループの作成] ダイアログボックスで、次のパラメーターを設定し、[作成] をクリックします。
このセクションでは、この Topic に関連するパラメーターのみを説明します。その他のパラメーターにはデフォルト値を使用できます。詳細については、「サーバーグループの作成と管理」をご参照ください。
構成
説明
サーバーグループタイプ
サーバーグループタイプを選択します。この例では、[サーバー] が選択されています。
サーバーグループ名
サーバーグループの名前を入力します。
VPC
VPC ドロップダウンリストから VPC を選択します。この例では、VPC1 が選択されています。
バックエンドプロトコル
バックエンドプロトコルを選択します。この例では、[HTTP] が選択されています。
スケジューリングアルゴリズム
スケジューリングアルゴリズムを選択します。この例では、[加重ラウンドロビン] が選択されています。
[サーバーグループが作成されました] ダイアログボックスで、[バックエンドサーバーの追加] をクリックします。
[バックエンドサーバー] タブで、[バックエンドサーバーの追加] をクリックします。
[バックエンドサーバーの追加] パネルで、作成した ECS01 および ECS02 インスタンスを選択し、[次へ] をクリックします。
追加されたサーバーのポートと重みを設定し、[OK] をクリックします。
ステップ 2: ALB インスタンスを作成し、リスナーを設定する
ALB コンソールにログインします。
[インスタンス] ページで、[Application Load Balancer の作成] をクリックします。
購入ページで、次の構成を指定します。
このセクションでは、この Topic に関連するパラメーターのみを説明します。その他のパラメーターにはデフォルト値を使用できます。パラメーターの詳細については、「ALB インスタンスの作成と管理」をご参照ください。
リージョン: この例では、[中国 (杭州)] が選択されています。
ネットワークタイプ: この例では、[インターネット] が選択されています。
VPC: この例では、作成した VPC1 が選択されています。
プロトコルバージョン: デフォルト値は [IPv4] です。クライアントが IPv4 と IPv6 の両方のアドレスを使用して ALB インスタンスにアクセスできるようにするには、[デュアルスタック] を選択します。
[今すぐ購入] をクリックし、プロンプトに従って支払いを完了します。
[インスタンス] ページに戻り、作成した ALB インスタンスを見つけて、インスタンス ID をクリックします。
[リスナー] タブをクリックし、[クイック作成リスナー] をクリックします。
[クイック作成リスナー] ダイアログボックスで、次のパラメーターを設定して HTTP 80 リスナーを作成し、[OK] をクリックします。
構成
説明
リスナープロトコル
リスナープロトコルを選択します。この例では、[HTTP] が選択されています。
リスナーポート
リスナーポートを入力します。この例では、80 が入力されています。
バックエンドサーバーグループ
[サーバー] で宛先サーバーグループを選択します。この例では、作成されたサーバーグループが選択されています。
[リスナー] タブで、[クイック作成リスナー] をクリックします。
[クイック作成リスナー] ダイアログボックスで、次のパラメーターを設定して HTTP 81 リスナーを作成し、[OK] をクリックします。
構成
説明
リスナープロトコル
リスナープロトコルを選択します。この例では、[HTTP] が選択されています。
リスナーポート
リスナーポートを入力します。この例では、81 が入力されています。
バックエンドサーバーグループ
[サーバー] で宛先サーバーグループを選択します。この例では、作成されたサーバーグループが選択されています。
ステップ 3: ドメイン名前解決の設定
実際のシナリオでは、カスタムドメイン名を使用する必要があります。これを行うには、CNAME レコードを作成して、カスタムドメイン名を ALB インスタンスのドメイン名にマッピングします。
左側のナビゲーションウィンドウで、 を選択します。
[インスタンス] ページで、ALB インスタンスの DNS 名をコピーします。
次の手順を実行して CNAME レコードを追加します。
説明ドメイン名が Alibaba Cloud に登録されていない場合は、DNS レコードを追加する前に、まず Alibaba Cloud DNS コンソールにドメイン名を追加する必要があります。詳細については、「ドメイン名の管理」をご参照ください。ドメイン名が Alibaba Cloud に登録されている場合は、次の手順を実行できます。
Alibaba Cloud DNS コンソールにログインします。
[権威ドメイン名] ページで、ターゲットドメイン名を見つけ、[アクション] 列の [DNS 設定] をクリックします。
[DNS 設定] ページで、[レコードの追加] をクリックします。
[レコードの追加] パネルで、次のパラメーターを設定して CNAME レコードを追加し、[OK] をクリックします。
構成
説明
レコードタイプ
ドロップダウンリストから [CNAME] を選択します。
ホスト
ドメイン名のプレフィックスです。この Topic では、@ と入力します。
説明ルートドメインをマッピングするには、ホストを
@に設定します。リクエストソース
デフォルトを選択します。
レコード値
コピーした ALB インスタンスの DNS 名である CNAME アドレスを入力します。
TTL
Time to Live (TTL) は、DNS レコードが DNS サーバーにキャッシュされる期間を指定します。この Topic では、デフォルト値が使用されます。
ステップ 4: セキュリティグループの作成
ALB インスタンスをセキュリティグループに追加する前に、ECS コンソールに移動してセキュリティグループを作成する必要があります。
ECS コンソールにログインします。
左側のナビゲーションウィンドウで、 を選択します。
トップナビゲーションバーで、セキュリティグループが存在するリージョンを選択します。この例では、[中国 (杭州)] が選択されています。
[セキュリティグループ] ページで、[セキュリティグループの作成] をクリックします。
[セキュリティグループの作成] ページで、セキュリティグループの [基本情報] パラメーターを設定します。
このセクションでは、この Topic に関連するパラメーターのみを説明します。他のパラメーターの設定方法については、「セキュリティグループの作成」をご参照ください。
ネットワーク: この例では、作成した VPC が選択されています。
セキュリティグループタイプ: この例では、[基本セキュリティグループ] が選択されています。
新しいセキュリティグループの [アクセスルール] パラメーターを設定します。
[インバウンド] タブで、[ルールの追加] を 2 回クリックします。
次の情報に基づいてルールを追加し、[セキュリティグループの作成] をクリックします。
構成
ルール 1: すべての IPv4 および IPv6 アドレスからのポート 81 へのアクセスを拒否
(オプション) ルール 2: すべての IPv6 アドレスからのポート 80 へのアクセスを許可
承認ポリシー
[拒否] を選択します。
[許可] を選択します。
優先度
デフォルトの優先度 1 を使用します。
プロトコルタイプ
プロトコルタイプに [カスタム TCP] を選択します。
説明QUIC リスナーのセキュリティグループルールを追加するには、[カスタム UDP] を選択します。
ポート範囲
ポート番号 81 を入力します。
ポート番号 HTTP(80) を選択します。
承認オブジェクト
すべての IPv4 (0.0.0.0/0)とすべての IPv6 (::/0)を選択します。すべての IPv6 (::/0)を選択します。説明
セキュリティグループルールの説明を入力します。
ステップ 5: ALB インスタンスをセキュリティグループに追加する前に結果を検証する
クライアントと ECS01 および ECS02 間の接続性をテストします。
この例では、インターネットにアクセスできるクライアントが使用されます。IPv6 アドレスに対する ALB セキュリティグループのアクセス制御機能をテストする場合は、クライアントが パブリック IPv6 通信 をサポートしていることを確認してください。
コマンドラインを開き、
curl -4 http://<カスタムドメイン名>:80コマンドを実行します。出力は、IPv4 クライアントが ALB インスタンスの HTTP ポート 80 にアクセスできることを示します。
curl -4 http://<カスタムドメイン名>:81コマンドを実行します。出力は、IPv4 クライアントが ALB インスタンスの HTTP ポート 81 にアクセスできることを示します。
(オプション)
curl -6 http://<カスタムドメイン名>:80コマンドを実行します。出力は、IPv6 クライアントが ALB インスタンスの HTTP ポート 80 にアクセスできることを示します。
(オプション)
curl -6 http://<カスタムドメイン名>:81コマンドを実行します。出力は、IPv6 クライアントが ALB インスタンスの HTTP ポート 81 にアクセスできることを示します。
ステップ 6: ALB インスタンスをセキュリティグループに追加して結果を検証する
ALB インスタンスをセキュリティグループに追加し、セキュリティグループルールが ALB インスタンスのポートで有効になることを確認します。
ALB コンソールにログインします。
ALB の [インスタンス] ページで、宛先の ALB インスタンスを見つけ、インスタンス ID をクリックし、インスタンス詳細ページの [セキュリティグループ] タブをクリックします。
[セキュリティグループ] タブで、[セキュリティグループの追加] をクリックします。[ALB インスタンスをセキュリティグループに追加] ダイアログボックスで、ステップ 4: セキュリティグループの作成 で作成したセキュリティグループを選択し、[OK] をクリックします。
左側のリストボックスで、宛先セキュリティグループの ID をクリックします。[インバウンド] または [アウトバウンド] タブをクリックして、セキュリティグループルールを表示できます。
このセクションでは、この Topic に関連するインバウンドルールのみを説明します。ALB インスタンスは、次のセキュリティグループルールを使用します。
承認ポリシー
優先度
プロトコルタイプ
ポート範囲
承認オブジェクト
許可
1
カスタム TCP
宛先: 80/80ソース: すべての IPv4 (0.0.0.0/0)許可
1
カスタム TCP
宛先: 80/80ソース: すべての IPv6 (::/0)拒否
1
カスタム TCP
宛先: 81/81ソース: すべての IPv4 (0.0.0.0/0)拒否
1
カスタム TCP
宛先: 81/81ソース: すべての IPv6 (::/0)ALB インスタンスをセキュリティグループに追加した後、アクセス結果をテストします。
クライアントのコマンドラインで、
curl -4 http://<カスタムドメイン名>:80コマンドを実行します。出力は、IPv4 クライアントが ALB インスタンスの HTTP ポート 80 にアクセスできることを示します。
(オプション)
curl -6 http://<カスタムドメイン名>:80コマンドを実行します。出力は、IPv6 クライアントが ALB インスタンスの HTTP ポート 80 にアクセスできることを示します。
curl -4 http://<カスタムドメイン名>:81コマンドを実行します。出力は、IPv4 クライアントが HTTP ポート 81 にアクセスできないことを示します。この結果は、ポート 81 のセキュリティグループのアクセス制御ルールが有効になったことを示します。
(オプション)
curl -6 http://<カスタムドメイン名>:81コマンドを実行します。出力は、IPv6 クライアントが HTTP ポート 81 にアクセスできないことを示します。この結果は、ポート 81 のセキュリティグループのアクセス制御ルールが有効になったことを示します。
ステップ 7: セキュリティグループを変更して結果を検証する
セキュリティグループルールを変更し、変更されたセキュリティグループルールが ALB インスタンスのポートで有効になることを確認します。
ALB の [インスタンス] ページに戻り、宛先の ALB インスタンスを見つけます。インスタンス ID をクリックします。[インスタンス詳細] タブで、[セキュリティグループ] タブをクリックします。
[基本情報] セクションで、セキュリティグループ ID をクリックするか、[セキュリティグループ] タブの右上隅にある [ECS コンソールに移動して編集] をクリックして [セキュリティグループルール] ページに移動し、セキュリティグループルールを変更します。
[セキュリティグループルール] ページで、TCP ポート 80 へのアクセスを許可するルールを見つけ、[アクション] 列の [編集] をクリックし、[承認ポリシー] を [拒否] に変更して、[保存] をクリックします。
このセクションでは、この Topic に関連するセキュリティグループルールのみを説明します。変更されたセキュリティグループルールは次のとおりです。
承認ポリシー
優先度
プロトコルタイプ
ポート範囲
承認オブジェクト
拒否
1
カスタム TCP
宛先: 80/80ソース: すべての IPv4 (0.0.0.0/0)拒否
1
カスタム TCP
宛先: 80/80ソース: すべての IPv6 (::/0)拒否
1
カスタム TCP
宛先: 81/81ソース: すべての IPv4 (0.0.0.0/0)拒否
1
カスタム TCP
宛先: 81/81ソース: すべての IPv6 (::/0)ALB インスタンスのセキュリティグループルールを変更した後、アクセス結果をテストします。
クライアントのコマンドラインで、
curl -4 http://<カスタムドメイン名>:80コマンドを実行します。出力は、IPv4 クライアントが HTTP ポート 80 にアクセスできないことを示します。この結果は、ポート 80 のセキュリティグループのアクセス制御ルールが有効になったことを示します。
(オプション)
curl -6 http://<カスタムドメイン名>:80コマンドを実行します。出力は、IPv6 クライアントが HTTP ポート 80 にアクセスできないことを示します。この結果は、ポート 80 のセキュリティグループのアクセス制御ルールが有効になったことを示します。
curl -4 http://<カスタムドメイン名>:81コマンドを実行します。出力は、IPv4 クライアントが HTTP ポート 81 にアクセスできないことを示します。この結果は、ポート 81 のセキュリティグループのアクセス制御ルールが有効になったことを示します。
(オプション)
curl -6 http://<カスタムドメイン名>:81コマンドを実行します。出力は、IPv6 クライアントが HTTP ポート 81 にアクセスできないことを示します。この結果は、ポート 81 のセキュリティグループのアクセス制御ルールが有効になったことを示します。
リファレンス
コンソール操作ドキュメント
ALB インスタンスをセキュリティグループに追加したり、セキュリティグループからデタッチしたりする方法の詳細については、「ALB インスタンスをセキュリティグループに追加する」をご参照ください。
特定の IP アドレスから ALB インスタンスへのアクセスを拒否または許可するには、「セキュリティグループを使用して ALB インスタンスのアクセス制御用のブラックリストとホワイトリストを実装する」をご参照ください。
基本セキュリティグループと高度セキュリティグループの詳細については、「基本セキュリティグループと高度セキュリティグループ」をご参照ください。
API ドキュメント
LoadBalancerJoinSecurityGroup: セキュリティグループを Application Load Balancer インスタンスに関連付けます。
LoadBalancerLeaveSecurityGroup: セキュリティグループを Application Load Balancer インスタンスからデタッチします。