営業部 佐竹です。
本日は、最近リリースされた機能である「CloudFront の AWS managed prefix list」利用時における Security Group に関する運用上の注意点を記載します。
はじめに
以下のブログ記事でも取り上げさせていただいた通り、先日 CloudFront のための AWS managed prefix list の提供が開始されました。
AWS managed prefix list は今まで Gateway 型の VPC エンドポイントに対してのみ提供されており、対象は S3 と DynamoDB のみでした。
そこに3つ目として追加されたのが CloudFront の AWS managed prefix list です。
AWS managed prefix list の一覧
現在存在する AWS managed prefix list は以下の3つです。
Prefix list name | AWS service |
---|---|
com.amazonaws.region .s3 |
Amazon S3 |
com.amazonaws.region .dynamodb |
DynamoDB |
com.amazonaws.global.cloudfront.origin-facing | Amazon CloudFront |
東京リージョンにおける AWS managed prefix list の一覧
東京リージョンでは、以下の通りになります。上記のリストの region
が ap-northeast-1
に置き換わります。
Prefix list ID | Prefix list name | AWS service |
---|---|---|
pl-61a54008 | com.amazonaws.ap-northeast-1.s3 | Amazon S3 |
pl-78a54011 | com.amazonaws.ap-northeast-1.dynamodb | DynamoDB |
pl-58a04531 | com.amazonaws.global.cloudfront.origin-facing | Amazon CloudFront |
また、AWS managed prefix list には上記テーブル左端に記載した「Prefix list ID」が事前に割り当てられており、Security Group に設定する場合にはこのリスト ID を記載します。なお、リスト IDはリージョンごとに異なる点に注意が必要です。
Security Group 設定時の注意点
ここから注意点を記載します。
今回のリリースを受け、以下のドキュメントページが新設されました。
現在は、英語のみで閲覧できます。
「Work with AWS-managed prefix lists」のページには、「AWS-managed prefix list weight」という項目が用意されています。抜粋しますと、以下の通りです。
AWS-managed prefix list weight
Prefix list name | AWS service | Weight |
---|---|---|
com.amazonaws.region.s3 | Amazon S3 | 1 |
com.amazonaws.region.dynamodb | DynamoDB | 1 |
com.amazonaws.global.cloudfront.origin-facing | Amazon CloudFront | 55 |
ここで注意が必要なのは、CloudFront の AWS managed prefix list は重みが 55 となっている点です。
CloudFront の AWS managed prefix list の重みは 55
つまり、CloudFront の AWS managed prefix list を Security Group へ記載すると、Security Group に記載が可能なルール数のうち55個分をまとめて消費するということです。
Security Group にあまり明るくない方向けに、詳細に説明します。
上記ブログにまとめた通りではあるのですが、Security Group では現在以下の初期制限があります。
- セキュリティグループ当たりのインバウンドルールまたはアウトバウンドルールの数: 60
- ネットワークインターフェイス当たりのセキュリティグループ: 5
基本的には、作成したばかりの AWS アカウントでは、セキュリティグループ当たりのインバウンドルールまたはアウトバウンドルールの数
は「60」になっています。これはつまり、CloudFront の AWS managed prefix list を使った場合に、60 のうち 55 を消費する=問題なく使えるということになります。
ただ、かなり昔の話になりますが、古い AWS アカウントでは セキュリティグループ当たりのインバウンドルールまたはアウトバウンドルールの数
が「50」でした。この場合は、CloudFront の AWS managed prefix list を Security Group に設定すること自体が不可能です。
よって、CloudFront の AWS managed prefix list を利用されたい場合は、まず上記の上限に抵触していないか確認をされたほうが良いでしょう。
Security Group の設定ルール数制限の確認方法
EC2 のマネジメントコンソールにある「Limits」から確認が可能です。私の個人検証アカウントでは以下の通りです。
- セキュリティグループ当たりのインバウンドルールまたはアウトバウンドルールの数: 100
- ネットワークインターフェイス当たりのセキュリティグループ: 5
1つの Security Group に2つルールを設定したい場合にエラー
Security Group にプロトコル別に AWS managed prefix list を記載したい場合があります。具体的には以下のような設定が想定されます。
https と http どちらも許可したい場合は上画像の通りの設定となります。実際に設定してみましょう。
The maximum number of rules per security group has been reached.
というエラーになります。
これは、55×2=110 のルールを消費するため、セキュリティグループ当たりのインバウンドルールまたはアウトバウンドルールの数
の設定値制限を越えてしまったことによるエラーです。私のアカウントでは 100 に緩和されていますが、それでも不足しています。
これを上限緩和せずに回避する場合、https と http でそれぞれ別の Security Group として作成してアタッチしてください。
どのように Security Group を上限緩和するのが良いか
上限緩和を行うことで上記エラーを回避したいという場合を考えてみます。
CloudFront の AWS managed prefix list の重み「55」を生かすためには、以下の設定がベターなのではと考えられます。
- セキュリティグループ当たりのインバウンドルールまたはアウトバウンドルールの数: 111
- ネットワークインターフェイス当たりのセキュリティグループ: 9
このように緩和すれば、1つの Security Group に対して2つの prefix list が記載可能です。加えて、掛け算として 1000 ルールにできるだけ近づけるように「111 × 9 = 999」にしています。
AWS managed prefix list を2つ記載し「55×2=110」のルールを消費しても「111」であれば残り1つルールが追加できるため、Outbound の設定を加えることも可能になります。
まとめ
本日は、最近リリースされた機能である「CloudFront の AWS managed prefix list」利用時における Security Group に関する運用上の注意点を記載しました。
まとめとしては以下の通りです。
- CloudFront の AWS managed prefix list の重みは「55」であること
- その重さのため、Security Group ルール数上限である「60」ルールに抵触しやすいこと
- 1つの Security Group に https/http のプロトコルを同時に設定したい場合は、上限緩和はルール「111」が良いと考えられること
同様の事象に悩まれていた方の参考になれば幸いです。
では、またお会いしましょう。
佐竹 陽一 (Yoichi Satake) エンジニアブログの記事一覧はコチラ
マネージドサービス部所属。AWS資格全冠。2010年1月からAWSを利用してきています。2021-2022 AWS Ambassadors/2023-2024 Japan AWS Top Engineers/2020-2024 All Certifications Engineers。AWSのコスト削減、最適化を得意としています。