セキュリティグループは、ECS インスタンスの仮想ファイアウォールとして機能します。セキュリティグループとそのルールを管理して、詳細なネットワークセキュリティとアクセスの制御を実装できます。
次の図は、2 つのセキュリティグループルールの例を示しています。1 つのルールは特定の IP アドレスからのインスタンスのリモート管理を許可し、もう 1 つのルールはインスタンスが既知の悪意のある Web サイトにアクセスするのを防ぎます。
インバウンドルール: 特定の IP アドレス (
121.XX.XX.XX) が SSH (Secure Shell Protocol) (ポート 22) を介してインスタンスにアクセスすることを許可します。アウトバウンドルール: インスタンスが既知の悪意のある IP アドレス (
XX.XX.XX.XX) にアクセスするのを防ぎます。

新しいインスタンスのセキュリティグループを設定する
インスタンス購入ページに移動します。ECS コンソール - カスタム起動ページに移動し、目的のインスタンス構成を選択します。
セキュリティグループを作成します。[ネットワークとセキュリティ] セクションで、基本またはエンタープライズセキュリティグループを作成し、名前を指定できます。
一般的なルールをすばやく設定します。インスタンスを購入すると、コンソールに一般的なポートとプロトコルのリストが表示されます。これらのオプションを選択して、すべての IP アドレス (
0.0.0.0/0) からのトラフィックが、指定されたポートとプロトコルで新しいインスタンスにアクセスできるようにすることができます。
インスタンスの購入時に新しいセキュリティグループを作成する場合、詳細なルールを設定することはできません。ルールはインスタンスの作成後に設定できます。クイック設定を使用して SSH (22) や RDP (Remote Desktop Protocol) (3389) などの管理ポートを開く場合は、インスタンスの作成後にセキュリティグループルールを変更して、信頼できる IP アドレスからのみアクセスを許可する必要があります。
作成後にセキュリティグループルールを変更、追加、または削除します。インスタンスを購入した後、新しいインスタンスのセキュリティグループルールを追加、変更、または削除できます。詳細については、「セキュリティグループルール」をご参照ください。
インスタンスアクセスの制限やデータベースセキュリティポリシーの実装など、より多くのビジネスシナリオでセキュリティグループルールを設定する方法の詳細については、「セキュリティグループの適用ガイドと例」をご参照ください。
セキュリティグループの管理
ECS インスタンスで作成されたセキュリティグループのルールを変更できます。また、インスタンスとは独立してセキュリティグループを作成および管理し、それらを既存の ECS インスタンスに関連付けることもできます。
セキュリティグループの作成
コンソール
ECS コンソール - セキュリティグループに移動し、[セキュリティグループの作成] をクリックします。
セキュリティグループ名を指定し、Virtual Private Cloud を選択します。
セキュリティグループタイプを [基本セキュリティグループ] または エンタープライズセキュリティグループ に設定できます。
セキュリティグループにセキュリティグループルールを追加した後、[OK] をクリックします。
API
CreateSecurityGroup を呼び出してセキュリティグループを作成します。
新しい基本セキュリティグループにルールを設定しない場合、次のデフォルトルールが適用されます: 同じセキュリティグループ内の他の ECS インスタンスからのインバウンドトラフィックは許可されます。他のすべてのインバウンドトラフィックは拒否されます。すべてのアウトバウンドトラフィックは許可されます。
セキュリティグループルールの追加、変更、または削除
セキュリティグループルールは、セキュリティグループのインバウンドおよびアウトバウンドのネットワークトラフィックを許可するか拒否するかを定義します。ルールを設定するときは、トラフィックの方向、宛先、優先度などのパラメーターを指定する必要があります。セキュリティグループルールはステートフルです。セキュリティグループは対応するアウトバウンド応答トラフィックを自動的に許可するため、インバウンドルールのみを設定する必要があります。
コンソール
ECS コンソール - セキュリティグループページに移動し、管理するセキュリティグループの ID をクリックして詳細ページを開きます。
セキュリティグループルールを設定します。
ルールの追加: ターゲットセキュリティグループの詳細ページで、ルールの方向を選択し、[ルールの追加] をクリックします。
ルールの変更: セキュリティグループ詳細ページの [アクセスルール] セクションで、変更するルールを見つけ、[アクション] 列の [編集] をクリックします。
ルールの削除: ターゲットセキュリティグループの詳細ページの [アクセスルール] セクションで、宛先ルールを見つけ、[アクション] 列の [削除] をクリックします。
API
AuthorizeSecurityGroup を呼び出してインバウンドルールを追加します。
AuthorizeSecurityGroupEgress を呼び出してアウトバウンドルールを追加します。
ModifySecurityGroupRule を呼び出してインバウンドルールを変更します。
ModifySecurityGroupEgressRule を呼び出してアウトバウンドルールを変更します。
RevokeSecurityGroup を呼び出してインバウンドルールを削除します。
RevokeSecurityGroupEgress を呼び出してアウトバウンドルールを削除します。
同じ優先度レベルでは、拒否ルールが優先されます。特定のネットワークトラフィックについては、セキュリティグループはデフォルトでトラフィックを許可します。
セキュリティを向上させるには、最小権限の原則に基づいてセキュリティグループルールを設定します。すべての IP アドレス (0.0.0.0/0 または ::/0) からのアクセスを許可しないでください。特に、ECS インスタンスへのログオンや管理などの高リスクなシナリオでは許可しないでください。
本番環境でセキュリティグループを直接変更しないでください。代わりに、セキュリティグループをクローンし、テスト環境で変更をテストして、インスタンストラフィックが中断されないことを確認します。変更を検証した後、本番環境のセキュリティグループに適用できます。
セキュリティグループとインスタンスの関連付け
セキュリティグループを ECS インスタンスに関連付けると、セキュリティグループをインスタンスのプライマリ Elastic Network Interface (ENI) に関連付けることになります。
コンソール
ECS コンソール - インスタンスページに移動し、管理するインスタンスの ID をクリックして詳細ページを開きます。
インスタンス詳細ページで、[セキュリティグループ] タブに切り替えます。このタブで、[セキュリティグループの変更] をクリックして、インスタンスのセキュリティグループを追加または削除します。インスタンスが複数のセキュリティグループに関連付けられている場合、それらのルールはマージされ、優先順位に従って適用されます。
API
ModifyInstanceAttribute を呼び出して、複数のセキュリティグループを ECS インスタンスに関連付けます。
JoinSecurityGroup を呼び出して、ECS インスタンスを指定されたセキュリティグループに追加します。
LeaveSecurityGroup を呼び出して、指定されたセキュリティグループから ECS インスタンスを削除します。
セキュリティグループと セカンダリ ENI の関連付け
セキュリティグループは、ECS インスタンスの Elastic Network Interface (ENI) に適用されます。インスタンスに複数の ENI がある場合、異なるセキュリティグループをそれらに関連付け、異なるセキュリティグループルールを設定して、内部ネットワークトラフィックの階層的な制御を実装し、サービス分離を実現できます。
コンソール
ECS コンソール - ENIページに移動し、ターゲットのセカンダリ ENI の ID をクリックして詳細ページを開きます。
[セキュリティグループの変更] をクリックし、関連付けるセキュリティグループを選択して、[OK] をクリックします。
API
JoinSecurityGroup を呼び出して、ENI を指定されたセキュリティグループに関連付けます。
LeaveSecurityGroup を呼び出して、ENI と指定されたセキュリティグループの関連付けを解除します。
ModifyNetworkInterfaceAttribute を使用して、複数のセキュリティグループを ENI に関連付けます。
プレフィックスリストの使用
複数の IP アドレス範囲に権限を付与するには、プレフィックスリストを使用して一元管理できます。これにより、セキュリティグループルールの設定が簡素化され、バッチメンテナンスの効率が向上します。
コンソール
プレフィックスリストを作成します。
ECS コンソール - プレフィックスリストに移動します。
適切なタブを選択し、[プレフィックスリストの作成] をクリックします。
プレフィックスリストを参照するセキュリティグループの場合、ルール数はリストに設定されたエントリの最大数に基づいて計算されます。
ターゲットセキュリティグループの詳細ページで、[アクセスルール] セクションでルールを追加または変更します:
[ソース] を `プレフィックスリスト` に設定し、目的のプレフィックスリストを選択します。
API
CreatePrefixList を呼び出してプレフィックスリストを作成します。プレフィックスリストが作成された後、DescribePrefixListAttributes を呼び出してその詳細をクエリできます。
AuthorizeSecurityGroup を呼び出し、インバウンドルールで SourcePrefixListId パラメーターを設定して、プレフィックスリスト内の IP アドレスからのアクセスを許可します。
AuthorizeSecurityGroupEgress を呼び出し、アウトバウンドルールで DestPrefixListId パラメーターを設定して、プレフィックスリスト内の IP アドレスへのアクセスを許可します。
セキュリティグループのクローン
セキュリティグループをクローンして、同じ構成の複数のセキュリティグループをすばやく作成したり、リージョンやネットワークタイプ間でセキュリティグループをコピーしてバックアップしたりできます。クローンされたセキュリティグループは、ターゲットリージョンのセキュリティグループリストに表示されます。
ECS コンソール - セキュリティグループに移動します。ターゲットセキュリティグループの [アクション] 列で、[セキュリティグループのクローン] をクリックします。
新しいセキュリティグループのパラメーターを設定します。クローンされたセキュリティグループは、ターゲットリージョンのセキュリティグループリストに表示されます。
[VPC ID]: 新しいセキュリティグループのネットワークタイプで、クラシックネットワークまたは特定の VPC にすることができます。
[ルールを保持]: このオプションを選択すると、ソースセキュリティグループのすべてのルールが新しいセキュリティグループにコピーされます。優先度が 100 を超えるルールは 100 に変更されます。
[このセキュリティグループのタグをクローンされたセキュリティグループにコピー]: ソースセキュリティグループのタグを新しいセキュリティグループにコピーするかどうかを指定します。
ルールのインポートとエクスポート
インポートおよびエクスポート機能を使用して、ルールをバックアップ、復元、または移行できます。
ルールのインポート
インポートするセキュリティグループルールは、次の要件を満たす必要があります:
ファイル形式: JSON または CSV。
ルール数: 一度に最大 200 個のルールをインポートできます。
ルールの優先度: 1 から 100。優先度が 100 を超えるルールは無視されます。
リージョン間でルールをインポートする場合、権限付与オブジェクトがセキュリティグループまたはプレフィックスリストであるセキュリティグループルール、またはポート範囲がポートリストであるセキュリティグループルールはインポートできません。
ECS コンソール - セキュリティグループに移動します。セキュリティグループの詳細ページで、[アクセスルール] セクションの [セキュリティグループルールのインポート] をクリックします。
[セキュリティグループルールのインポート] ページで、[ファイルの選択] をクリックしてローカルの JSON または CSV ファイルを選択し、[OK] をクリックします。
インポートに失敗した場合は、警告アイコンにカーソルを合わせると、失敗の理由を表示できます。
ルールのエクスポート
ECS コンソール - セキュリティグループに移動します。ターゲットセキュリティグループの詳細ページで、[アクセスルール] エリアの [エクスポート] をクリックします。エクスポートされたファイルは、次の形式で名前が付けられます:
JSON 形式: ecs_${region_id}_${groupID}.json。
例: リージョン ID が
cn-qingdaoで、セキュリティグループ ID がsg-123の場合、エクスポートされたファイル名はecs_cn-qingdao_sg-123.jsonになります。CSV 形式: ecs_sgRule_${groupID}_${region_id}_${time}.csv。
例: リージョン ID が
cn-qingdao、セキュリティグループ ID がsg-123、エクスポート日が2020-01-20の場合、エクスポートされたファイル名はecs_sgRule_sg-123_cn-qingdao_2020-01-20.csvになります。
セキュリティグループの削除
セキュリティグループの削除は元に戻せない操作です。セキュリティグループ内のすべてのルールは完全に削除されます。セキュリティグループを削除する前に、その構成をバックアップしたことを確認してください。
コンソール
ECS コンソール - セキュリティグループに移動します。ターゲットセキュリティグループの [アクション] 列で、[削除] をクリックします。
[セキュリティグループの削除] ダイアログボックスで、情報を確認し、[OK] をクリックします。
セキュリティグループがどの ECS インスタンスまたは ENI にも関連付けられていないにもかかわらず、[セキュリティグループの削除] ダイアログボックスに [削除できません] と表示される場合は、[強制削除を試す] をクリックできます。
API
DeleteSecurityGroup を呼び出してセキュリティグループを削除します。
次のシナリオでは、セキュリティグループを削除できません:
セキュリティグループが ECS インスタンスまたは ENI に関連付けられています。まず関連付けを解除する必要があります。
セキュリティグループが別のセキュリティグループのルールによって承認されています。まず承認ルールを削除する必要があります。
管理対象セキュリティグループは表示のみ可能で、削除はできません。
削除保護が有効になっています。まず削除保護を無効にしてから、再試行する必要があります。削除保護を無効にできない場合、セキュリティグループを削除することはできません。
DeleteSecurityGroup
InvalidOperation.DeletionProtection[削除保護] が表示される場合、セキュリティグループの削除保護が有効になっています。
同じセキュリティグループ内のインスタンス間のネットワーク接続
デフォルトでは、同じ基本セキュリティグループ内の ECS インスタンスは、内部ネットワークを介して相互に通信できます。セキュリティを向上させるために、内部アクセスポリシーを内部分離に変更して、インスタンス間の通信を拒否できます。
エンタープライズセキュリティグループは、内部接続ポリシーの変更をサポートしていません。
インスタンスが複数のセキュリティグループに関連付けられている場合、少なくとも 1 つのセキュリティグループが内部アクセスを許可していれば、内部ネットワークを介して他のインスタンスと通信できます。
セキュリティグループの内部アクセスポリシーがアクセスを拒否するように設定されている場合でも、セキュリティグループルールを設定して特定のインスタンス間の通信を許可できます。
コンソール
ECS コンソール - セキュリティグループページに移動し、管理するセキュリティグループの ID をクリックして詳細ページを開きます。
[セキュリティグループ詳細] ページの [基本情報] セクションで、[内部ネットワーク接続ポリシーの変更] をクリックします。
セキュリティグループの内部接続ポリシーは [内部分離] に設定されています。
API
ModifySecurityGroupPolicy を呼び出して、基本セキュリティグループの内部接続ポリシーを変更します。
異なるセキュリティグループ内のインスタンス間のネットワーク接続
ルールで別のセキュリティグループを権限付与オブジェクトとして設定して、そのセキュリティグループ内のインスタンスが現在のセキュリティグループ内のインスタンスに内部ネットワーク経由でアクセスできるようにすることができます。たとえば、セキュリティグループ A のインバウンドルールの権限付与オブジェクトとしてセキュリティグループ B を設定すると、セキュリティグループ B のインスタンスは内部ネットワーク経由でセキュリティグループ A のインスタンスにアクセスできます。
エンタープライズセキュリティグループは、別のセキュリティグループを権限付与オブジェクトとして指定するルールをサポートしていません。

