【目次】
1. はじめに
WafCharmは、AWS WAFにルールを適用するサービスです。
また、WafCharmでは、WAFログを連携いただくことでご利用いただけるさまざまな機能をご用意しております。ご利用可能な機能については、以下のヘルプページをご確認ください。
WAFログ連携によってご提供可能な機能について
WafCharmルールや、上記のような機能をご利用いただくためには、WafCharmからお客様のAWS WAF(Web ACL)やS3バケットなどの各種リソースにアクセスするための権限をご提供いただく必要があります。
本記事では、IAMの権限とWafCharm側のリソースの関係性や、各種設定がどのように影響するかの全体像をご説明します。
2. 全体像
上記の通り、WafCharmではAWS WAF(Web ACL)にルールを適用する仕組みと、WAFログ連携を行っている場合には、WAFログを取得する仕組みがあります。これらをご利用いただくためには、AWS WAFやS3バケット、IAM権限をご用意いただいた上で、それらの情報をWafCharmにご提供いただく必要があります。
簡単にまとめると、お客様のAWS環境では、以下のリソースが必要です。
- IAM権限:上記の通り、WafCharmをご利用いただくためには、WafCharmからお客様のWeb ACLにアクセスできる必要があります。そのアクセス権を付与いただくためのリソースです。IAMユーザー、あるいはIAMロールに、必要な権限を付与いただきます。
- AWS WAF(Web ACL):WafCharmがルールを適用するためのWeb ACLです。
- S3バケット:AWS WAFがWAFログを出力するためのS3バケットです。
WafCharm上では、以下のリソースの作成・設定が必要です。
- Credential:上記のIAM権限に関する情報を登録するためのリソースです。イメージとしては、「WafCharmが動作するときは、このIAMユーザーあるいはロールを使用してください」という指示を出すためのものです。
- WAF Config:上記のAWS WAF(Web ACL)に関する情報を登録するためのリソースです。「このWeb ACLでWafCharmを使用します」と指示をするイメージです。使用するWeb ACLを指定し、各種設定を実施したら、それ以降はWAF Configの編集などでさまざまな設定をご調整いただけます。
以下は、IAM、WAF Config、Credential、WAFログ取得の部分に絞った、簡易的な全体像です。

