セキュリティグループは、Elastic Compute Service (ECS) インスタンスのインバウンドおよびアウトバウンドのトラフィックを制御する仮想ファイアウォールで、信頼レベルによってリソースをセキュリティドメインに分離します。
仕組み
各 ECS インスタンスは、少なくとも 1 つのセキュリティグループに属している必要があります。関連付けられたすべてのグループのルールが優先度に基づいて評価され、トラフィックが許可または拒否されます。
ルールは即時に有効になります。各ルールでは ソース (インバウンド)または宛先 (アウトバウンド)、ポート範囲、プロトコル、ポリシー ([許可]/[拒否])、および優先度を指定します。「セキュリティグループのルール」をご参照ください。
ルールはデフォルトでプライマリ ENI に適用されます。VPC 内のインスタンスにアタッチされたセカンダリ ENI の場合、異なるセキュリティグループを割り当てることで、きめ細かなトラフィック制御を実装できます。
制約:
セキュリティグループはリージョンおよび VPC に固有です。vSwitch とセキュリティグループは同じ VPC に属している必要があります。
インスタンスまたは ENI は、少なくとも 1 つのセキュリティグループに属している必要があります。グループのクォータについては、「制限」をご参照ください。
起動時にセキュリティグループが指定されていない場合、インスタンスは VPC のデフォルトセキュリティグループを使用します。詳細については、「デフォルトセキュリティグループ」をご参照ください。
次の図では、VPC に含まれる ECS 1 と ECS 2 は、両方ともプライマリ ENI を使用し、 セキュリティグループ 1 に属しています。セキュリティグループ 1 は、デフォルトでグループ内の接続が許可される 基本 セキュリティグループです。ECS 1 と ECS 2 は、デフォルトで内部ネットワーク経由で通信できます。カスタムルールは、インバウンドおよびアウトバウンドアクセスを制御します。たとえば、インバウンドルールで ICMP が許可されている場合、任意の IP アドレスからこれらのインスタンスに ping を実行できます。アウトバウンドルールが存在しない場合、すべてのアウトバウンドトラフィックが許可されます。
セキュリティグループのタイプ
基本セキュリティグループと高度セキュリティグループ
セキュリティグループは基本と拡張に分類され、どちらも無料です。API では、 SecurityGroupType パラメーターは 基本 (normal) および 拡張 (enterprise) です。
基本セキュリティグループ:インスタンスはデフォルトで通信できます (グループ内接続)。ルールでは、ソース/宛先として他のセキュリティグループ ID (例:sg-123) を参照できます。サポートするプライベート IP アドレス数が少なくなります。
高度セキュリティグループ:暗黙的なグループ内接続はありません。ルールでは、IP アドレスまたは CIDR ブロック (例:10.0.0.0/24) を使用する必要があります。サポートするプライベート IP アドレス数が多くなります。
ENI に関連付けられたセキュリティグループは、すべて同じタイプである必要があります。詳細については、「基本セキュリティグループと高度セキュリティグループ」をご参照ください。
カスタムセキュリティグループとマネージドセキュリティグループ
セキュリティグループは、カスタムまたはマネージドにも分類されます。どちらも基本または高度のいずれかになります。
カスタムセキュリティグループ:ECS コンソールまたは API を介してお客様が作成および管理します。ルールとライフサイクルはお客様が制御します。デフォルトセキュリティグループはカスタムセキュリティグループです。詳細については、「セキュリティグループの作成」をご参照ください。
マネージドセキュリティグループ:クラウドサービスによって作成され、読み取り専用です。詳細については、「マネージドセキュリティグループ」をご参照ください。
マネージドセキュリティグループを識別するには、 ServiceManaged が True を返すかどうかを DescribeSecurityGroups API で確認するか、コンソールに [クラウドサービスによる管理] バナーが表示されるかどうかを確認します。
ベストプラクティス
ECS インスタンスを保護するには、以下のガイドラインに従ってください:
命名規則の確立
セキュリティグループには、わかりやすい名前とタグを使用してください。一貫したタグ付けにより、大規模な環境でのフィルタリングと管理が簡素化されます。
セキュリティグループをホワイトリストとして扱う
デフォルトではすべてのアクセスを拒否し、特定のポートとソース IP のトラフィックを明示的に許可するルールのみを追加してください。
最小権限の原則 (PoLP)
必要最小限のアクセスのみを許可してください。たとえば、ポート 22 (SSH) を
0.0.0.0/0ではなく、オフィスの CIDR または踏み台ホストの IP に制限してください。最小権限の原則に従う
基本セキュリティグループ内のインスタンスが内部通信を必要としない場合は、グループ内ポリシーを内部アクセス拒否に設定してください。
ルールをシンプルに保つ
目的別にルールをグループ化し、個別のセキュリティグループにまとめてください。1 つのグループにルールが多すぎると、管理が複雑になります。ヘルスチェック機能を使用して、未使用のルールを削除してください。
アプリケーションロールによるインスタンスの分離
パブリックアクセス向けのインスタンスは、ポート 80/443 のみを開放するセキュリティグループに配置してください。データベースインスタンス (MySQL、Redis) は、パブリックインターネットアクセスをブロックし、アプリケーション層からのトラフィックのみを受け入れる別のグループに配置してください。
本番環境のセキュリティグループを直接変更しない
グループをステージング環境に複製し、変更を適用して検証してから、本番環境に適用してください。