🐕

AWSのアクセスコントロール: CloudFrontからセキュリティグループまでの完全ガイド

2024/02/16に公開

はじめに

AWS のリソースにはリダイレクトやルーティングなど、アクセスコントロールが可能なリソースがたくさんあります。

リソースごとに指定できる条件やアクションなども異なり、同じ機能を複数のリソースが提供している場合もあります。

しかし、個人的にはなるべく重複した設定を避けて、全体的な構成から最適なリソースでアクセスコントロールが実行できるようにしたいです。

そのために、それぞれのリソースで指定可能な条件とアクション、アタッチ先をリストに整理しました。

また、実際に AWS でアクセスコントロールする際に、どのリソースを利用すればいいかについても、まとめてみました。

アクセスコントロール可能なリソース一覧

CloudFront を利用した構成を想定して、リソースをまとめました。

Web Server は Nginx, Apache などのミドルウェアを表しています。

AWS リソースではありませんが、アクセスコントロールが可能なリソースであるため、リストに載せています。

Resource 条件 アクション アタッチ先
CloudFront Header, QueryString, Path, Method, IP, Region, etc リダイレクト、Origin へのルーティング、Lambda 呼び出し、エラーページ返却 -
WAF IP, Header, URI Path, HTTP body, attacks 通信のカウント、ログ記録、チャレンジ、リダイレクト、許可、503 エラー、ブロック CloudFront, ELB, etc
ACL IP, Port 通信の拒否 Subnet, etc
ELB Header, Path, Method, IP, Port, QueryString 固定応答、別 URL へのリダイレクト、TargetGroup への転送 -
Security Group IP, Port, SG 通信の許可 EC2, ELB, etc
Web Server IP, Port, Header さまざまなアクションが実行可能で、利用する module などに依存 -

それでは、この表をもとに、実際の利用を想定してどのようにアクセスコントロールを設定していくか考えてみます。

CloudFront がある場合

この場合、まずはCloudFront と WAFを中心に組み立てていくようにしましょう。

理由としては、

  • 構成上一番外部に位置するリソースなので、VPC に入る前にトラフィックの調整が可能
  • WAF と CloudFront の機能が他のリソースよりも高機能で調整が柔軟

という 2 点が挙げられます。

Resource 役割
CloudFront Origin へのルーティング、Lambda 呼び出し、エラーページ返却
WAF 通信のカウント、ログ記録、チャレンジ、リダイレクト、許可、503 エラー、ブロック

では、その他のリソースの設定は不要であるかと言われると、そうではないです。

CloudFront や WAF でカバーできない部分や、VPC 内部の設定に関しては、下記のリソースで設定を行いましょう。

Resource 役割
ACL 通信の拒否
ELB 固定応答、別 URL へのリダイレクト、TargetGroup への転送
Security Group 通信の許可

最終手段として、VPC 内部のリソースでもカバーできない部分に関しては、Web Server の設定を利用するようにしましょう。

Resource 役割
Web Server さまざまなアクションが実行可能で、利用する module などに依存

CloudFront がない場合

こちらも変わらず、基本的には WAFを中心に組み立てていきましょう。

Resource 役割
WAF 通信のカウント、ログ記録、チャレンジ、リダイレクト、許可、503 エラー、ブロック

WAF でカバーできない部分や VPC 内部の設定に関しては、下記のリソースで設定を行うのが良いでしょう。

Resource 役割
ACL 通信の拒否
ELB 固定応答、別 URL へのリダイレクト、TargetGroup への転送
Security Group 通信の許可

最終手段として、VPC 内部のリソースでもカバーできない部分に関しては、Web Server の設定を利用す流用にしましょう。

Resource 役割
Web Server さまざまなアクションが実行可能で、利用する module などに依存

おわりに

整理しながら気づきましたが、ネットワークのリソースは外から内へ設定を進めていくのがよさそうですね。

こちらもおすすめ

https://zenn.dev/yukionodera/articles/good-about-mise

https://zenn.dev/yukionodera/articles/easy-share-tab-with-google-meet

https://zenn.dev/yukionodera/articles/how-to-manage-images-with-obsidiann

GitHubで編集を提案

Discussion