セキュリティグループは、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コンソールのセキュリティグループに対してこのセキュリティグループはクラウドサービスで管理されており、変更できませんというようなメッセージが表示されている場合、セキュリティグループはマネージドセキュリティグループです。 管理対象セキュリティグループはアカウントに属し、アカウントを使用して表示できますが、管理できるのはクラウドサービスのみです。 詳細については、「管理対象セキュリティグループ」をご参照ください。
セキュリティグループを単独で、または他の方法と一緒に適切に使用して、ECSインスタンスのセキュリティ状態を改善します。 詳細については、「ベストセキュリティプラクティス」をご参照ください。
ベストプラクティス
このセクションでは、セキュリティグループを使用するためのベストプラクティスを示します。
- ビジネス要件に基づいて、セキュリティグループの名前、説明、タグ、およびリソースグループを指定できます。 検索と管理を容易にするために、設定で有益なデータを指定することをお勧めします。
- ホワイトリストと同じ方法でセキュリティグループを使用します。 デフォルトでは、セキュリティグループへのすべてのアクセスは拒否されます。 セキュリティグループにルールを追加して、指定したポートの指定した許可オブジェクトからのアクセスを許可できます。
- セキュリティグループルールを追加するときは、最小特権の原則に従います。 たとえば、Linuxインスタンスでポート22への接続を確立できるようにする場合は、すべてのIPアドレス (
0.0.0.0/0
) ではなく特定のIPアドレスからのアクセスのみを許可するルールを追加することを推奨します。 - 基本的なセキュリティグループの内部アクセス制御ポリシーを構成するときは、最小特権の原則に従います。 基本セキュリティグループのグループ内通信が必要ない場合は、セキュリティグループの内部アクセス制御ポリシーを設定して、セキュリティグループ内のECSインスタンスを相互に分離します。
- 各セキュリティグループのルールを簡潔に保ちます。 セキュリティグループの目的に基づいてセキュリティグループにルールを追加し、ECSインスタンスをセキュリティグループに追加します。 1つのセキュリティグループに多数のルールを追加すると、セキュリティグループの管理が難しくなります。 セキュリティグループでヘルスチェックを実行して、セキュリティグループ内の冗長なルールを特定できます。 詳細については、「冗長セキュリティグループルールの特定」をご参照ください。
- 異なる目的を果たすECSインスタンスを異なるセキュリティグループに追加し、各セキュリティグループのルールを他のグループとは別に維持します。 たとえば、インターネット経由でアクセスできる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の関連付けを解除します。
- ECSインスタンスまたはENIに関連付けられているセキュリティグループを置き換える
- ModifySecurityGroupAttribute: セキュリティグループの名前または説明を変更します。
参考資料
セキュリティグループクォータの詳細については、「制限」をご参照ください。