セキュリティグループは、Elastic Compute Service (ECS) インスタンスのインバウンドトラフィックとアウトバウンドトラフィックを制御できる仮想ファイアウォールとして機能します。 グループ内のECSインスタンスへのトラフィックを制御するセキュリティグループのインバウンドルールと、インスタンスからのトラフィックを制御するアウトバウンドルールを設定できます。
ECSインスタンスを作成するときに、インスタンスに1つ以上のセキュリティグループを指定できます。 ECSインスタンスの作成時にセキュリティグループを指定しない場合、デフォルトセキュリティグループが使用されます。 ECSインスタンスに関連付けられているセキュリティグループ内のルールは、特定のポリシーに基づいてソートされ、同時に有効になり、インスタンスのトラフィックを制御します。
セキュリティグループのルールを作成、変更、または削除できます。 設定は、セキュリティグループ内のすべてのECSインスタンスに対して自動的に有効になります。 詳細については、「セキュリティグループルール」をご参照ください。 ECSインスタンスに関連付けられているセキュリティグループを変更できます。 インスタンスに適用されるセキュリティグループルールは自動的に変更されます。 ECSインスタンスに関連付けられているセキュリティグループのルールは、インスタンスのプライマリelastic network interface (ENI) に適用されます。 仮想プライベートクラウド (VPC) に他のENIに関連付けられているECSインスタンスをデプロイする場合、ENIに異なるセキュリティグループを指定できます。 セキュリティグループは、セキュリティグループが属するVPCでのみ有効になります。 VPCにECSインスタンスを作成する場合、インスタンスのVPCに属するvSwitchとセキュリティグループを指定する必要があります。
セキュリティグループには、グループ内通信とグループ間通信の2つの主な機能があります。 セキュリティグループがグループ内通信をサポートしている場合、セキュリティグループ内のECSインスタンスは内部ネットワークを介して相互に通信できます。 セキュリティグループがグループ間通信設定をサポートしている場合、セキュリティグループ内にルールを作成するときに、ルール内の許可オブジェクト (送信元または送信先) として別のセキュリティグループを参照して、内部ネットワークを介したセキュリティグループ内のECSインスタンスからのアクセスを許可または拒否できます。 セキュリティグループは、さまざまなシナリオに適した基本セキュリティグループと高度なセキュリティグループに分類できます。 両方のタイプは無料で提供されます。 基本的なセキュリティグループは、上記の2つの機能をサポートします。 高度なセキュリティグループと比較して、基本的なセキュリティグループに含まれるプライベートIPアドレスの数が少なくなります。 高度なセキュリティグループには、より多くのプライベートIPアドレスを含めることができますが、グループ内通信またはグループ間通信構成はサポートしていません。 ECSインスタンスの作成時に複数のセキュリティグループを指定した場合、各ENIは1種類のセキュリティグループのみを使用できます。 ビジネス要件に基づいてセキュリティグループのタイプを選択することを推奨します。 詳細については、「基本および高度なセキュリティグループ」をご参照ください。
DescribeSecurityGroups操作の応答でServiceManaged
の値がTrue
の場合、またはECSコンソールのセキュリティグループに対してこのセキュリティグループはクラウドサービスで管理されており、変更できませんというようなメッセージが表示された場合、そのセキュリティグループはマネージドセキュリティグループです。 管理対象セキュリティグループはAlibaba Cloudアカウントに属し、アカウントを使用して表示できますが、管理できるのはクラウドサービスのみです。 詳細については、「管理対象セキュリティグループ」をご参照ください。
セキュリティグループを削除するためにDeleteSecurityGroup操作を呼び出したときにInvalidOperation.DeletionProtection
が返された場合、またはECSコンソールでセキュリティグループを削除したときに削除保護に似たメッセージが表示された場合、セキュリティグループの削除保護機能が有効になっています。 Container Service for Kubernetes (ACK) クラスターを作成すると、関連付けられたセキュリティグループの削除保護機能が有効になり、誤って削除されないようになります。 セキュリティグループの削除保護機能を手動で無効にすることはできません。 削除保護機能は、ACKクラスターが削除された後にのみ自動的に無効にできます。 詳細については、「ACKクラスターにアクセス制御を適用するセキュリティグループルールの設定」をご参照ください。
セキュリティグループを単独で、または他の方法と一緒に適切に使用して、ECSインスタンスのセキュリティを向上させます。 詳細は、「ECSインスタンスのセキュリティ」をご参照ください。
ベストプラクティス
ここでは、セキュリティグループを使用するためのベストプラクティスについて説明します。
計画
ビジネス要件に基づいて、セキュリティグループの名前、説明、タグ、およびリソースグループを指定できます。 セキュリティグループの検索と管理に役立つ情報を設定に指定することを推奨します。
ホワイトリストの使用
デフォルトでは、セキュリティグループへのすべてのアクセスは拒否されます。 セキュリティグループにルールを追加して、特定のポートの特定の許可オブジェクトからのアクセスを許可できます。
セキュリティグループルールを追加するときに最小権限の原則に従う
たとえば、Linuxインスタンスでポート22への接続を確立できるようにする場合は、すべてのIPアドレス (
0.0.0.0/0
) ではなく特定のIPアドレスからのアクセスのみを許可するルールを追加することを推奨します。最小特権の原則に従う
基本的なセキュリティグループのグループ内通信が必要ない場合は、セキュリティグループの内部アクセス制御ポリシーを設定して、セキュリティグループ内のECSインスタンスを相互に分離します。
各セキュリティグループのルールを簡潔に
セキュリティグループの目的に基づいてセキュリティグループにルールを追加し、ECSインスタンスをセキュリティグループに追加します。 1つのセキュリティグループに多数のルールを追加すると、セキュリティグループの管理が難しくなります。 セキュリティグループでヘルスチェックを実行して、セキュリティグループ内の冗長なルールを特定できます。 詳細については、「冗長セキュリティグループルールの特定」をご参照ください。
異なる目的を提供するインスタンスを異なるセキュリティグループに追加し、各グループのルールを他のグループとは別に管理します
たとえば、インターネット経由でアクセスできるECSインスタンスを同じセキュリティグループに追加し、ポート80やポート443など、外部サービスを提供する特定のポートでのみアクセスを許可できます。 デフォルトでは、他のポートへのアクセスは拒否されます。 インターネット経由でアクセス可能なECSインスタンスがMySQLやRedisなどの他のサービスを提供しないようにするには、インターネット経由でアクセスできないインスタンスに内部サービスをデプロイし、そのインスタンスを別のセキュリティグループに追加することを推奨します。
運用環境内で使用されるセキュリティグループを変更しないでください
セキュリティグループのクローンを作成し、テスト用にクローンセキュリティグループを変更できます。 クローンセキュリティグループを変更した後、クローンセキュリティグループ内のECSインスタンスが期待どおりに実行される場合は、元のセキュリティグループのルールを変更します。
説明単一のECSインスタンスを複数のセキュリティグループに関連付けることができます。 インスタンスに適用されるすべてのインバウンドルールまたはアウトバウンドルールを確認する方法については、「複数のセキュリティグループのルールの表示」をご参照ください。
操作
ECSコンソールの使用
ECS APIの使用
CreateSecurityGroup: セキュリティグループを作成します。
DescribeSecurityGroups: セキュリティグループを照会します。
セキュリティグループルールの追加
AuthorizeSecurityGroup: インバウンドセキュリティグループルールを追加します。
AuthorizeSecurityGroupEgress: アウトバウンドセキュリティグループルールを追加します。
DescribeSecurityGroupAttribute: セキュリティグループルールを照会します。
セキュリティグループルールの変更
ModifySecurityGroupRule: インバウンドセキュリティグループルールを変更します。
ModifySecurityGroupEgressRule: アウトバウンドセキュリティグループルールを変更します。
セキュリティグループルールの削除
RevokeSecurityGroup: インバウンドセキュリティグループルールを削除します。
RevokeSecurityGroupEgress: アウトバウンドセキュリティグループルールを削除します。
ModifySecurityGroupPolicy: 基本セキュリティグループの内部アクセス制御ポリシーを変更します。
DeleteSecurityGroup: セキュリティグループを削除します。
関連付けられたセキュリティグループ、ECSインスタンス、およびENIの管理
ECSインスタンスまたはENIに関連付けられているセキュリティグループを置き換える
ModifyInstanceAttribute: VPCにデプロイされているECSインスタンスに関連付けられているセキュリティグループを置き換えます。
ModifyNetworkInterfaceAttribute: ENIに関連付けられているセキュリティグループを置き換えます。
ECSインスタンスまたはENIをセキュリティグループに追加または削除する
JoinSecurityGroup: ECSインスタンスまたはENIをセキュリティグループに関連付けます。
LeaveSecurityGroup: ECSインスタンスまたはENIをセキュリティグループから分離します。
ModifySecurityGroupAttribute: セキュリティグループの名前または説明を変更します。
参考資料
セキュリティグループクォータの詳細については、「制限」をご参照ください。