はじめに
こんにちは、二年目AWSエンジニアです!
一年AWSに触れてきたことで、要件を満たすためにはこのサービスの、この設定が必要で、というような知識が少しずつついてきました。
そんな今印象に残っているのが、リソースの細かい設定の制約です。
リソース数のクォータなどは気にしやすいところですが、それ以外にも構築や結合テストを行うまで気づきにくいと感じる制約がありました。
この記事では私が触れることができたものを思い出しながらまとめてみました。
目次
クォータ以外の設定の制約
命名の制約
WAFはS3、Firehose、CloudWatch Logsにログを出力することができますが、それらのリソース名はaws-waf-logs-
から始まる必要があります。
設計の際には決まった命名規則でリソース名を決めていきますが、それではうまく動かないパターンがありました。
暗号化の制約
ALBのアクセスログを出力するS3バケットの暗号化はSSE-S3のみで、SSE-KMSによる暗号化はできません。
ALBの他にもVPCフローログなどログの暗号化をする機会は他のサービスにも多いので、少し気にしておくといい部分のように感じました。
リージョンの制約
CloudFrontにACM証明書をアタッチする際に、そのACM証明書はバージニア北部で作成する必要があります。
よく考えれば当たり前なのですが、東京リージョンで作業することが多いためつい忘れがちです。
EC2インスタンスのポート25アウトバウンドの制限
申請をすれば解除できるものですが、EC2インスタンスはメール送信などの25番ポートからのアウトバウンドをAWSが制限しています。
25番ポートのユースケースなどを記載して事前に申請をしておく必要がありました。
NLBにアタッチするSGの制約
NLBにSGをアタッチすることができますが、NLBの新規作成時にSGをアタッチせずに作成をすると、あとからSGの設定ができません。内部的にSGを付けられるNLBと付けられないNLBの2種類があるようなイメージですね。
特にNLBでインバウンド/アウトバウンドの制限をかけることがなくても、作成時に設定しておくのが適切なようでした。
Route53ドメインの制約
Route53でドメインを取得する際に、TLDが.jp
や.com
のものは取得することができますが、.co.jp
はサポートされていないため取得することができません。
検証でドメインを取得するといったことは少なく気づきにくいかなと思うので、取得できるかは意識的な確認が必要だと感じました。
クォータの制約
文字数の制限
IAM カスタマー管理ポリシーが6144文字までだったり、SSM パラメータストアのパラメータが4キロバイトまでだったりなど文字数的な制限もあります。
これに関してはあんまり意識する機会は少ないかと思いますが、この2つに関しては現在クォータの上限緩和などはできないため、数年後に上限に到達しないような設計が必要です。
WAFで検査されるリクエストボディのサイズの制限
WAFのWebACLでALBやCloudFrontなどを保護することがあります。
例えばAWSマネージドルールグループであるコアルールセットなどでリクエストボディを検査できますが、検査できるサイズには上限があります。ALBは8KBまで、CloudFrontは16KB~64KB(大きさにより料金が変動)までのリクエストボディしか検査されず、それ以降の部分はWebACLで検査されません。また、こちらも現在クォータの上限緩和はできません。
そのため、コアルールセットには含まれていますが、上限を超える大きさのリクエストボディを含むアクセスをブロックするのがよいとのことでした。
おわりに
こういった部分を知っておくために、ドキュメントの読み込みや日頃の情報収集・情報共有がより大切になってくるなと感じました。
また、設計の際に部分的にでも構築して検証しておくことは大切だなと思いました。
ここまで読んでいただきありがとうございました。