ここでは、セキュリティグループのインバウンドルールを設定する方法を紹介します。
仮想ファイアウォールと同様に、セキュリティグループは1つ以上のECSインスタンスのネットワークアクセスを制御します。 これはセキュリティ分離の重要な手段です。 ECSインスタンスを作成するときは、セキュリティグループを選択する必要があります。 セキュリティグループルールを追加して、同じセキュリティグループ内のすべてのECSインスタンスのアウトバウンドアクセスとインバウンドアクセスを制御することもできます。
セキュリティグループの実践に関する一般的な提案
- 最も重要なルール: セキュリティグループをホワイトリストとして使用する必要があります。
- アプリケーションのインバウンドルールまたはアウトバウンドルールを設定する場合は、「最小権限付与」の原則を遵守する必要があります。 たとえば、特定のポート (ポート80など) を許可できます。
- 1つのセキュリティグループを使用してすべてのアプリケーションを管理することは推奨されません。要件はレイヤーによって異なる必要があるためです。
- 分散アプリケーションでは、アプリケーションタイプごとに異なるセキュリティグループを使用する必要があります。 たとえば、Web、サービス、データベース、およびキャッシュのレイヤーに異なるセキュリティグループを使用して、さまざまなインバウンド /アウトバウンドルールと権限を適用する必要があります。
- インスタンスごとに個別のセキュリティグループを設定する必要はありません。これにより、管理コストが不必要に増加します。
- VPCを優先する必要があります。
- インターネットアクセスを必要としないリソースにインターネットアドレスを割り当てないでください。
- 各セキュリティグループのルールをできるだけ簡潔にしてください。 1つのインスタンスは最大5つのセキュリティグループに参加でき、1つのセキュリティグループには最大200のセキュリティグループルールを含めることができるため、インスタンスは同時に数百のセキュリティグループルールの対象となる可能性があります。 割り当てられたすべてのセキュリティルールを集約して、インバウンドトラフィックまたはアウトバウンドトラフィックが許可されているかどうかを判断できます。 ただし、1つのセキュリティグループのルールが複雑すぎると、管理が複雑になる可能性があります。 このため、各セキュリティグループのルールをできるだけ簡潔にすることをお勧めします。
- ECSコンソールでは、セキュリティグループとセキュリティグループルールのクローンを作成できます。 アクティブなセキュリティグループとそのルールを変更する場合は、オンラインアプリケーションへの影響を回避しながら、セキュリティグループを複製し、複製したセキュリティグループを変更する必要があります。
注 アクティブなセキュリティグループのインバウンドルールまたはアウトバウンドルールを調整することは危険です。 したがって、あなたが何をしているのかわからない限り、それらのルールを自由に更新しないでください。
セキュリティグループのインバウンドアクセスルールの設定
以下は、セキュリティグループのインバウンドルールに関するいくつかの提案です。
0.0.0.0/0インバウンドルールを使用しない
制限なしにすべてのインバウンドアクセスを許可することはよくある間違いです。 0.0.0.0/0を使用すると、すべてのポートが外部アクセスに対してオープンになります。 これは非常に安全ではありません。 正しい方法は、最初にすべてのポートへの外部アクセスを拒否することです。 ホワイトリスト項目は、セキュリティグループに設定する必要があります。 たとえば、webサービスを公開する必要がある場合は、デフォルトで80、8080、443などの一般的なTCPポートのみを開く必要があります。 他のすべてのポートは無効にする必要があります。
{"IpProtocol": "tcp" 、"FromPort": "80" 、"ToPort": "80" 、"SourceCidrIp": "0.0.0.0/0" 、"Policy": "受け入れる"} 、{"IpProtocol": "tcp" 、"FromPort": "8080" 、"ToPort": "8080" 、"SourceCidrIp": "0.0.0.0/0" 、"Policy": "受け入れる"} 、{"IpProtocol": "tcp" 、"FromPort": "443" 、"ToPort": "443" 、"SourceCidrIp": "0.0.0.0/0" 、"Policy": "受け入れる"} 、
不要なインバウンドルールを無効にする
現在のインバウンドルールに0.0.0.0/0が含まれている場合は、アプリケーションで公開する必要のあるポートとサービスを確認します。 一部のポートが外部アプリケーションに直接サービスを提供したくない場合は、拒否ルールを追加します。 たとえば、MySQLデータベースサービスをサーバーにインストールしている場合、ポート3306をデフォルトでインターネットに公開しないでください。 以下に示すように、拒否ルールを追加できます。 優先度の値を100に設定します。
{"IpProtocol": "tcp" 、"FromPort": "3306" 、"ToPort": "3306" 、"SourceCidrIp": "0.0.0.0/0" 、"Policy": "drop" 、優先順位: 100} 、
この設定により、他のポートがポート3306にアクセスできなくなります。 ただし、これは通常のサービス要求もブロックできます。 このため、別のセキュリティグループのリソースにインバウンドアクセスを許可できます。
別のセキュリティグループにインバウンドアクセスを許可する
さまざまなセキュリティグループが、最低限の権限付与原則に従ってインバウンドルールとアウトバウンドルールを採用しています。 異なるアプリケーションレイヤーは、対応するインバウンドルールとアウトバウンドルールを持つ異なるセキュリティグループを使用する必要があります。
たとえば、分散アプリケーションに対して異なるセキュリティグループが設定されます。 ただし、さまざまなセキュリティグループがインターネット上で相互通信できないため、IPアドレスまたはCIDRネットワークセグメントを直接許可することは非常に困難です。 この場合、別のセキュリティグループのすべてのリソースに直接アクセスを許可できます。 たとえば、sg-webセキュリティグループとsg-databaseセキュリティグループは、それぞれアプリケーションのWebレイヤーとデータベースレイヤーに対して作成されます。 sg-databaseでは、次のルールを追加して、sg-webセキュリティグループ内のすべてのリソースにポート3306へのアクセスを許可します。
{"IpProtocol": "tcp" 、"FromPort": "3306" 、"ToPort": "3306" 、"SourceGroupId": "sg-web" 、"Policy": "受け入れる" 、優先順位: 2} 、
インバウンドアクセスのために別のCIDRを許可する
クラシックネットワークでは、ネットワークセグメントの制御が困難であり、セキュリティグループIDを使用してインバウンドルールを承認することを推奨します。
VPCネットワークでは、独自にIPアドレスを計画し、異なるvSwitchを使用して異なるIPドメインを設定できます。 したがって、VPCネットワークでは、デフォルトでアクセスを拒否できますが、自分のVPCへのアクセス、つまり信頼できるCIDRネットワークセグメントへのアクセスを直接許可できます。
{"IpProtocol" : "icmp" 、"FromPort" : "-1" 、"ToPort" : "-1" 、"SourceCidrIp" : "10.0.0.0/24" 、優先順位: 2} 、{"IpProtocol" : "tcp" 、"FromPort" : "0" 、"ToPort" : "65535" 、"SourceCidrIp" : "10.0.0.0/24" 、優先順位: 2} 、{"IpProtocol" : "udp" 、"FromPort" : "0" 、"ToPort" : "65535" 、"SourceCidrIp" : "10.0.0.0/24" 、優先順位: 2} 、
セキュリティグループルールを変更するための手順と手順
セキュリティグループルールを変更すると、インスタンス間のネットワーク通信が中断される可能性があります。 必要なネットワーク通信が影響を受けないようにするには、以下の方法で必要なインスタンスを許可し、セキュリティグループポリシーを実行して変更を絞り込みます。
- 新しいセキュリティグループを作成し、相互アクセスが必要なインスタンスを追加してから、変更を実行します。
- 権限付与タイプがセキュリティグループの場合、相互通信が必要なピアインスタンスのバインドされたセキュリティグループIDをセキュリティグループの権限付与ルールに追加します。
- 権限付与タイプがCIDRの場合、相互通信が必要なピアインスタンスのイントラネットIPアドレスをセキュリティグループの権限付与ルールに追加します。
詳細な手順については、セキュリティグループルールを追加を参照してください。