EC2 セキュリティグループを管理する - AWS Elastic Beanstalk

EC2 セキュリティグループを管理する

Elastic Beanstalk が環境を作成すると、その環境で起動される EC2 インスタンスにデフォルトのセキュリティグループが割り当てられます。インスタンスに添付されているセキュリティグループによって、どのトラフィックがインスタンスに到達および終了することを許可されるかが決まります。

Elastic Beanstalk が作成するデフォルトの EC2 セキュリティグループは、HTTP (80) および SSH (22) の標準ポートでのインターネットまたはロードバランサーからのすべての受信トラフィックを許可します。EC2 インスタンスのファイアウォールルールを指定するために、独自のカスタムセキュリティグループを定義する場合もあります。セキュリティグループは、他のポートでのトラフィックまたは他のソースからのトラフィックを許可できます。例えば、制限された IP アドレス範囲から ポート 22 に着信したトラフィックを許可する SSH アクセス用セキュリティグループを作成できます。あるいは、セキュリティを強化するために、自分だけがアクセスできる踏み台ホストからのトラフィックを許可するセキュリティを作成できます。

aws:autoscaling:launchconfiguration 名前空間の DisableDefaultEC2SecurityGroup オプションを true に設定することで、デフォルトの EC2 セキュリティグループから環境をオプトアウトするように選択できます。AWS CLI または 設定ファイルを使用して、このオプションを環境に適用し、カスタムセキュリティグループを EC2 インスタンスにアタッチします。

マルチインスタンス環境で EC2 セキュリティグループを管理する

マルチインスタンス環境でカスタム EC2 セキュリティグループを作成する場合は、ロードバランサーと受信トラフィックルールがインスタンスを安全かつアクセス可能に保つ方法も考慮する必要があります。

複数の EC2 インスタンスがある環境へのインバウンドトラフィックはロードバランサーによって管理され、そのロードバランサーがすべての EC2 インスタンス間で受信トラフィックをルーティングします。Elastic Beanstalk がデフォルトの EC2 セキュリティグループを作成すると、ロードバランサーからの受信トラフィックを許可するインバウンドルールも定義されます。セキュリティグループにこのインバウンドルールがないと、受信トラフィックはインスタンスに入ることが許可されません。この条件は、基本的に外部リクエストからインスタンスをブロックします。

負荷分散された環境のデフォルトの EC2 セキュリティグループを無効にすると、Elastic Beanstalk はいくつかの設定ルールを検証します。設定が検証チェックを満たさない場合、必要な設定を提供するように指示するメッセージが表示されます。検証チェックは次のとおりです。

  • Application Load Balancer か Classic Load Balancer かに応じて、それぞれ aws:elbv2:loadbalancer または aws:elb:loadbalancerSecurityGroups オプションを使用して、少なくとも 1 つのセキュリティグループをロードバランサーに割り当てる必要があります。AWS CLI の例については、「AWS CLI を使用した設定」を参照してください。

  • EC2 インスタンスがロードバランサーからトラフィックを受信できるようにするインバウンドトラフィックルールが存在している必要があります。EC2 セキュリティグループとロードバランサーセキュリティグループの両方が、これらのインバウンドルールを参照する必要があります。詳細については、次の「トラフィックのインバウンドルール」セクションを参照してください。

トラフィックのインバウンドルール

マルチインスタンス環境の EC2 セキュリティグループ (複数可) には、ロードバランサーセキュリティグループを参照するインバウンドルールを含める必要があります。これは、任意のタイプのロードバランサー、専用または共有、およびカスタムまたはデフォルトのロードバランサーセキュリティグループを持つ環境に適用されます。

EC2 コンソールで、環境コンポーネントにアタッチされているすべてのセキュリティグループを表示できます。次の画像は、環境の作成オペレーション中に Elastic Beanstalk がデフォルトで作成するセキュリティグループの EC2 コンソールリストを示しています。

[セキュリティグループ] 画面には、環境とそれらの関連付けられたセキュリティグループが表示されます。GettingStarted-envGettingStarted3-env の両方は、専用のロードバランサーを備えたマルチインスタンス環境です。これらの各環境には、2 つのセキュリティグループが一覧表示されています (1 つは EC2 インスタンス用でもう 1 つはロードバランサー用)。Elastic Beanstalk は、環境の作成時にこれらのセキュリティグループを作成します。GettingStarted5-env にはロードバランサーセキュリティグループがありませんが、これは、EC2 インスタンスが 1 つしかないので、ロードバランサーがないためです。

[インバウンドルール] 画面では、GettingStarted3-env のインスタンスの EC2 セキュリティグループにドリルダウンします。この例では、EC2 セキュリティグループのインバウンドルールを定義します。[インバウンドルール][ソース] 列には、前の画像に一覧表示されているロードバランサーセキュリティグループのセキュリティグループ ID が一覧表示されていることに注意してください。このルールにより、GettingStarted3-env の EC2 インスタンスは、ポート 80 でその特定のロードバランサーからインバウンドトラフィックを受信できるようになります。

Amazon EC2 コンソールには、各環境の Elastic Beanstalk セキュリティグループが表示されます。

詳細については、「Amazon EC2 ユーザーガイド」の「インスタンスのセキュリティグループを変更する」および「Elastic Load Balancing ルール」を参照してください。