セキュリティグループは、インバウンドルールとアウトバウンドルールに基づいて Application Load Balancer (ALB) のインバウンドトラフィックとアウトバウンドトラフィックを制御する仮想ファイアウォールです。ALB インスタンスをセキュリティグループに追加することで、特定の IP アドレスから ALB インスタンスへのアクセスを許可または拒否できます。セキュリティグループは、ALB インスタンスのブラックリストまたはホワイトリストとして機能します。セキュリティグループのルールを作成することで、よりきめ細かなアクセス制御を実現できます。
シナリオ
デフォルトでは、ALB インスタンスがセキュリティグループに関連付けられているかどうかにかかわらず、リスナーポートはすべてのインバウンドリクエストを受け入れます。許可ルールのみを含むセキュリティグループを追加しても、この動作は変わりません。特定の IP アドレスへのアクセスを制限するには、セキュリティグループに少なくとも 1 つの拒否ルールを追加してください。
ALB セキュリティグループはインバウンドトラフィックのみに適用されます。アウトバウンドトラフィック (クライアントリクエストへのレスポンス) は制限されないため、アウトバウンドルールは不要です。
マネージドセキュリティグループ
ALB インスタンスを作成すると、システムは同じ 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 つのシナリオでセキュリティグループをブラックリストとホワイトリストとして使用する方法について説明します。セキュリティグループのルールの優先度の詳細については、「セキュリティグループルールの並べ替えポリシー」をご参照ください。
ブラックリスト:ALB セキュリティグループを設定し、特定の IP アドレスからのアクセスを拒否
ある企業が Alibaba Cloud のリージョンで、ALB にビジネスをデプロイしました。セキュリティ検査により、121.XX.XX.12 などの IP アドレスからの悪意のあるリクエストや攻撃が検出されました。このような挙動は、データ漏洩などのビジネスリスクやセキュリティリスクを引き起こす可能性があります。
この問題を解決するために、企業は ALB インスタンスのセキュリティグループのルールを設定して、121.XX.XX.12 などの特定の IP アドレスからのアクセスを拒否できます。セキュリティグループのルールにより、特定の IP アドレスからの悪意のあるリクエストや攻撃をブロックして、ビジネスのセキュリティと安定性を向上させることができます。
ホワイトリスト:ALB セキュリティグループを設定し、特定の IP アドレスからのアクセスを許可
ある企業が 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 つのエラスティックネットワークインターフェイス (ENI) に対するセキュリティグループのクォータから、マネージドセキュリティグループが使用する 1 を差し引いた値です。
ALB インスタンス に関連付け可能なルール数は、ECS インスタンス の 1 つの ENI に対するルールのクォータから、マネージドセキュリティグループ内のルール数を差し引いた値です。
1 つの ALB インスタンス は、基本または高度のいずれか 1 種類のカスタムセキュリティグループにのみ追加できます。ALB インスタンス のセキュリティグループタイプを変更するには、まず関連付けられているすべてのセキュリティグループからインスタンスを削除し、その後、もう一方のタイプのセキュリティグループに追加してください。
前提条件
中国 (杭州) リージョンに、Virtual Private Cloud (VPC) 「VPC1」が作成されています。ゾーン H には vSwitch 「VSW1」が、ゾーン I には vSwitch 「VSW2」が作成されています。詳細については、「VPC と vSwitch の作成」をご参照ください。
VSW1 に 2 つの Elastic Compute Service (ECS) インスタンスが作成済みで、ECS01 と ECS02 にアプリケーションがデプロイされています。
ECS インスタンスの作成方法の詳細については、「ウィザードを使用したインスタンスの作成」をご参照ください。
ECS01 および ECS02 にアプリケーションをデプロイするためのコマンドは、次のとおりです。
ドメイン名が登録済みで、そのドメイン名に対して ICP 番号が取得されています。詳細については、「Alibaba Cloud でのドメイン名の登録」および「概要」をご参照ください。
クライアントとサーバーの IP アドレスは次の表のとおりです。IP アドレスは参照用です。
カテゴリ | IP | 説明 |
ECS01 (サーバー) |
| ALB インスタンスのバックエンドサーバー。 |
ECS02 (サーバー) |
| |
クライアント 03 | パブリック: 121.XX.XX.12 | ALB インスタンスにアクセスするクライアント。 |
クライアント 04 | パブリック: 121.XX.XX.45 |
操作手順
手順1:サーバーグループの作成
- ALBコンソールにログインします。
上部のナビゲーションバーで、サーバーグループを作成するリージョンを選択します。この例では、[China (Hangzhou)] を選択します。
左側のナビゲーションペインで、 を選択します。
サーバーグループ ページで、サーバーグループの作成 をクリックします。
サーバーグループの作成 ダイアログボックスで、パラメーターを設定し、作成 をクリックします。
次の表に、このトピックに関連するパラメーターを示します。他のパラメーターにはデフォルト値を使用できます。詳細については、「サーバーグループの作成と管理」をご参照ください。
パラメーター
説明
[サーバーグループタイプ]
サーバーグループのタイプを指定します。この例では、サーバー を選択します。
[サーバーグループ名]
サーバーグループの名前を入力します。
[VPC]
サーバーグループを作成する VPC を選択します。この例では、VPC1 を選択します。
[バックエンドサーバープロトコル]
バックエンドプロトコルを選択します。この例では [HTTP] を選択します。
[スケジューリングアルゴリズム]
スケジューリングアルゴリズムです。この例では、重み付けラウンドロビン を選択します。
サーバーグループが作成されました ダイアログボックスで、バックエンドサーバーの追加 をクリックします。
バックエンドサーバー タブで、バックエンドサーバーの追加 をクリックします。
バックエンドサーバーの追加 パネルで、ECS01 と ECS02 を選択し、次へ をクリックします。
バックエンドサーバーのポートと重みを指定し、OK をクリックします。
手順2:ALB インスタンスの作成とリスナーの追加
- ALBコンソールにログインします。
インスタンス ページで、ALB の作成 をクリックします。
購入ページで、次のパラメーターを設定します。
ここでは、一部のパラメーターのみを説明します。他のパラメーターはデフォルト値を使用します。詳細については、「ALB インスタンスの作成と管理」をご参照ください。
[リージョン]:Application Load Balancer (ALB) インスタンスを作成するリージョン。この例では、[China (Hangzhou)] を選択します。
[ネットワークタイプ]: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:セキュリティグループの作成
Elastic Compute Service (ECS) コンソールでセキュリティグループを作成します。この例では、2 つのセキュリティグループを作成します。
セキュリティグループ 1 をブラックリストとして使用
指定した IP アドレスからのアクセスを拒否する拒否ルールを追加します。この例では、パブリック IP アドレス 121.XX.XX.12 からのアクセスを拒否するセキュリティグループを作成します。デフォルトのセキュリティグループルールはそのまま使用します。
アクション
優先度
プロトコル
ポート範囲
ソース
拒否
1
すべて
宛先:-1/-1
ソース:121.XX.XX.12
セキュリティグループ 2 をホワイトリストとして使用
特定の IP アドレスからのアクセスを許可する許可ルールと、特定の IP アドレスからのアクセスを拒否する拒否ルールを追加します。この例では、パブリック IP アドレス 121.XX.XX.12 からのアクセスを許可する許可ルールと、拒否ルールを作成します。
アクション
優先度
プロトコル
ポート範囲
ソース
許可
1
すべて
宛先:-1/-1
ソース:121.XX.XX.12
拒否
100
すべて
宛先:-1/-1
ソース:0.0.0.0/0
ECS コンソールにログインします。
左側のナビゲーションペインで、 を選択します。
上部のナビゲーションバーで、セキュリティグループを作成するリージョンを選択します。この例では、[China (Hangzhou)] を選択します。
[セキュリティグループ] ページで、セキュリティグループの作成 をクリックします。
セキュリティグループの作成 ページで、[基本情報] セクションのパラメーターを設定します。
次のパラメーターを指定します。他のパラメーターの詳細については、「セキュリティグループ」をご参照ください。
[ネットワーク]:この例では、VPC を選択します。
[セキュリティグループタイプ]:この例では、基本セキュリティグループ を選択します。
セキュリティグループの作成 ページで、ルールの設定 セクションのパラメーターを設定します。
ルールを追加 をクリックし、セキュリティグループ 1 および セキュリティグループ 2 の設定に基づいてルールを追加します。
作成 をクリックします。
手順5:ALB インスタンスをセキュリティグループに追加する前のアクセス制御のテスト
クライアント03 とクライアント04 を使用して、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 インスタンスのリージョンを選択します。この例では、[China (Hangzhou)] を選択します。
インスタンス ページで、管理する ALB インスタンスの ID をクリックします。インスタンス詳細ページで、セキュリティグループ タブをクリックします。
セキュリティグループ タブで、セキュリティグループの追加 をクリックします。ALB インスタンスをセキュリティグループに追加する ダイアログボックスで、「手順4:セキュリティグループの作成」で作成したセキュリティグループ 1 を選択し、OK をクリックします。
左側のパネルで、管理するセキュリティグループの ID をクリックします。インバウンド または アウトバンド タブをクリックして、セキュリティグループのルールを表示できます。
次の表では、このトピックに関連するインバウンドセキュリティグループのルールのみを説明します。
アクション
優先度
プロトコル
ポート範囲
ソース
拒否
1
すべて
宛先:-1/-1
ソース:121.XX.XX.12
ALB インスタンスをセキュリティグループに追加し、結果をテストします。
Client03 にログオンして
curl http://カスタムドメイン名コマンドを実行すると、次の図に示すように、ALB インスタンスによって Client03 からのアクセスが拒否されたことを示す応答が返されます。
Client04 にログインし、
curl http://カスタムドメイン名コマンドを実行します。 次の図に示すように、Hello World! This is ECS01.パケットが返されます。 このパケットは、Client04 が ALB インスタンスにアクセスできることを示しています。
この結果は、ブラックリストとして機能する セキュリティグループ 1 に ALB インスタンスを追加した後、セキュリティグループ 1 の拒否ルールによって、指定された IP アドレスから ALB インスタンスへのアクセスが拒否されることを示しています。拒否ルールで指定されていない IP アドレスは、ALB インスタンスにアクセスできます。
セキュリティグループ 2 をホワイトリストとして使用
「手順4:セキュリティグループの作成」で作成したセキュリティグループ 2 に ALB インスタンスを追加し、セキュリティグループ 2 のルールが ALB インスタンスで有効になるかどうかをテストします。
- ALBコンソールにログインします。
上部のナビゲーションバーで、ALB インスタンスのリージョンを選択します。この例では、[China (Hangzhou)] を選択します。
インスタンス ページで、管理する 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://Custom domain nameコマンドを実行します。 以下の図に示すように、Hello World! This is ECS01.パケットが返されます。 このパケットは、Client03 が ALB インスタンスにアクセスできることを示しています。
Client04 にログオンし、
curl http://カスタムドメイン名コマンドを実行します。次の図に示すように、レスポンスが返されます。このパケットは、Client04 からのアクセスが ALB インスタンスによって拒否されたことを示します。
このテスト結果は、ホワイトリストとして機能するセキュリティグループ 2 に ALB インスタンスを追加した後、許可ルール内の IP アドレスのみが ALB インスタンスにアクセスできることを示しています。
関連ドキュメント
コンソールドキュメント
ALB インスタンスをセキュリティグループに関連付けたり、セキュリティグループから関連付けを解除したりする方法の詳細については、「ALB インスタンスをセキュリティグループに関連付ける」をご参照ください。
リスナーとポートに基づいて ALB のアクセス制御を実装する方法の詳細については、「セキュリティグループによるポートレベルのアクセス制御の実装」をご参照ください。
Basic セキュリティグループと Enterprise セキュリティグループの違いについては、「Basic セキュリティグループと Enterprise セキュリティグループ」をご参照ください。
リファレンス
コンソール
ALB インスタンスにセキュリティグループを関連付けるか、関連付けを解除するには、「ALB インスタンスとセキュリティグループの関連付け」をご参照ください。
セキュリティグループを使用して ALB インスタンスの許可リストまたはブロックリストを作成するには、「許可リストまたはブロックリストを実装するための ALB インスタンスのセキュリティグループの設定」をご参照ください。
基本セキュリティグループとエンタープライズセキュリティグループの詳細については、「基本セキュリティグループとエンタープライズセキュリティグループ」をご参照ください。
API
LoadBalancerJoinSecurityGroup:セキュリティグループを ALB インスタンスに関連付けます。
LoadBalancerLeaveSecurityGroup:ALB インスタンスからセキュリティグループの関連付けを解除します。