AWSプレフィックスリストを使ってセキュリティグループ設定を簡略化しよう

エンジニアの坂下です。
セキュリティグループをマネジメントコンソールで設定する際、複数のIPアドレスがある場合、設定が大変と感じる時はないでしょうか。例えば同じIPアドレスに対して、別のプロトコルの許可設定を行うと何度もルール作成が必要です。
そんな時に便利で、この手間を簡略化できるプレフィックスリストのご紹介と使い所をご紹介します。
目次
AWS プレフィックスリストとは
プレフィックスリストとは、複数のCIDRブロックのセットのことを指します。
CIDRブロックというのは、IPアドレスのネットワーク領域(例:10.0.0.0/24)を指していると思っていただければよいかと思います。
※厳密には違いますが、そういうものだとここでは理解しておいてください
これらのプレフィックスリストを事前に作成しておくと、ルートテーブルやセキュリティグループの設定と管理を容易にすることができます。
どんなふうに設定するのかと管理がしやすいのかは、後ほどマネジメントコンソール画面を交えながら説明しますので、そちらで確認いただければと思います。
AWS プレフィックスリストの種類
プレフィックスリストには、2つの種類が存在します。
- カスタマーマネージドプレフィックスリスト
- AWSマネージドプレフィックスリスト
カスタマーマネージドプレフィックスリストとは、ユーザーが自由に作成できるセットのことを指します。プレフィックスリストを作るとなるとこちらを指すことになります。
AWSマネージドプレフィックスリストとは、AWSが事前に定義したプレフィックスリストとなります。事前に定義されているとはどういうことなのか、使い所はどうなのかは次章以降で説明します。
カスタマーマネージドプレフィックスリストのルール
カスタマーマネージドプレフィックスは、利用するにあたって以下のようなルールがあります。
- 1つのプレフィックスリストには、IPv4またはIPv6いずれかのみがサポートされる
※1つのプレフィックスリストに、IPv4とIPv6の混在はできないということです。 - プレフィックスリストは、作成されたリージョンのみで利用できます。
- プレフィックスのエントリ数は、その数分だけクォータにカウントされます。
※こちらは後述します。
他にもルールもありますが、このあたりを意識しておけば、特に利用で困ることはないかと思います。
※クォータ(制限)がありますが、とても大きい数の制限なのでよっぽどのことがない限り、このクォータ(制限)にはひっかからないと思います。
次章では、実際にどのように設定していくかマネジメントコンソール画面を交えながら説明します。
カスタマーマネージドプレフィックスリストの使い方
まずは、マネジメントコンソールにて、VPCのコンソール画面を開きます。
左側のメニューから、マネージドプレフィックスリストを選択します。

画面が遷移したら、右上のプレフィックスリストを作成を選択します。

作成画面に遷移しますので、プレフィックスリスト名と最大エントリ数を入れ、IPv4かIPv6を選択します(今回はIPv4で作成します)。

作成画面の下に移動するとプレフィックスリストのエントリがあるので、数の分だけ新しいエントリを追加してCIDRブロックを入力していきます。入力が完了したら、右下の「プレフィックスリスト作成」を選択し、プレフィックスリストを作成します。
※今回は、9つのエントリを作成しました。

作成が完了すると、詳細画面に遷移して作成されていることを確認します。

プレフィックスリストを作成したら、セキュリティグループの作成画面に移ります。
作成画面に遷移して、ルールを追加して、特定のプロトコルなどを選択します。
ソースの部分をプルダウンで見ていくと、先ほど作成したプレフィックスリストが表示されますので、一覧から作成したプレフィックスリストを選択するだけで、簡単に設定ができます。

マネジメントコンソールで複数IPアドレスを追加すると、大変なことになりますので、このようにプレフィックスリストを利用することによって、その大変な作業を解消することができます。
AWS マネージドプレフィックスリストのルール
AWS マネージドプレフィックスリストは、AWS側で用意されているリストのため、作成・変更・共有・削除することはできません。
また、AWS マネージドプレフィックスリストごとのウェイトが異なります。
各AWS マネージドプレフィックスリストのウェイトについては、下記のようになります。
プレフィックスリスト名 | AWSサービス | ウェイト |
com.amazonaws.region.s3 | Amazon S3 | 1 |
com.amazonaws.region.dynamodb | DynamoDB | 1 |
com.amazonaws.global.cloudfront.origin-facing | Amazon CloudFront | 55 |
ウェイトとは、ルールのエントリ数です。例えばセキュリティグループでは、デフォルトのクォータ(制限)が60ルールとなっています。そのため、上記のCloudFrontのプレフィックスリストを利用すると、60-55=5になり、設定できるルール数が残り5となってしまいます。
下記画像のように、プレフィックスリストを利用していると数が少なく感じるかと思いますが、

実際に「セキュリティグループの作成」ボタンを押すと、制限を超えていると怒られてしまいますので注意が必要です。

AWS マネージドプレフィックスリストの使い方
AWS マネージドプレフィックスリストの使い方も、カスタマーマネージドプレフィックスリストと同様になります。ただ、AWSマネージドプレフィックスリストはAWS側で自動で作成されているため、ユーザーが作成する必要性がありません。そのため、最初からセキュリティグループの作成画面に遷移して、対象のプレフィックスリストを選択するだけになります。

AWS マネージドプレフィックスリストをよく使う例としては、CloudFrontからのHTTP通信のみ接続するルールを作成する場合です。
CloudFront→ALB→EC2、またはCloudFront→EC2の構成時に、CloudFront経由からのHTTP通信のみ許可する場合に、このCloudFrontのプレフィックスリストを使うことによってアクセス制限することが可能です。
また余談ではありますが、S3のVPCエンドポイント(ゲートウェイ型)を利用する時にも、AWS マネージドプレフィックスリストが利用されています。特に意識することはないのですが、自動的にルートテーブルに付与されています。

S3のVPCエンドポイント(ゲートウェイ型)を初めて利用した時に、何かがルートテーブルに追加されたと当時の私は思っていましたが、これがAWS マネージドプレフィックスリストであるとは理解できていませんでした。この合点にたどり着くのに1年ぐらいかかってしまいました・・・
最後に
いかがでしたでしょうか。AWSサービスは数が多く、なかなかこのような詳細なサービスに気づかないことも多いのではないでしょうか。
私も最近までプレフィックスリストの存在を知らずに、CloudFront→EC2経由で接続する際に、お客様からCloudFrontからの接続のみに絞りたいというご要望をいただいたときに、社内の他エンジニアメンバーに教えてもらい初めて知りました。
この存在を知るまでは、カスタムヘッダを設定して、アプリ側でヘッダを見て・・・みたいな作業ステップを踏んでいましたが、このプレフィックスリストを使うと、AWSマネジメントコンソール画面で完結し、数えるほどの設定で作業が完了します。
今回のプレフィックスリストもそうですが、たまにはAWSマネジメントコンソールで寄り道をしてみて、興味本位で色々調べたり、ポチポチするのも今後に活かせる発見ができるかもしれませんので、試してみてください。
元記事発行日: 2022年05月30日、最終更新日: 2023年03月28日