コンソール
ECS コンソール - セキュリティグループページに移動し、管理するセキュリティグループの ID をクリックして詳細ページを開きます。
ターゲットの [セキュリティグループ詳細] ページで、方向を選択し、[ルールの追加] をクリックします。
[セキュリティグループルールの作成] ページで、[ソース] を [セキュリティグループ] または [アカウント間セキュリティグループ] に設定します。
API
AuthorizeSecurityGroup を呼び出し、インバウンドルールで SourceGroupId パラメーターを設定して、指定されたセキュリティグループからのアクセスを許可します。
AuthorizeSecurityGroupEgress を呼び出し、アウトバウンドルールで DestGroupId パラメーターを設定して、指定されたセキュリティグループへのアクセスを許可します。
本番アプリケーションの提案
セキュリティグループの計画
単一責任: Web サービス、データベース、キャッシュなど、各ビジネスシナリオに個別のセキュリティグループを使用します。
環境の分離: 本番環境とテスト環境には別々のセキュリティグループを使用します。それらを混在させないでください。
命名規則:
Environment-Application-Purpose-sg形式を使用します。例:prod-mysql-db-sg。
ルールの設定
最小権限: 必要なソースに対して必要なポートのみを開きます。SSH (ポート 22) や RDP (ポート 3389) などの管理ポートを
0.0.0.0/0に開かないでください。これらのポートへのアクセスは、信頼できる静的 IP アドレスに制限する必要があります。デフォルトで拒否: デフォルトですべてのインバウンドトラフィックを拒否します。必要な場合にのみ、特定のソースから特定のポートへのアクセスを許可するインバウンドルールを追加します。
ルールの優先度の競合: インスタンスが複数のセキュリティグループに関連付けられている場合、優先度の低い許可ルールは、優先度の高い拒否ルールによって上書きされます。ネットワーク接続の問題をトラブルシューティングするときは、関連するすべてのセキュリティグループを確認してください。
変更管理
本番環境の直接変更を避ける: 本番環境でセキュリティグループを変更することは、リスクの高い操作です。代わりに、セキュリティグループをクローンし、テスト環境で変更をテストします。変更がインスタンストラフィックを中断しないことを確認した後、本番環境のセキュリティグループに適用できます。
課金ルール
セキュリティグループは無料です。
制限
制限 | 基本セキュリティグループの制限 | エンタープライズセキュリティグループの制限 |
特定のリージョンにおける単一の Alibaba Cloud アカウントのセキュリティグループの最大合計数 | クォータ ID | 基本セキュリティグループと同じです。 |
単一の ENI に関連付けることができるセキュリティグループの数 | 10 | 基本セキュリティグループと同じです。 |
単一の ENI に関連付けられたすべてのセキュリティグループのルールの最大合計数 (インバウンドおよびアウトバウンドルールを含む) | 1,000 | 基本セキュリティグループと同じです。 |
権限付与オブジェクトがセキュリティグループである単一のセキュリティグループ内のルールの数 | 20 | 0。エンタープライズセキュリティグループでは、別のセキュリティグループを承認するルールを追加することはできません。エンタープライズセキュリティグループは、他のセキュリティグループのルールの権限付与オブジェクトとして使用することもできません。 |
単一の VPC タイプのセキュリティグループに含めることができる VPC タイプの ECS インスタンスの数 | 固定されていません。この数は、セキュリティグループに含めることができるプライベート IP アドレスの数に影響されます。 | 無制限 |
特定のリージョンにおける単一の Alibaba Cloud アカウントに対して、単一の VPC タイプのセキュリティグループに含めることができるプライベート IP アドレスの数 | 6,000 説明
| 65,536 説明 使用される IP アドレスの数は、インスタンスのプライマリおよびセカンダリネットワークインターフェースの両方を含む、セキュリティグループに関連付けられた ENI の総数を表します。 |
パブリックアクセスポート | セキュリティ上の理由から、ECS インスタンスのポート 25 はデフォルトで制限されています。メールを送信するには、SSL 暗号化ポート (通常はポート 465) を使用することをお勧めします。 | 制限は基本セキュリティグループの制限と同じです。 |