セキュリティグループルールとマイクロセグメンテーションを使用して、Elastic Compute Service (ECS) インスタンス間の内部ネットワークアクセスを制御します。
セキュリティリスク
デフォルトでは、同じ VPC 内のすべての ECS インスタンスは完全なネットワーク接続性を持ちます。これにより、ラテラルムーブメントや不正アクセスなどのセキュリティリスクが生じます。例えば、侵害されたインスタンスは、同じネットワーク上の他のインスタンスに脅威を拡散させる可能性があります。内部サービスは認証や権限付与が脆弱なことが多く、攻撃の標的になりやすいです。
セキュリティグループを使用すると、サービスクラスターを隔離し、インスタンス間のラテラルアクセスをブロックして、これらのリスクを軽減できます。
ベストプラクティス
セキュリティグループによるサービスクラスターの隔離
データベースクラスターと Web サーバークラスターという 2 つの ECS インスタンスクラスターを例に考えます。データベースクラスター内のインスタンスは相互に通信する必要がありますが、Web サーバークラスター内のインスタンスは相互通信の必要がありません。ここでの目標は、Web サーバークラスターがデータベースクラスターのサービスポートにのみアクセスできるようにすることです。
データベースクラスターが 10.1.0.0/24 を使用し、Web サーバークラスターが 10.2.0.0/24 を使用すると仮定します。サービスポートは 5432 (PostgreSQL のデフォルト) です。目標は、Web サーバークラスターからデータベースクラスターのポート 5432 へのアクセスのみを許可し、他のすべてのアクセスを拒否することです。考えられる構成は次のとおりです:
-
セキュリティグループ A を作成します。優先度 1 で、10.2.0.0/24 から宛先ポート 5432 へのトラフィックを許可するインバウンドルールを追加します。データベースクラスターのインスタンスをセキュリティグループ A にアタッチします。
-
セキュリティグループ B を作成します。Web サーバークラスターのインスタンスをセキュリティグループ B にアタッチします。
注:デフォルトでは、セキュリティグループは明示的に許可されていないすべてのインバウンドトラフィックを拒否し、明示的に拒否されていないすべてのアウトバウンドトラフィックを許可します。したがって、セキュリティグループ A に追加の拒否ルールは不要であり、セキュリティグループ B に追加の許可ルールも不要です。
タグを使用すると、ECS インスタンスをセキュリティグループにバッチでアタッチできます。例えば、すべてのデータベースクラスターインスタンスとセキュリティグループ A に `cluster:PostgreSQL` というタグを追加し、タグ値をパラメーターとして ACS-ECS-CorrectSecurityGroupInstancesByTags OOS テンプレートを実行します。詳細については、「タグを使用して ECS インスタンスを検索し、同じタグを持つセキュリティグループに追加する」をご参照ください。
セキュリティグループ内でのインスタンスの隔離
前の例では、Web サーバーインスタンスは相互に通信する必要がなく、データベースクラスターも同期と管理のためにいくつかのポートを必要とするだけです。すべての内部通信を許可することは不要であり、ラテラルムーブメントのリスクを高めます。
マイクロセグメンテーションは、デフォルトでセキュリティグループ内のインスタンス間のすべての通信をブロックします。特定のポートを明示的に許可する必要があります。
-
エンタープライズセキュリティグループ:内部隔離が強制され、変更することはできません。
-
ベーシックセキュリティグループ:デフォルトでは、インスタンスは相互に通信できます。システムは最も高い優先度で非表示の許可ルールを追加するため、カスタムルールは外部トラフィックにのみ適用されます。内部通信を無効にするには、セキュリティグループの製品ページで内部接続ポリシーを内部隔離に変更します。
次に、必要な内部ポートでのトラフィックを明示的に許可します。例えば、データベースクラスター (10.1.0.0/24) が内部通信にポート 2379 を必要とする場合、セキュリティグループ A に、10.1.0.0/24 から宛先ポート 2379 へのインバウンドトラフィックを優先度 1 で許可するルールを追加します。
注:インスタンスが複数のセキュリティグループに属しており、そのうちの 1 つが内部トラフィックを許可し、もう 1 つが隔離を強制する場合、複合的な効果として内部トラフィックが許可されます。
複数のセキュリティグループの複合的な効果の確認
インスタンスは複数のセキュリティグループに属することができます。すべてのグループのルールが結合され、優先度順に適用されます。予期しない結果を避けるために、インスタンスのセキュリティグループページで最終的に結合されたルールを確認してください。
インスタンス詳細ページで、[セキュリティグループ] タブをクリックし、[イントラネット上のすべてのインバウンドルール] サブタブを選択します。ここで、関連付けられているすべてのセキュリティグループからのルールを統合したリストを表示できます。このリストには、優先度、アクション、プロトコル、ポート範囲、ソースなどの列が含まれます。
コンプライアンス
権限が広すぎるルールのチェック
VPC フローログ を使用して通信パターンを分析し、権限が広すぎるセキュリティグループルールを特定して、権限を厳格化します。