WafCharm の AWS 環境構成図

記事タイトルとURLをコピーする

SRE2課 佐竹です。
今回は、案件で WafCharm を導入することになりましたのでその構成図を紹介します。

はじめに

WafCharm について


WafCharm は、サイバーセキュリティクラウドが提供する AWS WAF の運用を支援するサービスです。AWS環境で AWS WAF を利用している場合にセットでの導入が前提となっているスパイキーなサービスになっています。AWS WAF は ACL に適用するルールをユーザ独自にカスタマイズして利用できるのですが、その運用には専門知識が必要になってきます。また、攻撃は日々変化しておりその脅威に対応するためには継続的なモニタリングと、防御ルールの調整を行う必要があります。つまり、AWS WAF を保守運用するのはそれなりに負荷が高い状況でした。
この AWS WAF のルールの運用を自動的に行ってくれるのが WafCharm となっており、AWS WAF の運用の運用負荷を下げることでユーザはよりコア・コンピタンスに注力できることになります。

WafCharm がマネージするルールの例

上の画像にある3つのルールは、AWS WAF の Web ACL におけるルールで、WafCharm が自動的に付与したルールの例です。「WafCharm_Common_Basic_Group」などが自動的に付与されております。このように何もルールを設定していなくても、AWS WAF の防御ルールを学習して反映してくれるサービスになっています。

AWS環境構成図

早速 WafCharm を導入した場合のAWS環境構成図を紹介します。

WafCharm 環境構成図

この構成図について詳細を以下で説明させて頂きます。

ALB と EC2

構成図の左側は、インターネットから利用者が Application Load Balancer (ALB) を経由して EC2 Instance にアクセスする経路を示しています。今回の構成図では、AWS WAF は ALB に対して設定を行っています。
※AWS WAF は ALB の他に CloudFront と API Gateway でも利用が可能となっています

AWS WAF と WafCharm の Web ACL Config

「WafCharm の Web ACL Config」 は 「AWS WAF の Web ACL」 と紐づく設定です。Web ACL Config に登録する IAM User (Credential) が持つ権限は基本的に AWSWAFFullAccess となります。この権限で、 WafCharm は AWS WAF の Web ACL のルールを修正します。

WafCharm の Web Site Config と ALB のアクセスログ

「WafCharm の Web Site Config」 は ALB 1つにつき1つ作成し 「ALB のアクセスログ」 と紐づく設定です。Web Site Config に登録する IAM User (Credential) が持つ権限は「登録した ALB のアクセスログ」が出力される S3 バケットに対するアクセス権になります。またそのため、 WafCharm の利用には ALB から S3 へのアクセスログの出力が必要になります。
具体的な設定方法は以下をご参考ください。

docs.aws.amazon.com

AWS WAF のログ出力

AWS WAF のログを S3 バケットに出力するには、Kinesis Data Firehose を利用する必要があります(※2022年5月末より不要)。WafCharm の利用にこの設定は必須ではありませんが、後述する月次レポートの機能で利用します。
具体的な設定方法は以下をご参考ください。

aws.amazon.com

現在は Kinesis Data Firehose 不要

2022年5月末に WafCharm が Kinesis Data Firehose なしで直接 S3 バケットへのログ出力に機能対応していますため、Kinesis の実装は不要となりました。ただし、AWS WAF から S3 バケットへの直接ログ出力には、AWS 側の仕様でバケット名に制限があります。

Your bucket names for AWS WAF logging must start with aws-waf-logs- and can end with any suffix you want. For example, aws-waf-logs-DOC-EXAMPLE-BUCKET-SUFFIX.

https://docs.aws.amazon.com/waf/latest/developerguide/logging-s3.html

月次レポート のための AWS Lambda

AWS WAF のログをサイバーセキュリティクラウド (CSC) が管理する S3 バケットに転送することで、WafCharm の月次レポートが作成可能です。このためには S3 バケットに配置されたファイルをそのまま転送するように AWS Lambda を構築します。AWS Lambda に必要な権限(IAM Role)は、AWS WAF のログを出力している S3 バケットへの Read (Get 及び List) 権限と wafcharm.com という S3 バケットへの Put 権限 (PutObject, PutObjectAcl) です。

まとめ


今回のブログでは、 WafCharm の構成図をご紹介するとともに、各コンポーネントについて説明させて頂きました。本構成図は ALB を利用している場合の一例ですが、何かの参考になれば幸いです。

2020年9月11日 補足

WafCharm の構成単位と AWS リソースの紐づきについて補足します。

まず向かって右側ですが、WafCharm の Web ACL Config 1つにつき AWS WAF の Web ACL 1つが対応しますため、これらの関係は常に 1:1 になります。
また向かって左側の通り、WafCharm の Web ACL Config 1つに対しては WafCharm の Web Site Config を複数設定することができますので、これらの関係は 1:n になります。なお、WafCharm の Web Site Config は1つの Web ACL Config のみに所属できるため、複数の Web ACL Config には設定できません。

以上になります。

佐竹 陽一 (Yoichi Satake) エンジニアブログの記事一覧はコチラ

マネージドサービス部所属。AWS資格全冠。2010年1月からAWSを利用してきています。2021-2022 AWS Ambassadors/2023-2024 Japan AWS Top Engineers/2020-2024 All Certifications Engineers。AWSのコスト削減、最適化を得意としています。