Application Load Balancer (ALB) インスタンスへのアクセスを制御するには、セキュリティグループを設定します。アクセス制御リスト (ACL) とは異なり、ALB のセキュリティグループはプロトコルとポートによるアクセス制御をサポートし、IPv6 アドレスに対するアクセス制御ポリシーを提供します。
利用シーン
-
ALB インスタンスがセキュリティグループに関連付けられていない場合、そのリスナーポートはデフォルトですべてのインバウンドリクエストを許可します。
-
ALB インスタンスがセキュリティグループに関連付けられているが、拒否ポリシーが設定されていない場合、ALB のリスナーポートはデフォルトですべてのインバウンドリクエストを許可します。特定の IP アドレスからのアクセスのみを許可するには、キャッチオールルールとして拒否ポリシーを追加します。
-
特定の IP アドレスからの ALB インスタンスへのアクセスを拒否または許可する方法については、「セキュリティグループをブラックリストおよびホワイトリストとして使用する」をご参照ください。
-
ALB インスタンスに対してプロトコルまたはポートベースのアクセス制御を実装する方法については、「セキュリティグループによるポートレベルのアクセス制御の実装」をご参照ください。
-
ご利用のALB インスタンスでアクセス制御が必要であり、ALB インスタンスのインバウンドトラフィックを制御したい場合は、ALB インスタンスにセキュリティグループを追加し、ビジネス要件に基づいて対応するセキュリティグループルールを設定できます。
-
ロードバランサーからのアウトバウンドトラフィックは、クライアントリクエストへの応答で構成されます。通常のビジネス運用を確保するため、ALB インスタンスのセキュリティグループはアウトバウンドトラフィックを制限しません。セキュリティグループにアウトバウンドルールを設定する必要はありません。
-
ALB インスタンスが作成されると、システムはインスタンスの VPC にマネージドセキュリティグループを自動的に生成します。このセキュリティグループは ALB インスタンスによって管理され、ユーザーには表示権限しかありません。ALB のマネージドセキュリティグループには、次のセキュリティグループルールが含まれています:
-
優先度 1 のルール:デフォルトで、バックエンドサーバーとの通信に使用されるローカル IP アドレスからのトラフィックを許可します。
セキュリティグループルールを追加する際、ALB インスタンスのローカル IP アドレスに対して優先度 1 の拒否ポリシーを追加しないでください。これはマネージドセキュリティグループのポリシーと競合し、ALB インスタンスとバックエンドサーバー間の通信を妨害します。ローカル IP アドレスは、Application Load Balancer (ALB) コンソールのインスタンス詳細ページで確認できます。
-
優先度 100 のルール:デフォルトで、すべての IP アドレスからのトラフィックを許可します。
基本またはエンタープライズセキュリティグループのデフォルトのアクセス制御ルール (非表示) には、他のすべてのトラフィックを拒否するルールが含まれています。ただし、マネージドセキュリティグループのデフォルトの許可ルールが優先されます。
-
ALB Extensible Edition インスタンスの場合、マネージドセキュリティグループには、
33.0.0.0/8および22.0.0.0/16の CIDR ブロックからのクライアントアクセスを拒否する、優先度 1 の追加ルールが 2 つ含まれています。
-
以下の 3 つのシナリオでは、セキュリティグループが関連付けられた ALB インスタンスのポートアクセスをどのように制御するかを説明します。これらの例では、ALB インスタンスはポート 80 とポート 81 にそれぞれ HTTP リスナーを持っています。
|
シナリオ |
セキュリティグループルール |
期待される結果 |
関連リンク |
|
ALB インスタンスがセキュリティグループに関連付けられていない。 |
ALB リスナーポートはデフォルトですべてのインバウンドリクエストを許可します。 |
|
|
|
ALB インスタンスがセキュリティグループに関連付けられている。 |
HTTP ポート 81 へのアクセスを拒否します。 説明
関連するセキュリティグループルールのみがリストされており、他のデフォルトルールは省略されています。 |
|
|
|
ALB インスタンスに関連付けられたセキュリティグループを変更する。 |
説明
関連するセキュリティグループルールのみがリストされており、他のデフォルトルールは省略されています。 |
|
制限事項
セキュリティグループまたはアクセス制御リスト (ACL) を使用して、ALB インスタンスのアップグレードのアクセス トラフィックを管理できます。古いALB インスタンスは ACL でのみアクセス制御をサポートします。セキュリティグループを使用する必要がある場合は、新しいインスタンスを作成するか、アカウントマネージャーに連絡して既存のインスタンスのアップグレードをリクエストしてください。
|
カテゴリ |
セキュリティグループタイプ |
説明 |
|
ALB がサポートするセキュリティグループ |
|
基本およびエンタープライズセキュリティグループの詳細については、「基本および高度セキュリティグループ」をご参照ください。 |
|
ALB がサポートしないセキュリティグループ |
マネージドセキュリティグループ |
マネージドセキュリティグループの詳細については、「マネージドセキュリティグループ」をご参照ください。 |
前提条件
-
VPC1 という名前の Virtual Private Cloud (VPC) を作成済みであること。詳細については、「VPC の作成と管理」をご参照ください。
-
VPC1 に 2 つの Elastic Compute Service (ECS) インスタンス (ECS01 と ECS02) を作成済みであること。これらのインスタンスは Application Load Balancer (ALB) インスタンスのバックエンドサーバーとして機能し、それぞれに異なるアプリケーションをデプロイ済みであること。
-
ECS インスタンスを作成するには、「カスタム起動タブを使用してインスタンスを作成する」をご参照ください。
セキュリティグループの IPv6 トラフィックに対するアクセス制御をテストするには、ECS01 と ECS02 がIPv6 通信をサポートしていることを確認してください。
-
次の例は、ECS01 と ECS02 にテストアプリケーションをデプロイする方法を示しています:
-
-
ドメイン名を登録し、必要な ICP 登録を完了済みであること。詳細については、「Alibaba Cloud ドメイン名の登録」および「ICP 登録」をご参照ください。
手順
ステップ 1:サーバーグループの作成
ALB コンソールにログインします。
-
上部のナビゲーションバーで、リージョンを選択します。このトピックでは、例として 中国 (杭州) を使用します。
-
左側のナビゲーションウィンドウで、 を選択します。
-
サーバーグループ ページで、サーバーグループの作成 をクリックします。
-
サーバーグループの作成 ダイアログボックスで、次のパラメーターを設定し、作成 をクリックします。
このセクションでは、主要なパラメーターのみを説明します。その他はデフォルト値のままにしてください。詳細については、「サーバーグループの作成と管理」をご参照ください。
パラメーター
説明
サーバーグループタイプ
サーバタイプ を選択します。
サーバーグループ名
サーバーグループ名を入力します。
VPC
VPC1 を選択します。
バックエンドプロトコル
[HTTP] を選択します。
スケジューリングアルゴリズム
重み付けラウンドロビンを選択します。
-
サーバーグループが作成されました ダイアログボックスで、バックエンドサーバーの追加 をクリックします。
-
バックエンドサーバー タブで、バックエンドサーバーの追加 をクリックします。
-
バックエンドサーバーの追加 パネルで、ECS01 と ECS02 インスタンスを選択し、次へ をクリックします。
-
バックエンドサーバーのポートと重みを設定し、OKをクリックします。
ステップ 2:ALB インスタンスとリスナーの作成
ALB コンソールにログインします。
-
インスタンス ページで、ALB の作成 をクリックします。
-
購入ページで、次のパラメーターを設定します。
このチュートリアルでは、関連するパラメーターのみを説明します。他のすべてのパラメーターはデフォルト値のままにしてください。パラメーターの詳細については、「ALB インスタンスの作成と管理」をご参照ください。
-
リージョン: China (Hangzhou) を選択します。
-
インスタンスのネットワークタイプ: パブリック を選択します。
-
VPC:作成した VPC1 を選択します。
-
IP バージョン: デフォルト値は IPv4 です。デュアルスタック を選択すると、クライアントは IPv4 アドレスと IPv6 アドレスの両方を使用してインスタンスにアクセスできます。
-
-
今すぐ購入をクリックし、画面の指示に従って購入を完了してください。
-
インスタンス ページに戻り、作成した ALB インスタンスを見つけ、その ID をクリックします。
-
リスナー タブをクリックし、リスナーのクイック作成 をクリックします。
-
リスナーのクイック作成 ダイアログボックスで、次のパラメーターを設定してポート 80 に HTTP リスナーを作成し、OK をクリックします。
パラメーター
説明
リスナープロトコルの選択
リスナーが使用するプロトコル。このチュートリアルでは、HTTP を選択します。
リスナーポート
リスナーが使用するポートです。このチュートリアルでは、80 を入力します。
サーバーグループ
作成した サーバタイプ を選択します。
-
リスナー タブで、再度 リスナーのクイック作成 をクリックします。
-
リスナーのクイック作成 ダイアログボックスで、次のパラメーターを設定してポート 81 に HTTP リスナーを作成し、OK をクリックします。
パラメーター
説明
リスナープロトコルの選択
リスナーで使用されるプロトコルです。このチュートリアルでは、[HTTP] を選択します。
リスナーポート
リスナーが使用するポートです。このチュートリアルでは、81 を入力します。
サーバーグループ
作成したサーバタイプを選択します。
ステップ 3:ドメイン名の名前解決の設定
本番環境では、CNAME レコードを作成して、カスタムドメイン名を ALB インスタンスのドメイン名にマッピングすることを推奨します。
左側のナビゲーションウィンドウで、 を選択します。
インスタンス ページで、作成された ALB インスタンスの DNS 名をコピーします。
次の手順に従って CNAME レコードを追加します。
説明ドメイン名が Alibaba Cloud 以外のプロバイダーによって登録されている場合は、DNS の名前解決を設定する前に、ドメイン名を Alibaba Cloud DNS コンソールに追加する必要があります。詳細については、「ドメイン名の管理」をご参照ください。ドメイン名が Alibaba Cloud に登録されている場合は、次の手順に進みます。
Alibaba Cloud DNS コンソールにログインします。
インターネットの権威ある DNS 解決 ページで、対象のドメイン名を見つけ、操作 列の 解決設定 をクリックします。
解決設定 ページで、Add Record をクリックします。
Add Record パネルで、次のパラメーターを設定して CNAME レコードを構成し、OK をクリックします。
パラメーター
説明
レコードタイプ
ドロップダウンリストから [CNAME] を選択します。
ホストレコード
ドメイン名のプレフィックスです。このチュートリアルでは @ を使用します。
説明ルートドメインを使用するには、ホスト名を
@に設定します。Query Source
[デフォルト] を選択します。
レコード値
コピーした ALB インスタンスの DNS 名を入力します。
TTL
Time to Live (TTL) は、DNS レコードが DNS サーバーにキャッシュされる期間です。デフォルト値を使用します。
ステップ 4:セキュリティグループの作成
ALB インスタンスをセキュリティグループに追加するには、まず ECS コンソールでセキュリティグループを作成する必要があります。
-
ECS コンソールにログインします。
-
左側のナビゲーションウィンドウで、[ネットワークとセキュリティ] > [セキュリティグループ] を選択します。
-
上部のナビゲーションバーで、リージョンを選択します。このトピックでは、例として 中国 (杭州) を使用します。
-
[セキュリティグループ] ページで、[セキュリティグループの作成] をクリックします。
-
[セキュリティグループの作成] ページで、[基本情報] セクションのパラメーターを設定します。
このトピックでは、関連するパラメーターのみをリストします。他のパラメーターについては、「セキュリティグループの作成」をご参照ください。
-
ネットワーク:作成した VPC を選択します。
-
セキュリティグループタイプ:[基本セキュリティグループ] を選択します。
-
-
新しいセキュリティグループのアクセスルールパラメーターを設定します。
-
[インバウンド] タブで、[セキュリティグループルールの追加] を 2 回クリックします。
-
次の表のルールを追加し、[セキュリティグループの作成] をクリックします。
パラメーター
ルール 1:ポート 81 への IPv4 および IPv6 トラフィックを拒否
(オプション) ルール 2:ポート 80 への IPv6 トラフィックを許可
アクション
[拒否] を選択します。
[許可] を選択します。
優先度
デフォルト値の 1 を維持します。
プロトコルタイプ
[カスタム TCP] を選択します。
説明QUIC リスナーのセキュリティグループルールを設定する場合、プロトコルタイプとして [カスタム UDP] を選択します。
ポート範囲
ポート番号 81 を入力します。
ポート番号 HTTP(80) を選択します。
ソース
すべての IPv4 アドレス (0.0.0.0/0)とすべての IPv6 アドレス (::/0)を選択します。すべての IPv6 アドレス (::/0)を選択します。説明
セキュリティグループルールの説明を入力します。
-
ステップ 5:セキュリティグループなしでの接続性の検証
クライアントと ECS01 および ECS02 インスタンス間の接続性をテストします。
この例では、パブリックインターネットアクセスを持つクライアントを使用します。セキュリティグループの IPv6 アドレスに対するアクセス制御をテストするには、クライアントがパブリック IPv6 通信をサポートしていることを確認してください。
-
コマンドラインウィンドウを開き、
curl -4 http://<custom_domain_name>:80を実行します。出力は、IPv4 クライアントが HTTP を介してポート 80 で ALB インスタンスにアクセスできることを示しています。C:\Users\Administrator>curl -4 http://<custom_domain_name>:80 Hello World ! This is ECS02. -
curl -4 http://<custom_domain_name>:81を実行します。出力は、IPv4 クライアントが HTTP を介してポート 81 で ALB インスタンスにアクセスできることを示しています。C:\Users\Administrator>curl -4 http://<custom_domain_name>:81 Hello World ! This is ECS01. -
(オプション)
curl -6 http://<custom_domain_name>:80を実行します。出力は、IPv6 クライアントが HTTP を介してポート 80 で ALB インスタンスにアクセスできることを示しています。C:\Users\Administrator>curl -6 http://<custom_domain_name>:80 Hello World ! This is ECS02. -
(オプション)
curl -6 http://<custom_domain_name>:81を実行します。出力は、IPv6 クライアントが HTTP を介してポート 81 で ALB インスタンスにアクセスできることを示しています。C:\Users\Administrator>curl -6 http://<custom_domain_name>:81 Hello World ! This is ECS01.
ステップ 6:ALB インスタンスをセキュリティグループに追加して検証する
ALB インスタンスをセキュリティグループに追加し、セキュリティグループが ALB インスタンスのポートへのアクセスを制御することを確認します。
ALB コンソールにログインします。
-
インスタンス ページで対象の ALB インスタンスを見つけ、その ID をクリックします。インスタンス詳細ページで、セキュリティグループ タブをクリックします。
-
セキュリティグループ タブで、セキュリティグループの追加 をクリックします。ALB インスタンスをセキュリティグループに追加する ダイアログボックスで、手順 4: セキュリティグループの作成 で作成したセキュリティグループを選択し、OK をクリックします。
-
左側のペインで、対象のセキュリティグループの ID をクリックします。インバウンド方向 タブまたは アウトバンド方向 タブをクリックして、セキュリティグループルールを表示します。
このセクションでは、このトピックに関連するインバウンドセキュリティグループルールのみをリストします。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://<custom_domain_name>:80を実行します。次の出力は、IPv4 クライアントが HTTP を介してポート 80 で ALB インスタンスにアクセスできることを示しています。C:\Users\Administrator>curl -4 http://<custom_domain_name>:80 Hello World ! This is ECS01. -
(オプション)
curl -6 http://<custom_domain_name>:80を実行します。次の出力は、IPv6 クライアントが HTTP を介してポート 80 で ALB インスタンスにアクセスできることを示しています。C:\Users\Administrator>curl -6 http://<custom_domain_name>:80 Hello World ! This is ECS02. -
curl -4 http://<custom_domain_name>:81を実行します。接続が失敗し、ポート 81 へのアクセスを拒否するセキュリティグループルールが IPv4 クライアントに対して有効であることが確認されます。C:\Users\Administrator>curl -4 http://<custom_domain_name>:81 curl: (28) Failed to connect to <custom_domain_name> port 81 after 42076 ms: Could not connect to server -
(オプション)
curl -6 http://<custom_domain_name>:81を実行します。接続が失敗し、ポート 81 へのアクセスを拒否するセキュリティグループルールが IPv6 クライアントに対して有効であることが確認されます。C:\Users\Administrator>curl -6 http://<custom_domain_name>:81 curl: (28) Failed to connect to <custom_domain_name> port 81 after 42121 ms: Could not connect to server
-
ステップ 7:セキュリティグループの変更と検証
セキュリティグループルールを変更し、それらが ALB インスタンスのポートへのアクセスを制御することを確認します。
-
ALB の インスタンス ページに戻り、対象の ALB インスタンスを見つけ、そのインスタンス ID をクリックします。インスタンスの詳細 タブで、セキュリティグループ タブをクリックします。
-
基本情報 セクションで、セキュリティグループ ID をクリックします。または、セキュリティグループ タブの右上隅にある ECS コンソールに移動して編集 をクリックして [セキュリティグループルール] ページを開き、ルールを変更します。
-
[セキュリティグループルール] ページで、TCP ポート 80 へのアクセスを許可するルールを見つけます。[アクション] 列で、セキュリティグループルールの編集 をクリックします。[アクション] を [拒否] に設定し、[保存] をクリックします。
次の表に、このトピックに関連する更新されたセキュリティグループルールをリストします。
ポリシー
優先度
プロトコル
ポート範囲
ソース
拒否
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://<custom_domain_name>:80を実行します。次の出力は、IPv4 クライアントが HTTP を介してポート 80 にアクセスできないことを示しており、ポート 80 のセキュリティグループルールが機能していることを確認します。C:\Users\Administrator>curl -4 http://<custom_domain_name>:80 curl: (28) Failed to connect to <custom_domain_name> port 80 after 42020 ms: Could not connect to server -
(オプション) コマンド
curl -6 http://<custom_domain_name>:80を実行します。次の出力は、IPv6 クライアントが HTTP を介してポート 80 にアクセスできないことを示しており、ポート 80 のセキュリティグループルールが機能していることを確認します。C:\Users\Administrator>curl -6 http://<custom_domain_name>:80 curl: (28) Failed to connect to <custom_domain_name> port 80 after 42077 ms: Could not connect to server -
コマンド
curl -4 http://<custom_domain_name>:81を実行します。次の出力は、IPv4 クライアントが HTTP を介してポート 81 にアクセスできないことを示しており、ポート 81 のセキュリティグループルールが機能していることを確認します。C:\Users\Administrator>curl -4 http://<custom_domain_name>:81 curl: (28) Failed to connect to <custom_domain_name> port 81 after 42095 ms: Could not connect to server -
(オプション) コマンド
curl -6 http://<custom_domain_name>:81を実行します。次の出力は、IPv6 クライアントが HTTP を介してポート 81 にアクセスできないことを示しており、ポート 81 のセキュリティグループルールが機能していることを確認します。C:\Users\Administrator>curl -6 http://<custom_domain_name>:81 curl: (28) Failed to connect to <custom_domain_name> port 81 after 42095 ms: Could not connect to server
-
参考
コンソール
-
ALB インスタンスにセキュリティグループを関連付ける、または関連付けを解除するには、「ALB インスタンスとセキュリティグループの関連付け」をご参照ください。
-
セキュリティグループを使用して ALB インスタンスの許可リストまたはブロックリストを作成するには、「ALB インスタンスのセキュリティグループを設定して許可リストまたはブロックリストを実装する」をご参照ください。
-
基本セキュリティグループとエンタープライズセキュリティグループの詳細については、「基本セキュリティグループとエンタープライズセキュリティグループ」をご参照ください。
API
-
LoadBalancerJoinSecurityGroup:Application Load Balancer インスタンスにセキュリティグループを関連付けます。
-
LoadBalancerLeaveSecurityGroup:Application Load Balancer インスタンスからセキュリティグループの関連付けを解除します。