Application Load Balancer (ALB) インスタンスへのアクセスを制御するには、セキュリティグループを設定します。アクセスコントロールリスト (ACL) とは異なり、ALB のセキュリティグループでは、プロトコルとポートによるアクセス制御や、IPv6 アドレス用のアクセス制御ポリシーの設定が可能です。
シナリオ
ALB インスタンスがセキュリティグループに関連付けられていない場合、そのリスナーポートはデフォルトですべてのインバウンドリクエストを許可します。
ALB インスタンスがセキュリティグループに関連付けられている場合、そのセキュリティグループにはデフォルトですべてのインバウンドリクエストを許可するルールが含まれているため、ALB リスナーポートはすべてのアクセスを許可します。特定の IP アドレスからのアクセスを制限するには、デフォルトの許可ルールより高い優先度を持つ拒否ルールを追加する必要があります。
特定の IP アドレスからの ALB インスタンスへのアクセスを拒否または許可するには、「セキュリティグループをブラックリストおよびホワイトリストとして使用する」をご参照ください。
ALB インスタンスにプロトコルまたはポートベースのアクセス制御を実装するには、「セキュリティグループによるポートレベルのアクセス制御の実装」をご参照ください。
お使いの ALB インスタンスでアクセス制御が必要で、ALB インスタンスのインバウンドトラフィックを制御したい場合は、ALB インスタンスにセキュリティグループを追加し、ビジネス要件に基づいて対応するセキュリティグループルールを設定できます。
ロードバランサーからのアウトバウンドトラフィックは、クライアントリクエストへのレスポンスです。正常な動作を確保するため、ALB インスタンスのセキュリティグループはアウトバウンドトラフィックを制限しません。セキュリティグループのアウトバウンドルールを設定する必要はありません。
ALB インスタンスが作成されると、システムはインスタンスの VPC にマネージドセキュリティグループを自動的に生成します。このセキュリティグループは ALB インスタンスが管理し、ユーザーは表示権限しか持ちません。ALB のマネージドセキュリティグループには、次の 2 種類のセキュリティグループルールが含まれています。
優先度 1 のルール:デフォルトでは、ローカル IP アドレスからのトラフィックを許可します。これはバックエンドサーバーとの通信に使用されます。
セキュリティグループルールを追加する際、ALB インスタンスのローカル IP アドレスに対して優先度 1 の拒否ルールを追加しないでください。これはマネージドセキュリティグループのルールと競合し、ALB インスタンスとバックエンドサーバー間の通信が中断される可能性があります。ローカル IP アドレスは、Application Load Balancer (ALB) コンソールのインスタンス詳細ページで確認できます。
優先度 100 のルール:デフォルトでは、すべての IP アドレスからのトラフィックを許可します。
基本またはエンタープライズセキュリティグループのデフォルトのアクセス制御ルール (非表示) には、他のすべてのトラフィックを拒否するルールが含まれています。ただし、マネージドセキュリティグループのデフォルトの許可ルールが優先されます。
次の 3 つのシナリオでは、セキュリティグループが関連付けられた ALB インスタンスのポートアクセスを制御する方法を説明します。これらの例では、ALB インスタンスにはポート 80 の HTTP リスナーとポート 81 の HTTP リスナーがあります。
シナリオ | セキュリティグループルール | 期待される結果 | 関連リンク |
ALB インスタンスはセキュリティグループに関連付けられていません。 | ALB のリスナーポートは、デフォルトですべてのインバウンドリクエストを許可します。 |
| |
ALB インスタンスはセキュリティグループに関連付けられています。 | HTTP ポート 81 へのアクセスを拒否します。 説明 関連するセキュリティグループルールのみを記載し、他のデフォルトルールは省略しています。 |
| |
ALB インスタンスに関連付けられているセキュリティグループを変更します。 |
説明 関連するセキュリティグループルールのみを記載し、他のデフォルトルールは省略しています。 |
|
制限事項
ALB インスタンスのアップグレードでは、セキュリティグループまたはアクセスコントロールリスト (ACL) を使用してアクセストラフィックを管理できます。古い 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コンソールにログインします。
トップナビゲーションバーで、リージョンを選択します。このトピックでは、China (Hangzhou) を例にします。
左側のナビゲーションウィンドウで、 を選択します。
サーバーグループ ページで、サーバーグループの作成 をクリックします。
サーバーグループの作成 ダイアログボックスで、次のパラメーターを設定し、作成 をクリックします。
このセクションでは、主要なパラメーターのみを説明します。その他のパラメーターはデフォルト値のままにします。詳細については、「サーバーグループの作成と管理」をご参照ください。
パラメーター
説明
[サーバーグループタイプ]
サーバー を選択します。
[サーバーグループ名]
サーバーグループ名を入力します。
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 コンソールにログインします。
左側のナビゲーションペインで、[ネットワーク & セキュリティ] > [セキュリティグループ] を選択します。
上部メニューで、リージョンを選択します。このトピックでは、China (Hangzhou) を例として使用します。
[セキュリティグループ] ページで、[セキュリティグループの作成] をクリックします。
[セキュリティグループの作成] ページで、[基本情報] セクションのパラメーターを設定します。
このトピックでは、関連するパラメーターのみを記載します。その他のパラメーターの詳細については、「セキュリティグループの作成」をご参照ください。
ネットワーク: 作成した 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 クライアントがポート 80 で HTTP 経由で ALB インスタンスにアクセスできることがわかります。C:\Users\Administrator>curl -4 http://<custom_domain_name>:80 Hello World ! This is ECS02.curl -4 http://<custom_domain_name>:81を実行します。出力から、IPv4 クライアントがポート 81 で HTTP 経由で ALB インスタンスにアクセスできることがわかります。C:\Users\Administrator>curl -4 http://<custom_domain_name>:81 Hello World ! This is ECS01.(オプション)
curl -6 http://<custom_domain_name>:80を実行します。出力から、IPv6 クライアントがポート 80 で HTTP 経由で ALB インスタンスにアクセスできることがわかります。C:\Users\Administrator>curl -6 http://<custom_domain_name>:80 Hello World ! This is ECS02.(オプション)
curl -6 http://<custom_domain_name>:81を実行します。出力から、IPv6 クライアントがポート 81 で HTTP 経由で 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 インスタンスのルールは次のとおりです:
ポリシー
優先度
プロトコル
Destination
Source
許可
1
カスタム TCP
Destination: 80/80Source: All IPv4 (0.0.0.0/0)許可
1
カスタム TCP
Destination: 80/80Source: All IPv6 (::/0)拒否
1
カスタム TCP
Destination: 81/81Source: All IPv4 (0.0.0.0/0)拒否
1
カスタム TCP
Destination: 81/81Source: All IPv6 (::/0)ALB インスタンスをセキュリティグループに追加した後、インスタンスへのアクセスをテストします。
クライアントのコマンドラインから、
curl -4 http://<custom_domain_name>:80を実行します。次の出力は、IPv4 クライアントがポート 80 で HTTP 経由で ALB インスタンスにアクセスできることを示します。C:\Users\Administrator>curl -4 http://<custom_domain_name>:80 Hello World ! This is ECS01.(オプション)
curl -6 http://<custom_domain_name>:80を実行します。次の出力は、IPv6 クライアントがポート 80 で HTTP 経由で 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 および TCP ポート 81 へのアクセスを許可するルールをそれぞれ変更します。各ルールで、[操作] 列で [変更] をクリックし、[ポリシー] を [拒否] に設定してから、[保存] をクリックします。
次の表に、このトピックに関連する更新されたセキュリティグループルールを示します。
ポリシー
優先度
プロトコル
ポート範囲
ソース
拒否
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 のセキュリティグループルールが機能していることを確認できます。C:\Users\Administrator>curl -4 http://<カスタムドメイン名>:80 curl: (28) Failed to connect to <カスタムドメイン名> port 80 after 42020 ms: Could not connect to server(オプション)
curl -6 http://<カスタムドメイン名>:80コマンドを実行します。 次の出力結果は、IPv6 クライアントが HTTP 経由でポート 80 にアクセスできないことを示しています。 これにより、ポート 80 のセキュリティグループルールが機能していることを確認できます。C:\Users\Administrator>curl -6 http://<カスタムドメイン名>:80 curl: (28) Failed to connect to <カスタムドメイン名> port 80 after 42077 ms: Could not connect to servercurl -4 http://<カスタムドメイン名>:81コマンドを実行します。 次の出力結果は、IPv4 クライアントが HTTP 経由でポート 81 にアクセスできないことを示しています。 これにより、ポート 81 のセキュリティグループルールが機能していることを確認できます。C:\Users\Administrator>curl -4 http://<カスタムドメイン名>:81 curl: (28) Failed to connect to <カスタムドメイン名> port 81 after 42095 ms: Could not connect to server(オプション)
curl -6 http://<カスタムドメイン名>:81コマンドを実行します。 次の出力結果は、IPv6 クライアントが HTTP 経由でポート 81 にアクセスできないことを示しています。 これにより、ポート 81 のセキュリティグループルールが機能していることを確認できます。C:\Users\Administrator>curl -6 http://<カスタムドメイン名>:81 curl: (28) Failed to connect to <カスタムドメイン名> port 81 after 42095 ms: Could not connect to server
リファレンス
コンソール
ALB インスタンスにセキュリティグループを関連付けるか、関連付けを解除するには、「ALB インスタンスとセキュリティグループの関連付け」をご参照ください。
セキュリティグループを使用して ALB インスタンスの許可リストまたはブロックリストを作成するには、「許可リストまたはブロックリストを実装するための ALB インスタンスのセキュリティグループの設定」をご参照ください。
基本セキュリティグループとエンタープライズセキュリティグループの詳細については、「基本セキュリティグループとエンタープライズセキュリティグループ」をご参照ください。
API
LoadBalancerJoinSecurityGroup:セキュリティグループを ALB インスタンスに関連付けます。
LoadBalancerLeaveSecurityGroup:ALB インスタンスからセキュリティグループの関連付けを解除します。