セキュリティグループは、インバウンドルールとアウトバウンドルールに基づいて Application Load Balancer(ALB)のインバウンドトラフィックとアウトバウンドトラフィックを制御する仮想ファイアウォールです。 特定の IP アドレスから ALB インスタンスへのアクセスを許可または拒否するには、ALB インスタンスをセキュリティグループに追加します。 セキュリティグループは、ALB インスタンスのブラックリストまたはホワイトリストとして機能できます。 セキュリティグループルールを作成して、よりきめ細かいアクセス制御を実装できます。
シナリオ
ALB インスタンスがセキュリティグループに追加される前は、ALB インスタンスのリスナーポートはデフォルトですべてのリクエストを許可します。
後続の 特定の IP アドレスからのリクエストのみを ALB インスタンスに許可する場合は、拒否ルールも作成する必要があります。ALB インスタンスが拒否ルールを含まないセキュリティグループに追加されると、リスナーポートは ALB デフォルトでは、インスタンスはすべてのリクエストを許可します。
特定の IP アドレスからのアクセスを許可または拒否する方法の詳細については、「セキュリティグループをブラックリストまたはホワイトリストとして使用する」をご参照ください。
プロトコルとポートに基づいてアクセス制御を構成する方法の詳細については、「セキュリティグループを使用してリスナーとポートに基づいてアクセス制御を構成する」をご参照ください。
ALB インスタンスにアクセス制御要件があり、ALB インスタンスへのインバウンドトラフィックを制御する場合は、ALB インスタンスをセキュリティグループに追加し、ビジネス要件に基づいてセキュリティグループルールを構成できます。
ALB アウトバウンドトラフィックとは、ユーザーに返される応答パケットのことです。 サービスの継続性を確保するために、ALB セキュリティグループはアウトバウンドパケットをブロックしません。 アウトバウンドルールを作成する必要はありません。
ALB インスタンスが作成されると、インスタンスが存在する VPC 内にマネージドセキュリティグループが自動的に作成されます。 ALB はセキュリティグループを管理します。 表示することはできますが、操作することはできません。 ALB 用のマネージドセキュリティグループには、次のタイプのセキュリティグループルールが含まれています。
優先度が 1 のルール: これらのルールは、ALB インスタンスのローカル IP アドレスを許可して、ALB とバックエンドサーバー間の通信を有効にするために使用されます。
セキュリティグループを作成する場合は、優先度が 1 の拒否ルールに ALB のローカル IP アドレスを追加しないことをお勧めします。 そうしないと、セキュリティグループルールが ALB のマネージドセキュリティグループと競合し、ALB とバックエンドサーバー間の通信が中断される可能性があります。 ALB インスタンスのローカル IP アドレスを表示するには、ALB コンソールにログインし、ALB インスタンスの詳細ページに移動します。
優先度が 100 のルール: これらのルールは、すべての IP アドレスを許可するために使用されます。 これは、拒否ルールのないセキュリティグループに追加された ALB インスタンスの場合、ALB インスタンスのリスナーポートがすべてのリクエストを許可することを意味します。
同時に、ベーシックセキュリティグループとアドバンストセキュリティグループの両方のデフォルトのアクセス制御ルールには、すべてのリクエストを拒否するルールが含まれています。 ベーシックまたはアドバンストセキュリティグループとマネージドセキュリティグループの両方が 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 | マネージドセキュリティグループ | マネージドセキュリティグループの詳細については、「マネージドセキュリティグループ」をご参照ください。 |
前提条件
中国(杭州)リージョンに VPC1 という名前の仮想プライベートクラウド(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 インスタンスのドメイン名をコピーします。
次の手順を実行して CNAME レコードを作成します。
説明ドメイン名が Alibaba Cloud Domains を使用して登録されていない場合は、DNS レコードを構成する前に、ドメイン名を Alibaba Cloud DNS に追加する必要があります。 詳細については、「ドメイン管理」をご参照ください。
Alibaba Cloud DNS コンソールにログインします。
[権威 DNS 解決] ページで、ドメイン名を見つけ、[DNS 設定][アクション] 列の をクリックします。
ドメイン名詳細ページの [DNS 設定] タブで、[DNS レコードの追加] をクリックします。
[DNS レコードの追加] パネルで、パラメーターを構成し、[OK] をクリックします。 次の表にパラメーターを示します。
パラメーター
説明
[レコードタイプ]
ドロップダウンリストから [CNAME] を選択します。
[ホスト名]
ドメイン名のプレフィックスを入力します。 この例では、@ と入力します。
説明ルートドメイン名を使用する場合は、
@と入力します。[DNS リクエスト送信元]
[デフォルト] を選択します。
[レコード値]
CNAME(ALB インスタンスのドメイン名)を入力します。
[TTL 期間]
CNAME レコードが DNS サーバーにキャッシュされる生存時間(TTL)値を選択します。 この例では、デフォルト値が使用されます。
ステップ 4: セキュリティグループを作成する
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 コンソールにログインします。
左側のナビゲーションウィンドウで、 を選択します。
上部のナビゲーションバーで、セキュリティグループを作成するリージョンを選択します。 この例では、[中国 (杭州)] が選択されています。
[セキュリティグループ] ページで、[セキュリティグループの作成] をクリックします。
[セキュリティグループの作成] ページで、[基本情報] セクションのパラメーターを設定します。
次のパラメーターを指定します。 他のパラメーターの詳細については、「セキュリティグループを作成する」をご参照ください。
[ネットワーク]: この例では、[VPC] が選択されています。
[セキュリティグループタイプ]: この例では、[ベーシックセキュリティグループ] が選択されています。
[セキュリティグループの作成] ページで、[アクセスルール] セクションのパラメーターを設定します。
[インバウンド] タブで、[ルールの追加] をクリックして、セキュリティグループ 1 とセキュリティグループ 2 のルールの構成に基づいてルールを追加します。
[セキュリティグループの作成] をクリックします。
ステップ 5: ALB インスタンスをセキュリティグループに追加する前のアクセス制御をテストする
Client03 と Client04 を使用して、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 インスタンス] ページで、管理する ALB インスタンスの ID をクリックします。 インスタンスの詳細ページで、[セキュリティグループ] タブをクリックします。
[セキュリティグループ] タブで、[セキュリティグループの作成] をクリックします。 [セキュリティグループに ALB を追加] ダイアログボックスで、ステップ 4: セキュリティグループを作成するで作成したセキュリティグループ 1 を選択し、[OK] をクリックします。
左側のナビゲーションウィンドウで、管理するセキュリティグループの ID をクリックします。 [インバウンドポリシー] タブまたは [アウトバウンドポリシー] タブをクリックして、セキュリティグループルールを表示できます。
次の表に、このトピックに関連するインバウンドセキュリティグループルールのみを示します。
アクション
優先度
プロトコルタイプ
ポート範囲
承認オブジェクト
拒否
1
すべて
宛先: -1/-1
送信元: 121.XX.XX.12
ALB インスタンスをセキュリティグループに追加し、結果をテストします。
Client03 にログインし、
curl http://カスタムドメイン名コマンドを実行します。 次の図に示すように応答が受信されます。これは、Client03 からのアクセスが ALB インスタンスによって拒否されたことを示しています。
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 インスタンス] ページで、管理する ALB インスタンスの ID をクリックします。 [インスタンスの詳細] タブで、[セキュリティグループ] タブをクリックします。
[セキュリティグループ] タブで、[セキュリティグループの作成] をクリックします。 [セキュリティグループに ALB を追加] ダイアログボックスで、ステップ 4: セキュリティグループを作成するで作成したセキュリティグループ 2 を選択し、[OK] をクリックします。
左側のナビゲーションウィンドウで、管理するセキュリティグループの ID をクリックします。 [インバウンドポリシー] タブまたは [アウトバウンドポリシー] タブをクリックして、セキュリティグループルールを表示できます。
次の表に、このトピックに関連するパラメーターのみを示します。
アクション
優先度
プロトコルタイプ
ポート範囲
承認オブジェクト
はい
1
すべて
宛先: -1/-1
送信元: 121.XX.XX.12
拒否
100
すべて
宛先: -1/-1
送信元: すべての IPv4 アドレス (0.0.0.0/0)
ALB インスタンスをセキュリティグループに追加し、結果をテストします。
Client03 にログインし、
curl http://カスタムドメイン名コマンドを実行します。 次の図に示すように、Hello World! This is ECS01.パケットが返されます。 このパケットは、Client03 が ALB インスタンスにアクセスできることを示しています。
Client04 にログインし、
curl http://カスタムドメイン名コマンドを実行します。 次の図に示すように応答が受信されます。 このパケットは、Client04 からのアクセスが ALB インスタンスによって拒否されたことを示しています。
テスト結果は、ALB インスタンスがホワイトリストとして機能するセキュリティグループ 2 に追加されると、許可ルールに含まれる IP アドレスのみが ALB インスタンスにアクセスできることを示しています。
関連情報
コンソールドキュメント
ALB インスタンスをセキュリティグループに追加したり、セキュリティグループから ALB インスタンスを削除したりする方法の詳細については、「セキュリティグループに ALB インスタンスを追加する」をご参照ください。
リスナーとポートに基づいて ALB のアクセス制御を実装する方法の詳細については、「セキュリティグループを使用してリスナーとポートに基づいてアクセス制御を構成する」をご参照ください。
ベーシックセキュリティグループとアドバンストセキュリティグループの違いについては、「ベーシックセキュリティグループとアドバンストセキュリティグループ」をご参照ください。
API
LoadBalancerJoinSecurityGroup: セキュリティグループに ALB インスタンスを追加します。
LoadBalancerLeaveSecurityGroup: セキュリティグループから ALB インスタンスを削除します。