セキュリティグループは、Elastic Compute Service (ECS) インスタンスの仮想ファイアウォールとして機能します。セキュリティグループとそのルールを管理することで、詳細なネットワークセキュリティ、隔離、およびアクセスの制御を実装できます。
次の図は、シナリオの例を示しています。2 つのセキュリティグループルールが設定されており、許可された IP アドレスのみがインスタンスをリモートで管理できるようにし、インスタンスがインターネット上のリスクの高いサイトにアクセスするのをブロックします。
インバウンドルール:特定の IP アドレス (
121.XX.XX.XX) が Secure Shell Protocol (SSH) (ポート 22) を介してインスタンスにアクセスすることを許可します。アウトバウンドルール:インスタンスが既知のリスクの高い IP アドレス (
XX.XX.XX.XX) にアクセスすることを拒否します。

新しいインスタンスのセキュリティグループの設定
インスタンス購入ページへの移動:ECS コンソール - カスタム起動ページに移動し、インスタンスの構成を選択します。
新しいセキュリティグループの作成:[ネットワークとセキュリティグループ] セクションで、基本セキュリティグループまたはエンタープライズセキュリティグループを作成し、その名前を編集します。
一般的なルールのクイック設定:インスタンスを購入する際、コンソールは一般的なポートとプロトコルを提供します。チェックボックスを選択して、すべての IP アドレス (
0.0.0.0/0) からのトラフィックを宛先ポートに許可したり、指定されたプロトコルに従うトラフィックがインスタンスにアクセスすることを許可したりできます。
インスタンスの購入時にセキュリティグループを作成する際、詳細なルールを設定することはできません。ルールはインスタンスの作成後に設定できます。クイック設定中に、SSH (22) や RDP (3389) などの一般的なリモート接続ポートのようなインスタンス管理用のポートを選択した場合、インスタンス作成後に、安全な IP アドレスからのみアクセスを許可するようにセキュリティグループルールを設定する必要があります。
作成後のセキュリティグループルールの変更、追加、または削除:インスタンスを購入した後、セキュリティグループルールの情報を利用して、新しいインスタンスのセキュリティグループルールの追加、変更、または削除ができます。
インスタンスへのアクセス制限やデータベースのセキュリティポリシーの定義など、さまざまなビジネスシナリオに応じたセキュリティグループルールの設定方法については、「セキュリティグループアプリケーションガイドと例」をご参照ください。
セキュリティグループの管理
ECS インスタンスとともに作成されたセキュリティグループのルールは、作成後に変更できます。また、セキュリティグループを個別に作成・管理し、既存の ECS インスタンスに関連付けることもできます。
セキュリティグループの作成
コンソール
ECS コンソール - セキュリティグループページに移動し、[セキュリティグループの作成] をクリックします。
セキュリティグループ名と Virtual Private Cloud を設定します。
セキュリティグループの種類として、[基本セキュリティグループ] または エンタープライズセキュリティグループ を選択します。
セキュリティグループルールを追加した後、[作成] をクリックします。
API
CreateSecurityGroup を呼び出してセキュリティグループを作成します。
新しく作成された基本セキュリティグループにルールが設定されていない場合、デフォルトでは同じセキュリティグループ内の他の ECS インスタンスからのトラフィックを許可し、他のすべてのインバウンドトラフィックを拒否し、すべてのアウトバウンドトラフィックを許可します。
セキュリティグループルールの追加、変更、または削除
セキュリティグループルールは、ネットワークトラフィックがセキュリティグループへのインバウンドまたはアウトバウンドを許可されるために満たすべき条件を定義します。ルールを設定する際には、トラフィックの方向、宛先、優先度などのパラメーターを指定する必要があります。セキュリティグループルールはステートフルであるため、インバウンドルールを設定するだけで、セキュリティグループは対応するアウトバウンドの応答トラフィックを自動的に許可します。
コンソール
ECS コンソール - セキュリティグループページに移動し、対象のセキュリティグループの ID をクリックして詳細ページを開きます。
セキュリティグループルールを設定します。
ルールの追加:対象のセキュリティグループの詳細ページで、ルールの方向を選択し、[ルールの追加] をクリックします。
ルールの変更:対象のセキュリティグループの詳細ページで、[アクセスルール] エリアで対象のルールを見つけ、[操作] 列の [編集] をクリックします。
ルールの削除:セキュリティグループの詳細ページで、[アクセスルール] エリアで、削除するルールを見つけ、[操作] 列の [削除] をクリックします。
API
AuthorizeSecurityGroup を呼び出してインバウンドルールを追加します。
AuthorizeSecurityGroupEgress を呼び出してアウトバウンドルールを追加します。
ModifySecurityGroupRule を呼び出してインバウンドルールを変更します。
ModifySecurityGroupEgressRule を呼び出してアウトバウンドルールを変更します。
RevokeSecurityGroup を呼び出してインバウンドルールを削除します。
RevokeSecurityGroupEgress を呼び出してアウトバウンドルールを削除します。
同じ優先度レベルでは、拒否ルールが優先されます。特定のネットワークトラフィックについては、セキュリティグループはデフォルトでトラフィックを許可します。
本番環境でのセキュリティリスクを軽減するため、最小権限の原則 (ホワイトリスト) に基づいてセキュリティグループルールを設定してください。ECS インスタンスへのログインや管理などのリスクの高いシナリオでは、すべてのソースからのアクセスを許可しないようにしてください (0.0.0.0/0 または ::/0 を使用しない)。
本番環境でセキュリティグループを直接変更することは避けてください。まずセキュリティグループをクローンし、ステージング環境で変更をテストして、インスタンスのトラフィックが正常であることを確認してください。その後、本番環境でセキュリティグループルールを変更できます。
インスタンスへのセキュリティグループの関連付け
セキュリティグループを ECS インスタンスに関連付けると、実際にはセキュリティグループを ECS インスタンスのプライマリネットワークインターフェースコントローラー (NIC) に関連付けることになります。
コンソール
ECS コンソール - インスタンスページに移動し、対象のインスタンスの ID をクリックして詳細ページを開きます。
インスタンスの詳細ページで、[セキュリティグループ] タブに切り替え、[セキュリティグループの変更] をクリックして、インスタンスのセキュリティグループを追加または削除します。インスタンスに複数のセキュリティグループが関連付けられている場合、それらのルールはマージされ、優先順位に従って適用されます。
API
ModifyInstanceAttribute を呼び出して、ECS インスタンスに複数のセキュリティグループを設定します。
JoinSecurityGroup を呼び出して、ECS インスタンスを指定されたセキュリティグループに追加します。
LeaveSecurityGroup を呼び出して、ECS インスタンスを指定されたセキュリティグループから削除します。
セカンダリ ENI へのセキュリティグループの関連付け
セキュリティグループは、ECS インスタンスの Elastic Network Interface (ENI) に適用されます。インスタンスに複数の ENI がある場合、ENI に異なるセキュリティグループを関連付け、異なるセキュリティグループルールを設定することで、内部ネットワークトラフィックの詳細な制御とサービス分離を実装できます。
コンソール
ECS コンソール - Elastic Network Interfaceページに移動し、対象のセカンダリ ENI の ID をクリックして詳細ページを開きます。
[セキュリティグループの変更] をクリックし、関連付けるセキュリティグループを選択して、[OK] をクリックします。
API
JoinSecurityGroup を呼び出して、ENI を指定されたセキュリティグループに追加します。
LeaveSecurityGroup を呼び出して、ENI を指定されたセキュリティグループから削除します。
ModifyNetworkInterfaceAttribute を使用して、ENI に複数のセキュリティグループを指定できます。
プレフィックスリストの使用
複数の IP アドレスセグメントへのアクセスを許可するには、プレフィックスリストを使用して一元管理します。これにより、セキュリティグループルールの設定が簡素化され、一括メンテナンスの効率が向上します。
コンソール
プレフィックスリストを作成します:
ECS コンソール - プレフィックスリストに移動します。
必要に応じて対象のタブを選択し、[プレフィックスリストの作成] をクリックします。
プレフィックスリストを参照するセキュリティグループの場合、ルール数はリストに設定された最大エントリ数に基づいて計算されます。
対象のセキュリティグループの詳細ページの [アクセスルール] セクションで、ルールを追加または変更します:
[ソース] をプレフィックスリストに設定し、対象のプレフィックスリストを選択します。
API
CreatePrefixList を呼び出してプレフィックスリストを作成します。リストが作成された後、DescribePrefixListAttributes を呼び出してプレフィックスリストの詳細をクエリします。
AuthorizeSecurityGroup を呼び出して、SourcePrefixListId パラメーターを設定することで、プレフィックスリストからのアクセスを許可するインバウンドルールを追加します。
AuthorizeSecurityGroupEgress を呼び出して、DestPrefixListId パラメーターを設定することで、プレフィックスリストへのアクセスを許可するアウトバウンドルールを追加します。
セキュリティグループのクローン
同じ設定のセキュリティグループを複数一括で作成する必要がある場合や、リージョン間またはネットワークタイプ間のレプリケーションやバックアップを行う必要がある場合は、セキュリティグループのクローン機能を使用できます。クローンが成功すると、新しいセキュリティグループがターゲットリージョンのセキュリティグループリストに表示されます。
セキュリティグループに移動し、対象のセキュリティグループの [操作] 列にある [セキュリティグループのクローン] をクリックします。
ターゲットセキュリティグループを設定します。クローン後、新しいセキュリティグループはターゲットリージョンのセキュリティグループリストに表示されます。
[VPC ID]:新しいセキュリティグループのネットワークタイプ。クラシックネットワークまたは特定の VPC を選択します。
[ルールを保持]:元のセキュリティグループのすべてのルールを保持するには、このオプションを選択します。優先度が 100 を超えるルールは 100 に調整されます。
[このセキュリティグループからクローンされたセキュリティグループにタグをコピー]:ソースセキュリティグループから新しいセキュリティグループにタグをコピーするかどうかを選択します。
冗長なルールの確認
セキュリティグループのヘルスチェック機能は、冗長なルールを検出できます。あるルール (ルール A) の条件が別のルール (ルール B) に完全に含まれ、かつルール A の優先度がルール B の優先度より高くない場合、ルール A は冗長と見なされます。冗長なルールはセキュリティグループのルールクォータを消費します。ルールの上限に達して新しいルールを追加できなくなるのを避けるため、定期的に削除する必要があります。
ECS コンソール - セキュリティグループに移動します。対象のセキュリティグループの詳細ページの [アクセスルール] タブで、[ヘルスチェック] をクリックします。
[ヘルスチェック] ダイアログボックスで、冗長なルールを選択し、[上記のルールを削除] をクリックします。
ルールのインポートまたはエクスポート
インポートおよびエクスポート機能を使用して、ルールのバックアップ、回復、または移行ができます。
ルールのインポート
インポートされるセキュリティグループルールは、次の要件を満たす必要があります:
ファイル形式:JSON または CSV。
ルール数:一度に最大 200 ルールまでインポートできます。
ルールの優先度:1 から 100。優先度が 100 を超えるルールは無視されます。
リージョンをまたいでルールをインポートする場合、セキュリティグループやプレフィックスリストを承認するセキュリティグループルールはサポートされません。ポート範囲にポートリストを指定するセキュリティグループルールもサポートされません。
ECS コンソール - セキュリティグループに移動します。セキュリティグループの詳細ページで、[アクセスルール] セクションに移動し、[セキュリティグループルールのインポート] をクリックします。
[セキュリティグループルールのインポート] ページで、[ファイルの選択] をクリックし、ローカルの JSON または CSV ファイルを選択して、[確認] をクリックします。
インポートに失敗した場合は、警告アイコンにカーソルを合わせると理由が表示されます。
ルールのエクスポート
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となります。
セキュリティグループスナップショット
セキュリティグループスナップショットは、セキュリティグループルールを自動的にバックアップできます。セキュリティグループルールが変更されると、システムは自動的にスナップショットを作成します。スナップショットを使用して、特定の時点からセキュリティグループルールを回復し、偶発的な操作によるルールの損失を防ぐことができます。
セキュリティグループルールが変更された後、システムは 5 分後にスナップショットを作成します。5 分以内に複数の変更が発生した場合、システムは最初の変更前のルールに基づいて 1 つのスナップショットのみを作成します。
セキュリティグループスナップショットは、Object Storage Service (OSS) を使用してバックアップデータを保存します。OSS は従量課金制のサービスです。セキュリティグループスナップショットを使用すると、対応する OSS のストレージ料金とリクエスト料金が発生します。
スナップショットポリシーの作成
セキュリティグループスナップショットページで、[セキュリティグループスナップショットポリシーの作成] をクリックします。
[スナップショットポリシーの作成] ダイアログボックスで、次の設定を構成します:
[ポリシー名]:スナップショットポリシーの名前を入力します。
[ポリシーのステータス]:ポリシーのステータス。有効な値は [有効] と [無効] です。ポリシーが有効な場合にのみ、関連付けられたセキュリティグループのスナップショットが作成されます。
[スナップショットの保持期間]:スナップショットを保持する日数。値は 1 から 30 日までで、デフォルトは 1 日です。保持期間が過ぎるとスナップショットは自動的に削除されます。
[OSS ストレージ設定]:スナップショットデータを保存する OSS バケットを指定します。バケットが指定されていない場合、システムはデフォルトのバケットを使用します。
[OK] をクリックします。
初めてスナップショットポリシーを作成する際、システムはサービスリンクロール (SLR)
ALIYUNSECURITYGROUPSNAPSHOTROLEに OSS バケットへのアクセス権を付与するように求めます。このロールが既に存在する場合、再度権限を付与する必要はありません。
セキュリティグループとスナップショットポリシーの関連付け
スナップショットポリシーを作成した後、セキュリティグループルールをバックアップ開始するには、それをセキュリティグループに関連付ける必要があります。
セキュリティグループをスナップショットポリシーに関連付けると、システムはそのセキュリティグループのスナップショットを直ちに作成します。
ECS コンソール - セキュリティグループスナップショットに移動し、対象のスナップショットポリシーを見つけ、[操作] 列の [セキュリティグループの関連付け] をクリックします。
[セキュリティグループの関連付け] ダイアログボックスで、セキュリティグループを選択します。
1 つのスナップショットポリシーは最大 10 個のセキュリティグループに関連付けることができます。1 つのセキュリティグループは、異なるポリシーを持つ複数のスナップショットポリシーに関連付けることができます。
[OK] をクリックして関連付けを完了します。
スナップショットからのルールの回復
回復操作は直ちに有効になります。現在のすべてのルールはスナップショット内のルールで完全に上書きされます。回復は元に戻せません。
ECS コンソール - セキュリティグループページに移動し、対象のセキュリティグループの ID をクリックして詳細ページを開きます。
セキュリティグループの詳細ページで、[スナップショットリスト] タブに切り替え、対象のスナップショットの [操作] 列で [スナップショットの復元] をクリックします。
[セキュリティグループスナップショットの復元] ダイアログボックスで、復元の詳細を確認します。
[インバウンド] および [アウトバウンド] タブで、[現在のセキュリティグループルール] と [回復後のセキュリティグループルール] を比較できます。
情報が正しいことを確認し、[OK] をクリックします。
セキュリティグループの削除
セキュリティグループの削除は元に戻せない操作であり、セキュリティグループ内のすべてのルールが永久に削除されます。この操作を実行する前に、関連する設定を必ずバックアップしてください。
コンソール
ECS コンソール - セキュリティグループに移動し、対象のセキュリティグループの [操作] 列にある [削除] をクリックします。
[セキュリティグループの削除] ダイアログボックスで、詳細を確認し、[OK] をクリックします。
セキュリティグループがどの ECS インスタンスまたは ENI にも関連付けられていないにもかかわらず、[セキュリティグループの削除] ダイアログボックスに [削除できません] と表示される場合は、[強制削除を試す] をクリックできます。
API
DeleteSecurityGroup を呼び出してセキュリティグループを削除します。
以下のシナリオでは、セキュリティグループを削除できません:
ECS インスタンスまたは ENI に関連付けられています。まず関連付けを解除する必要があります。
別のセキュリティグループルールによって承認されています。まず承認ルールを削除する必要があります。
管理対象セキュリティグループは表示専用であり、削除できません。
削除保護が有効になっています。削除保護を無効にしてから再試行してください。削除保護を無効にできない場合、セキュリティグループは削除できません。
DeleteSecurityGroup[削除保護] メッセージが表示された際に
InvalidOperation.DeletionProtection
セキュリティグループ内のインスタンス間のネットワーク通信
デフォルトでは、同じ基本セキュリティグループ内の ECS インスタンスは内部ネットワークを介して相互に通信できます。セキュリティを向上させるため、内部接続ポリシーを内部隔離に変更して、インスタンス間の内部ネットワーク通信を禁止することができます。
エンタープライズセキュリティグループは、内部アクセスポリシーの変更をサポートしていません。
インスタンスが複数のセキュリティグループに関連付けられている場合、いずれかのセキュリティグループの内部接続ポリシーが内部通信を許可するように設定されていれば、インスタンスは内部ネットワークを介して相互に通信できます。
セキュリティグループの内部接続ポリシーが内部隔離に設定されている場合でも、セキュリティグループルールを設定してインスタンス間の通信を許可することができます。
コンソール
ECS コンソール - セキュリティグループページに移動し、対象のセキュリティグループの ID をクリックして詳細ページを開きます。
[セキュリティグループの詳細] ページの [基本情報] セクションで、[グループ内ネットワーク接続ポリシーの変更] をクリックします。
セキュリティグループの内部ネットワーク接続ポリシーを [内部隔離] に設定します。
API
ModifySecurityGroupPolicy 操作を呼び出して、基本セキュリティグループのグループ内接続ポリシーを変更します。
異なるセキュリティグループ内のインスタンス間のネットワーク通信
ルール内で別のセキュリティグループを権限付与オブジェクトとして設定すると、その別のセキュリティグループ内のインスタンスが現在のセキュリティグループ内のインスタンスに内部ネットワーク経由でアクセスできるようになります。たとえば、図では、セキュリティグループ B がセキュリティグループ A のインバウンドルールの権限付与オブジェクトとして設定された後、セキュリティグループ 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 はデフォルトで制限されています。メールを送信するには、通常ポート 465 である Secure Sockets Layer (SSL) 暗号化ポートを使用してください。 | 基本セキュリティグループと同じ |