セキュリティグループは、インバウンドルールとアウトバウンドルールに基づいて Application Load Balancer (ALB) のインバウンドトラフィックとアウトバウンドトラフィックを制御する仮想ファイアウォールです。特定の IP アドレスから ALB インスタンスへのアクセスを許可または拒否するには、ALB インスタンスをセキュリティグループに追加できます。セキュリティグループは、ALB インスタンスのブラックリストまたはホワイトリストとして機能します。セキュリティグループルールを作成することで、よりきめ細かいアクセス制御を実装できます。
シナリオ
デフォルトでは、ALB インスタンスがセキュリティグループに関連付けられているかどうかに関わらず、そのリスナーポートはすべてのインバウンドトラフィックを受け入れます。許可ルールのみを含むセキュリティグループを追加しても、この動作は変わりません。特定の IP アドレスへのアクセスを制限するには、セキュリティグループに少なくとも 1 つの拒否ルールを追加する必要があります。
ALB セキュリティグループは、インバウンドトラフィックにのみ適用されます。アウトバウンドトラフィック (クライアントリクエストへのレスポンス) は制限されないため、アウトバウンドルールは必要ありません。
マネージドセキュリティグループ
ALB インスタンスを作成すると、システムは同じ Virtual Private Cloud (VPC) 内にマネージドセキュリティグループを自動的に作成します。このセキュリティグループは読み取り専用です。ルールは表示できますが、変更はできません。
マネージドセキュリティグループには、次のルールが含まれています。
|
優先度 |
アクション |
プロトコル |
ソース |
ポート範囲 |
説明 |
|
1 |
許可 |
すべて |
ALB のローカル IP アドレス |
すべて |
ALB インスタンスとそのバックエンドサーバー間の通信を有効にし、ヘルスチェックトラフィックを許可します |
|
100 |
許可 |
すべて |
0.0.0.0/0 |
すべて |
デフォルトですべてのインバウンドトラフィックを許可します |
|
(非表示) |
拒否 |
すべて |
0.0.0.0/0 |
すべて |
基本および高度なセキュリティグループに組み込まれているデフォルトのすべて拒否ルールです。優先度 100 の許可ルールが優先されます。 |
ALB のローカル IP アドレスを対象とする優先度 1 の拒否ルールを追加しないでください。このようなルールはマネージドセキュリティグループと競合し、ALB インスタンスとバックエンドサーバー間の通信を妨げる可能性があります。ALB インスタンスのローカル IP アドレスを確認するには、ALB コンソールにログインします。
このトピックでは、2 つのシナリオでセキュリティグループをブラックリストおよびホワイトリストとして使用する方法について説明します。セキュリティグループルールの優先度の詳細については、「セキュリティグループルールの並べ替えポリシー」をご参照ください。
ブラックリスト:特定の IP アドレスからのアクセスを拒否するように ALB セキュリティグループを設定する
ある企業が Alibaba Cloud のリージョンで ALB 上にビジネスをデプロイしました。セキュリティ検査により、121.XX.XX.12 などの IP アドレスからの悪意のあるリクエストや攻撃が検出されます。このような動作は、ビジネスリスクやデータ漏洩などのセキュリティリスクを引き起こす可能性があります。
この問題を解決するために、企業は ALB インスタンスのセキュリティグループルールを設定して、121.XX.XX.12 などの特定の IP アドレスからのアクセスを拒否することができます。セキュリティグループルールは、特定の IP アドレスからの悪意のあるリクエストや攻撃をブロックして、ビジネスのセキュリティと安定性を向上させることができます。
ホワイトリスト:特定の IP アドレスからのアクセスを許可するように ALB セキュリティグループを設定する
ある企業が Alibaba Cloud のリージョンで、機密データを含むビジネスを ALB 上にデプロイしました。ALB インスタンスへのアクセスを制限するために、企業はセキュリティグループルールを設定して、121.XX.XX.12 などの特定の IP アドレスからのアクセスのみを許可することができます。他の IP アドレスからのリクエストは拒否されます。
制限事項
アップグレードされた ALB インスタンスは、受信トラフィックを制御するためにセキュリティグループとアクセスコントロールリスト (ACL) の両方をサポートしていますが、未アップグレードの ALB インスタンスは ACL のみをサポートしています。セキュリティグループを使用するには、新しい ALB インスタンスを作成するか、既存の ALB インスタンスのアップグレードについてアカウントマネージャーにお問い合わせください。
ALB インスタンスのカスタムセキュリティグループには、以下の制限が適用されます。
-
ALB インスタンスの VPC で動作する必要があります。
-
ALB インスタンスに関連付けることができるカスタムセキュリティグループの数は、Elastic Compute Service (ECS) インスタンスの 1 つの Elastic Network Interface (ENI) に対するセキュリティグループのクォータから、マネージドセキュリティグループが占める 1 を引いた数と同じです。
-
ALB インスタンスに関連付けることができるルールの数は、1 つの ECS インスタンスの ENI に対するルールのクォータから、マネージドセキュリティグループのルール数を引いた数と同じです。
-
1 つの ALB インスタンスは、基本セキュリティグループまたは拡張セキュリティグループのいずれか 1 つのタイプのカスタムセキュリティグループにのみ追加できます。ALB インスタンスのセキュリティグループタイプを変更するには、まずインスタンスを関連付けられているすべてのセキュリティグループから削除してから、もう一方のタイプのセキュリティグループに追加します。
前提条件
-
中国 (杭州) リージョンに VPC1 という名前の Virtual Private Cloud (VPC) が作成されています。ゾーン H には VSW1 という名前の vSwitch が、ゾーン I には VSW2 という名前の vSwitch が作成されています。詳細については、「VPC と vSwitch の作成」をご参照ください。
-
VSW1 に 2 つの Elastic Compute Service (ECS) インスタンスが作成されており、ECS01 と ECS02 にはアプリケーションがデプロイされています。
-
ECS インスタンスの作成方法の詳細については、「ウィザードを使用したインスタンスの作成」をご参照ください。
-
ECS01 と ECS02 にアプリケーションをデプロイするコマンドは、以下のとおりです。
-
-
ドメイン名が登録されており、ICP 番号が取得されています。詳細については、「Alibaba Cloud でのドメイン名の登録」および「概要」をご参照ください。
クライアントとサーバーの IP アドレスを次の表に示します。IP アドレスは参考用です。
|
カテゴリ |
IP |
説明 |
|
ECS01 (サーバー) |
|
ALB インスタンスのバックエンドサーバー。 |
|
ECS02 (サーバー) |
|
|
|
Client03 |
パブリック:121.XX.XX.12 |
ALB インスタンスにアクセスするクライアント。 |
|
Client04 |
パブリック:121.XX.XX.45 |
手順
ステップ 1:サーバーグループの作成
- ALBコンソールにログインします。
-
上部のナビゲーションバーで、サーバーグループを作成するリージョンを選択します。この例では、[中国 (杭州)] が選択されています。
-
左側のナビゲーションペインで、を選択します。
-
サーバーグループ ページで、サーバーグループの作成 をクリックします。
-
サーバーグループの作成 ダイアログボックスで、パラメーターを設定し、作成 をクリックします。
次の表は、このトピックに関連するパラメータを示しています。その他のパラメータについては、デフォルト値を使用できます。詳細については、「サーバーグループの作成と管理」をご参照ください。
パラメータ
説明
[サーバーグループタイプ]
サーバーグループのタイプを指定します。この例では、サーバタイプ が選択されています。
[サーバーグループ名]
サーバーグループの名前を入力します。
[VPC]
サーバーグループを作成する VPC を選択します。この例では、VPC1 を選択します。
[バックエンドサーバープロトコル]
バックエンドプロトコルを選択します。この例では [HTTP] が選択されています。
[スケジューリングアルゴリズム]
スケジューリングアルゴリズム。この例では、重み付けラウンドロビン が選択されています。
-
サーバーグループが作成されました ダイアログボックスで、バックエンドサーバーの追加 をクリックします。
-
バックエンドサーバー タブで、バックエンドサーバーの追加 をクリックします。
-
バックエンドサーバーの追加 パネルで、ECS01 と ECS02 を選択し、次へ をクリックします。
-
バックエンドサーバーのポートと重みを指定し、OK をクリックします。
ステップ 2:ALB インスタンスの作成とリスナーの追加
- ALBコンソールにログインします。
-
インスタンス ページで、ALB の作成 をクリックします。
-
購入ページで、以下のパラメータを設定します。
次の表は、一部のパラメータのみを示しています。その他のパラメータはデフォルト値を使用できます。詳細については、「ALB インスタンスの作成と管理」をご参照ください。
-
[リージョン]:ALB インスタンスを作成するリージョンです。この例では、[中国 (杭州)] が選択されています。
-
[ネットワークタイプ]:ALB インスタンスのネットワークタイプです。この例では、パブリック が選択されています。
-
[VPC]: ALB インスタンスを作成する VPC を指定します。この例では、VPC1 が選択されています。
-
-
[今すぐ購入] をクリックし、支払いを完了します。
-
インスタンス ページに戻り、ALB インスタンスの ID をクリックします。
-
リスナー タブをクリックし、次に リスナーのクイック作成 をクリックします。
-
リスナーのクイック作成 ダイアログボックスで、パラメーターを設定し、OK をクリックします。この例では、ポート 80 でリッスンする HTTP リスナーが作成されます。次の表にパラメーターを示します。
パラメータ
説明
[リスナープロトコルの選択]
リスナープロトコルを選択します。この例では、[HTTP] が選択されています。
[リスナーポート]
リスナーポートを入力します。この例では、80 を指定します。
[サーバーグループ]
左側のドロップダウンリストでサーバーグループタイプを選択し、右側のドロップダウンリストでサーバーグループを選択します。この例では、ステップ 1 で作成したサーバーグループを選択します。
ステップ 3:CNAME レコードの設定
本番環境では、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:セキュリティグループの作成
ECS コンソールでセキュリティグループを作成します。この例では、2 つのセキュリティグループを作成します。
-
セキュリティグループ 1 をブラックリストとして使用
指定した IP アドレスからのアクセスを拒否するルールを追加します。この例では、パブリック IP アドレス 121.XX.XX.12 からのアクセスを拒否するセキュリティグループを作成します。デフォルトのセキュリティグループルールは保持できます。
アクション
優先度
プロトコルタイプ
ポート範囲
承認対象
拒否
1
すべて
宛先:-1/-1
送信元:121.XX.XX.12
-
セキュリティグループ 2 をホワイトリストとして使用
特定の IP アドレスからのアクセスを許可するルールと、それ以外のすべてのアクセスを拒否するルールを追加します。この例では、パブリック IP アドレス 121.XX.XX.12 からのアクセスを許可し、他のすべての IP アドレス (0.0.0.0/0) からのアクセスを拒否するルールを作成します。
アクション
優先度
プロトコルタイプ
ポート範囲
承認対象
許可
1
すべて
宛先:-1/-1
送信元:121.XX.XX.12
拒否
100
すべて
宛先:-1/-1
送信元:0.0.0.0/0
-
ECS コンソールにログインします。
-
左側のナビゲーションペインで、を選択します。
-
トップナビゲーションバーで、セキュリティグループを作成するリージョンを選択します。この例では、[中国 (杭州)] が選択されています。
-
[セキュリティグループ] ページで、セキュリティグループの作成 をクリックします。
-
セキュリティグループの作成 ページで、[基本情報] セクションのパラメーターを設定します。
次のパラメータを指定します。その他のパラメータの詳細については、「セキュリティグループ」をご参照ください。
-
[ネットワーク]:この例では、VPC が選択されています。
-
[セキュリティグループタイプ]: この例では、基本セキュリティグループ が選択されています。
-
-
セキュリティグループの作成 ページで、ルールの設定 セクションのパラメーターを設定します。
-
ルールを追加 をクリックして、セキュリティグループ 1 と セキュリティグループ 2 のルールの設定に基づいたルールを追加します。
-
作成 をクリックします。
-
ステップ 5:ALB インスタンスをセキュリティグループに追加する前のアクセス制御のテスト
Client03 と Client04 を使用して、ALB インスタンス経由でのバックエンドサーバー (ECS01 と ECS02) の可用性をテストします。
-
Client03 にログインし、
curl http://カスタムドメイン名コマンドを実行します。Hello World! This is ECS01.というレスポンスが返されます。このレスポンスは、Client03 が ALB インスタンスにアクセスできることを示します。 -
Client04 にログインし、
curl http://カスタムドメイン名コマンドを実行します。Hello World! This is ECS02.というレスポンスが返され、Client04 が ALB インスタンスにアクセスできることを示しています。
ステップ 6:ALB インスタンスをセキュリティグループに追加して結果を確認
セキュリティグループ 1 をブラックリストとして使用
ステップ 4:セキュリティグループの作成で作成したセキュリティグループ 1 に ALB インスタンスを追加して、セキュリティグループ 1 のルールが ALB インスタンスに適用されるかをテストします。
- ALBコンソールにログインします。
-
トップナビゲーションバーで、ALB インスタンスのリージョンを選択します。 この例では、[中国 (杭州)] が選択されています。
-
インスタンス ページで、管理する ALB インスタンスの ID をクリックします。 インスタンス詳細ページで、セキュリティグループ タブをクリックします。
-
セキュリティグループ タブで、セキュリティグループの追加 をクリックします。ALB インスタンスをセキュリティグループに追加する ダイアログボックスで、手順 4: セキュリティグループの作成 で作成したセキュリティグループ 1 を選択し、OK をクリックします。
-
左側のパネルで、管理するセキュリティグループの ID をクリックします。インバウンド または アウトバンド タブをクリックして、セキュリティグループルールを表示できます。
次の表は、このトピックに関連するインバウンドセキュリティグループルールのみを示しています。
アクション
優先度
プロトコルタイプ
ポート範囲
承認対象
拒否
1
すべて
宛先:-1/-1
送信元:121.XX.XX.12
-
ALB インスタンスをセキュリティグループに追加して、結果をテストします。
-
Client03 にログインし、
curl http://カスタムドメイン名コマンドを実行します。以下のようなレスポンスが返され、Client03 からのアクセスが ALB インスタンスによって拒否されたことを示します。[root@xxx /]# curl http://xxx.xxx.xxx curl: (7) Failed connect to xxx.xxx.xxx:80; Connection timed out -
Client04 にログインし、
curl http://カスタムドメイン名コマンドを実行します。Hello World! This is ECS01.というレスポンスが返されます。このレスポンスは、Client04 が ALB インスタンスにアクセスできることを示しています。
-
結果から、ALB インスタンスを ブラックリストとして機能するセキュリティグループ 1 に追加した後、セキュリティグループ 1 の拒否ルールが、指定された IP アドレスから ALB インスタンスへのアクセスを拒否することがわかります。拒否ルールで指定されていない IP アドレスは、ALB インスタンスにアクセスできます。
セキュリティグループ 2 をホワイトリストとして使用
ステップ 4:セキュリティグループの作成で作成したセキュリティグループ 2 に ALB インスタンスを追加して、セキュリティグループ 2 のルールが ALB インスタンスに適用されるかをテストします。
- ALBコンソールにログインします。
-
上部のナビゲーションバーで、ALB インスタンスのリージョンを選択します。この例では、[中国 (杭州)] が選択されています。
-
インスタンス ページで、管理する ALB インスタンスの ID をクリックし、インスタンスの詳細 タブで セキュリティグループ タブをクリックします。
-
セキュリティグループ タブで、セキュリティグループの追加 をクリックします。ALB インスタンスをセキュリティグループに追加する ダイアログボックスで、手順 4: セキュリティグループの作成 で作成したセキュリティグループ 2 を選択し、OK をクリックします。
-
左側のパネルで、管理するセキュリティグループの ID をクリックします。インバウンド タブまたは アウトバンド タブをクリックすると、セキュリティグループルールを表示できます。
次の表は、このトピックに関連するパラメータのみを示しています。
アクション
優先度
プロトコルタイプ
ポート範囲
承認対象
許可
1
すべて
宛先:-1/-1
送信元:121.XX.XX.12
拒否
100
すべて
宛先:-1/-1
送信元:0.0.0.0/0
-
ALB インスタンスをセキュリティグループに追加して、結果をテストします。
-
Client03 にログインし、
curl http://カスタムドメイン名コマンドを実行します。Hello World! This is ECS01.というレスポンスが返されます。このレスポンスは、Client03 が ALB インスタンスにアクセスできることを示しています。 -
Client04 にログインし、
curl http://カスタムドメイン名コマンドを実行します。以下のようなレスポンスが返されます。このレスポンスは、Client04 からのアクセスが ALB インスタンスによって拒否されたことを示しています。[root@xxx ~]# curl http://xxx curl: (7) Failed connect to xxx:80; Connection timed out
-
テスト結果から、ALB インスタンスを ホワイトリストとして機能するセキュリティグループ 2 に追加した後、許可ルールに含まれる IP アドレスのみが ALB インスタンスにアクセスできることがわかります。
セキュリティグループによる ALB への PING リクエストのブロック
アップグレードされた ALB インスタンスのセキュリティグループは、ICMP プロトコルをサポートしています。このトピックで前述したセキュリティグループルールの設定方法に従い、関連付けられたセキュリティグループの [インバウンド] 方向で、[プロトコルタイプ] を [すべての ICMP-IPv4] に、[アクセスソース] を 0.0.0.0/0 に設定した [拒否] ルールを追加して、ALB インスタンスへの Ping リクエストをブロックします。
2025年2月25日より前に作成された未アップグレードのインスタンスを使用している場合、そのインスタンスはセキュリティグループをサポートしません。 PING リクエストをブロックするには、インスタンスに関連付けられた EIP を インターネットファイアウォールに接続し、ファイアウォールでインバウンドの ICMP 拒否ポリシーを設定することで、同様のアクセスコントロールが可能です。
マネージドセキュリティグループが属する ALB インスタンスの確認方法
ECS コンソールの[セキュリティグループ] ページで、セキュリティグループタイプのフィルターを[クラウド製品が管理するセキュリティグループ]に設定し、名前がALB_SYSTEM_SECURITY_GROUP-で始まるセキュリティグループを見つけます。その名前と説明はALB_SYSTEM_SECURITY_GROUP-{ALB Instance ID}の形式に従います。ここで、インスタンス ID は、セキュリティグループを作成した ALB インスタンスを示しています。
参考資料
コンソールドキュメント
-
ALB インスタンスをセキュリティグループに追加、およびセキュリティグループから削除する方法の詳細については、「ALB インスタンスをセキュリティグループに追加」をご参照ください。
-
リスナーとポートに基づいて ALB のアクセス制御を実装する方法の詳細については、「セキュリティグループを使用したポート レベルのアクセス制御の実装」をご参照ください。
-
基本セキュリティグループとエンタープライズセキュリティグループの違いについては、「基本セキュリティグループとエンタープライズセキュリティグループ」をご参照ください。
参考
コンソール
-
ALB インスタンスにセキュリティグループを関連付ける、または関連付けを解除するには、「ALB インスタンスとセキュリティグループの関連付け」をご参照ください。
-
セキュリティグループを使用して ALB インスタンスの許可リストまたはブロックリストを作成するには、「ALB インスタンスのセキュリティグループを設定して許可リストまたはブロックリストを実装する」をご参照ください。
-
基本セキュリティグループとエンタープライズセキュリティグループの詳細については、「基本セキュリティグループとエンタープライズセキュリティグループ」をご参照ください。
API
-
LoadBalancerJoinSecurityGroup:Application Load Balancer インスタンスにセキュリティグループを関連付けます。
-
LoadBalancerLeaveSecurityGroup:Application Load Balancer インスタンスからセキュリティグループの関連付けを解除します。