上記の図をベースとした全体の流れとしては、以下のようなイメージです。
※IAMやS3バケットを含め、AWS上のリソースはすでに存在していることを前提としています。
- Credentialを作成し、IAM権限の情報を登録する
- WAF Configを設定し、AWS WAF(Web ACL)の情報を登録する
- WafCharmはWAF ConfigおよびCredentialにご登録いただいた情報をもとに、IAMユーザーあるいはロールに紐づけられた権限を用いて、Web ACLにルールを適用する
- WafCharmはWAF ConfigおよびCredentialにご登録いただいた情報をもとに、IAMユーザーあるいはロールに紐づけられた権限を用いて、S3バケットからWAFログを取得する
3. Credentialについて
Credentialは、お客様のAWS環境にて登録されているIAMユーザーあるいはIAMロールの情報をご登録いただくためのリソースです。IAMユーザーの場合はアクセスキーとシークレットキーを、IAMロールの場合は信頼ポリシーの設定を行った上でARNをご登録いただきます。
※IAMロールの使用を推奨しております。
WafCharmをご利用いただくために必要な権限は、以下のヘルプページをご確認ください。
Credentialの登録方法は、以下のヘルプページにございます。
Credentialは、複数登録が可能です。例えば、Web ACL 1とWeb ACL 2が存在していて、Web ACL 1ではIAMロール 1、Web ACL 2ではIAMロール 2を使用したいといった場合、IAMロールごとにCredentialを作成します。
作成されたCredentialとIAMロールのそれぞれの関係性を簡単に記載すると、以下の通りです。
IAMロール 1 = Credential 1
IAMロール 2 = Credential 2
ただし、Credential単体としては、「どのWeb ACLで使用するIAMロールか」という情報は持っていません。上記の通り、IAMロール 1はCredential 1として登録している、という情報だけを持っています。「どのWeb ACLで使用するIAMロールか」という情報は、WAF Config側で設定する必要があります。
4. WAF Configについて
WAF Configは、AWS WAF(Web ACL)に関する情報を登録するためのリソースです。使用したいCredentialと、Web ACLの情報を選択することで、AWS上のWeb ACLとWafCharm側のWAF Configの紐付けを行います。
例えば、Web ACL 1とWeb ACL 2がある場合、それぞれの情報をWAF Configとして登録します。Web ACLとWAF Configは1対1の関係性ですので、以下の通りになります。
Web ACL 1 = WAF Config 1
Web ACL 2 = WAF Config 2
WAF Configそのものにはさまざまな仕組みや設定項目があります。ここではそのすべてについての説明は割愛しますが、例えば以下のようなことが実施できます。
- WafCharmルールの適用:WAF Configを作成すると、自動的にWafCharmルールをWeb ACLに適用します。
- 許可あるいはブロックするIPアドレスの更新:特定のIPアドレスからのリクエストが許可あるいはブロックしたいときに使用する機能です。WAF Config内に含まれる [ルール設定] のタブからIPアドレスの追加や削除を行うことで、Web ACL上のそれぞれのルールの条件が更新されます。
上記のようなWAF Configの設定項目の1つに、Credentialを選択する項目があります。ここで選択したCredentialが、該当するWAF Configで使用されるCredentialになります。
例えば、WAF Config 1でCredential 1を選択し、WAF Config 2ではCredential 2を選択した場合、以下の通りになります。
Web ACL 1 = WAF Config 1 – Credential 1 = IAMロール 1
Web ACL 2 = WAF Config 2 – Credential 2 = IAMロール 2
すなわち、Web ACL 1で許可したいIPアドレスを追加する際は、WAF Config 1のAllowlistにIPアドレスを登録します。登録を行うと、WafCharmからお客様のWeb ACLに対して、AllowlistにIPアドレスを追加するための更新を実施します。このとき、WAF Config 1に登録されているCredentialは「Credential 1」であるため、WafCharmはIAMロール 1の権限を使用してWeb ACL 1の情報を更新します。
5. WAFログ連携について
WAFログ連携は、お客様がご利用のAWS WAFが出力したWAFログをWafCharmへ連携いただく設定項目を指します。WAFログを連携いただくことで、ブロックされたリクエストの状況や、WAFログ検索機能、月次レポート機能、WAFログアラート(検知通知)機能などをご利用いただけます。詳細については、以下のヘルプページをご確認ください。
WAFログ連携によってご提供可能な機能について
WAFログ連携の設定方法は、以下のヘルプページにございます。
上記のヘルプページに記載の通り、WAFログ連携の設定方法には2種類あります。
- 旧方式:Lambdaを用いて、お客様のAWS環境上でWAFログを連携するための設定を実施する方法です。お客様のAWS環境にて構築いただくため、WafCharm上のCredentialは使用しません。
- 新方式:WAF Configの [ログ・通知設定] タブから設定いただく方法です。WafCharmに提供いただいた情報や権限をもとに動作するため、WAF Config上の情報や、指定されたCredentialを使用します。なお、旧プランでのご契約の場合はWafCharmサポートでの有効化が必要となります。詳細は上記ヘルプページをご確認ください。
上記の通り、旧方式では、WAFログの連携時にWafCharm上のWAF ConfigやCredentialの情報を用いることはありません。しかしながら、新方式ではWafCharm上のWAF ConfigやCredentialの情報を用います。
Advanced Ruleポリシーの場合、設定としてはWAFログ連携のON/OFFを切り替えるのみです。Credentialは、WAF Configで選択したものが使用されます。

Legacy Ruleポリシーの場合、いくつか設定項目があります。その中にCredentialを選択する項目がありますので、そこで選択されたCredentialを用いてWAFログを取得します。

Legacy Ruleポリシーでは、WAF Config(ルールの設定など)で用いるCredentialと、WAFログ連携で用いるCredentialを異なるものに設定することが可能です。
例えば、IAMロール 1-AではAWSWAFFullAccessやCloudWatchReadOnlyAccessといったWeb ACLに関わる権限を付与し、IAMロール 1-B ではAmazonS3ReadOnlyAccessを付与し、それぞれCredential 1-AとCredential 1-Bとして登録したとします。WAF Config 1ではCredential 1-Aを選択し、WAF Config 1のWAFログ連携ではCredential 1-Bを選択する、といった形で、異なるIAMロールの情報を用いることもできます。
6. おわりに
本記事では、IAMの権限とWafCharm側のリソースの関係性や、各種設定をご説明しました。
WAF ConfigとWeb ACL、IAMとCredentialの紐づきや、それぞれどこで使われるのかといったことは、最初は分かりづらい部分があると思います。
IAMの権限やWeb ACLなどのAWSリソースの運用管理に応じて、WafCharm側のリソースも適宜作成・適用いただけますと幸いです。
