WafCharm(ワフチャーム)は、株式会社サイバーセキュリティクラウドが提供するWAF自動運用サービスです。AWS WAFなどのクラウドWAFに対して、攻撃の傾向に合わせたルールを自動で書き込み、更新し続けます。WAFそのものではなく、WAFのルール運用を肩代わりする仕組みだと理解すると全体像がつかめます。
この記事では、WafCharmの仕組みを押さえたうえで、導入前に用意するWAFログのS3出力とIAMロールをAWS CLIで作る手順、WafCharmが消費するWCU(Web ACLキャパシティユニット)の予算計算、Athenaでの誤検知の切り分け、料金プランの月額試算までを作業の順に整理します。最後に、AWSマネージドルールだけで運用する場合と比べて、WafCharmを採用する条件と見送る場面を示します。
まとめ:WafCharmを入れる前に決めるWCU予算・ログ連携・月額費用の上限
結論を先に示します。WafCharmは申し込めば動くサービスですが、AWS側の準備と予算の見積もりを飛ばすと、ルール適用の段階で止まります。
- WafCharmはWeb ACLにルールを書き込む:独立したWAFではなく、お客様のAWS WAFのWeb ACLへルールを登録・更新する方式です。AWS WAFの利用料金は別に発生します。
- WCUを800〜900確保する:Advanced Ruleポリシーは最小構成でも800〜900WCU程度を使います。AWSマネージドルールのCore rule set(700WCU)と併用すると、基本料金内の1,500WCUを超えます。
- WAFログはS3へ直接出す:Advanced RuleポリシーはS3バケットへの直接出力が前提で、Data FirehoseやCloudWatch Logs経由には対応していません。
- 費用はWeb ACLの数とリクエスト数で決まる:Businessプランは月額100,000円に、Web ACL1つごとに12,000円が加わります。リクエストが月間約9,900万件を超えるならEnterpriseのほうが安くなります。
- 小規模サイトではAWSマネージドルール単独で足りる:月間リクエストが数百万件以下でWeb ACLが1つなら、WafCharmの月額はAWS WAF本体の費用を大きく上回ります。
WafCharmの仕組み|AWS WAFのWeb ACLへルールを書き込む自動運用の実体
WafCharmを検討するとき、最初に誤解されやすいのが「どこで通信を止めているのか」という点です。通信を検査して遮断するのはAWS WAF本体で、WafCharmは検査に使うルールを管理する役割に徹しています。
WafCharmが自動で更新するルールとAdvanced・Legacyポリシーの違い
WafCharmには、Advanced RuleポリシーとLegacy Ruleポリシーの2種類のルール構成があります。WafCharmルールについて(AWS WAF v2)によると、Advancedでは IPアドレス、GEO(Geo-match)、Rate-base、Bot、正規表現、Body size、例外設定のルールが提供され、LegacyはIPアドレスと例外設定に限られます。どちらのポリシーでも、IPアドレスルールの1つであるDenylistと正規表現ルール(旧デフォルトルール)は必ず適用される構成です。
違いはルールの種類だけではありません。Advanced RuleポリシーとLegacy Ruleポリシーの違いでは、Advancedだけが動的Denylist(再マッチング)機能を持ち、Log IntelligenceオプションもAdvancedでのみ使えると説明されています。新しく導入するならAdvancedを前提に設計を進めてください。
対応WAFの3系統|AWS・Azure・Google Cloudと2026年8月の拡大
WafCharmの対象はAWS WAF、Azure WAF、Google Cloud Armorの3つです。料金ページの注記では、課金単位となるWAF設定ユニットがAWS版ではWeb ACL、Azure版ではWAF Policy、Google Cloud版ではSecurity Policyに当たると書かれています。
Azureでは、従来のAzure Application Gatewayに加えて、2026年8月19日にAzure Front Door上のAzure WAFへの対応が発表されました。Azure側の構成要素はAzure Front Doorとは?CDN・グローバル負荷分散・WAFの仕組みとAzure Application Gatewayとは?L7負荷分散・WAF・料金で扱っています。ただし、攻撃検知のメール通知、検知状況のリアルタイムレポート、GEO・レートベースルールの手動設定はAWS版のみの機能です。以降はAWS版を前提に進めます。
導入準備の作業|WAFログのS3出力とWafCharm用IAMロールをCLIで用意する
WafCharmの管理画面で登録作業を始める前に、AWS側で2つの準備が要ります。WAFログの出力先と、WafCharmに渡す権限です。コンソールでも作れますが、複数環境へ同じ構成を入れるならCLIで手順を固めておくと再現できます。
aws-waf-logs-接頭辞のS3バケット作成とCLIによるログ出力設定
AWS WAFのログをS3へ送る場合、バケット名はaws-waf-logs-で始める命名規則に従う必要があるため、作成時に接頭辞を確認してください。AWS WAFのS3ログ出力の公式ドキュメントでは、バケットはWeb ACLを管理するアカウントと同じアカウントに作ること、ログは5分間隔で出力されることが明記されています。WafCharmのWAFログ連携(新方式)の設定方法でも、Advancedの場合はS3バケットへ直接出力するよう指示されています。
# 1. ログ用バケットを作成(名前は aws-waf-logs- で始める)
aws s3api create-bucket \
--bucket aws-waf-logs-example-prod \
--region ap-northeast-1 \
--create-bucket-configuration LocationConstraint=ap-northeast-1
# 2. 対象Web ACLの名前・ID・ARNを確認
aws wafv2 list-web-acls --scope REGIONAL --region ap-northeast-1 \
--query 'WebACLs[].{Name:Name,Id:Id,ARN:ARN}'
# 3. ログ出力を設定
aws wafv2 put-logging-configuration --region ap-northeast-1 \
--logging-configuration file://logging.json
logging.jsonには、Web ACLのARNと出力先バケットのARNを書きます。形式はput-logging-configurationのCLIリファレンスに沿っています。
{
"ResourceArn": "arn:aws:wafv2:ap-northeast-1:111122223333:regional/webacl/example-prod/EXAMPLE-ID",
"LogDestinationConfigs": ["arn:aws:s3:::aws-waf-logs-example-prod"],
"RedactedFields": [
{ "SingleHeader": { "Name": "authorization" } }
]
}
RedactedFieldsは、ログに残したくないヘッダーを伏せる指定です。WafCharmのヘルプは、何をマスキングするかはお客様の判断と明言しています。ただしAdvancedの動的Denylistは、指定したヘッダーに記載されたIPアドレスを対象にします。CloudFrontやロードバランサーの背後でX-Forwarded-Forを判定に使う構成では、そのヘッダーを伏せると機能が働きません。CloudFrontに紐づくWeb ACLは--scope CLOUDFRONTと--region us-east-1で操作する点も、手順書に書いておくと迷いません。
WafCharmに渡すIAMロールとS3読み取り権限をバケット単位に絞る設定
WafCharmご利用の際に必要となるIAMポリシーでは、AWSWAFFullAccess、AmazonS3ReadOnlyAccess、CloudWatchReadOnlyAccessの3つのマネージドポリシーが必要とされています。このうちS3の読み取りは、特定のバケットとプレフィックスに絞ったカスタムポリシーに置き換えられます。アカウント内の全バケットを読める権限を外部サービスへ渡すのは避けたいので、ここは絞ってください。
# s3-read.json(WAFログのバケットだけを読めるようにする)
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": ["s3:List*", "s3:Get*"],
"Resource": [
"arn:aws:s3:::aws-waf-logs-example-prod",
"arn:aws:s3:::aws-waf-logs-example-prod/AWSLogs/*"
]
}
]
}
# ロール作成(trust.json には WafCharm 管理画面に表示される信頼ポリシーを貼る)
aws iam create-role --role-name WafCharmAssumeRole \
--assume-role-policy-document file://trust.json
aws iam attach-role-policy --role-name WafCharmAssumeRole \
--policy-arn arn:aws:iam::aws:policy/AWSWAFFullAccess
aws iam attach-role-policy --role-name WafCharmAssumeRole \
--policy-arn arn:aws:iam::aws:policy/CloudWatchReadOnlyAccess
aws iam put-role-policy --role-name WafCharmAssumeRole \
--policy-name WafCharmS3Read --policy-document file://s3-read.json
AWS WAF側の権限まで絞りたくなるところですが、公式ブログは、AWS WAF v2では機能追加に伴って権限が不足する懸念があるためAWSWAFFullAccessで設定するよう求めています。絞るのはS3とCloudWatchにとどめるのが現実的です。
アクセスキー方式ではなくAssumeRoleとCredential Storeを選ぶ理由
WafCharmへの認証情報の渡し方には、IAMユーザーのアクセスキーを登録する従来方式と、AssumeRoleでロールを引き受けさせる方式があります。AssumeRoleでの設定とIAMポリシーについてのとおり、2023年3月のCredential Storeリリース以降はAssumeRoleが推奨です。
選ぶ理由は運用面にあります。アクセスキーは発行した時点から漏えいのリスクを抱え続け、定期的な更新作業も必要です。ロール方式なら長期の鍵を外部に置かずに済み、信頼ポリシーを消せば即座に連携を止められます。受託開発で顧客のAWSアカウントに入れる場合、契約終了時の後始末が1手で済む点も効いてきます。
WCUの予算計算|WafCharmの800〜900WCUと既存ルールの同居を確かめる
導入時に最も止まりやすいのがWCUです。Web ACLには容量の上限があり、WafCharmのルールと既存のルールが収まらなければ適用できません。
get-web-aclとcheck-capacityで現在のWCU消費を事前に数える手順
AWS WAFのWCUに関する公式ドキュメントでは、Web ACLの基本料金に含まれるのは1,500WCUまでで、上限は5,000WCUと定められています。一方、WafCharmはLegacyで適用時に1,100WCU、Advancedで最小構成でも800〜900WCU程度を使うと案内しています。まず既存のWeb ACLが今どれだけWCUを使っているか、現在の消費量を確認してください。
# 既存Web ACLの現在のWCU消費
aws wafv2 get-web-acl --scope REGIONAL --region ap-northeast-1 \
--name example-prod --id EXAMPLE-ID \
--query 'WebACL.Capacity'
# これから足すルールのWCUを事前に計算
aws wafv2 check-capacity --scope REGIONAL --region ap-northeast-1 \
--rules file://rules.json
rules.jsonにはWeb ACLへ足したいルールをJSONの配列で書きます。check-capacityのCLIリファレンスのとおり、戻り値のCapacityがそのルール群に必要なWCUです。
[
{
"Name": "AWS-CRS",
"Priority": 10,
"Statement": {
"ManagedRuleGroupStatement": {
"VendorName": "AWS",
"Name": "AWSManagedRulesCommonRuleSet"
}
},
"OverrideAction": { "None": {} },
"VisibilityConfig": {
"SampledRequestsEnabled": true,
"CloudWatchMetricsEnabled": true,
"MetricName": "aws-crs"
}
}
]
AWSマネージドルールCRSの700WCUと併用したときに1,500を超える計算
AWSマネージドルールのBaseline rule groupsでは、Core rule set(CRS)が700WCU、Known bad inputsが200WCU、Admin protectionが100WCUと公表されています。これらとWafCharmを同じWeb ACLに入れた場合の合計は次のとおりです。表中の「両者」はWafCharmとCRSの組み合わせを指します。
| 構成 | WCUの目安 | 1,500WCUとの関係 |
|---|---|---|
| WafCharm Advancedのみ | 800〜900 | 基本料金内 |
| WafCharm+CRS | 1,500〜1,600 | 超える可能性が高い |
| 両者+Known bad inputs | 1,700〜1,800 | 超える |
| WafCharm Legacy+CRS | 1,800 | 超える |
超えても止まるわけではありません。5,000WCUまでは設定でき、AWS WAFの料金ページでは1,500WCUを超えて使う500WCUごとに100万リクエストあたり0.20ドルが加算されると示されています。月3,000万リクエストなら1段あたり月6ドルです。金額は小さいものの、見積書に載っていない請求は顧客説明の手間を生みます。CRSとWafCharmのルールはどちらもOWASP Top 10に挙がる攻撃パターンを対象にしているため、併用するかどうか自体を導入前に決めておいてください。
誤検知の切り分け|Athenaでブロックされたリクエストをルール別に集計する
ルールが自動で増えるということは、正常な通信が止まる可能性も自動で増えるということです。WafCharm側でも誤検知の問い合わせは受け付けていますが、依頼するにはどのルールが何を止めたかを自分で示せる状態にしておく必要があります。
導入直後に確認するログ項目とカウントで様子を見る期間の考え方
AWS WAFのログには、リクエストを最終的に止めたルールがterminatingruleid、ルールグループ内で一致したルールがrulegrouplistに記録されます。ルールの動作をカウント(検知のみ)にしておくと、遮断はせずに一致した記録だけが残ります。
導入直後はブロックではなくカウントで始め、1〜2週間分のログで正常な業務の通信が一致していないかを確認する進め方が安全です。月末の締め処理や管理画面からの一括アップロードなど、特定の日にしか発生しない通信がある業務システムでは、その日を含む期間を観察してから切り替えてください。
terminatingruleidでWafCharmのルールと自前ルールを分けるクエリ例
S3のWAFログはAthenaでのAWS WAFログのクエリ手順に従ってテーブルを作れば、SQLで集計できます。ブロックの内訳をルールとURI別に数えるクエリは次のとおりです。
-- ブロックされたリクエストをルール・URI別に集計
SELECT terminatingruleid,
httprequest.uri AS uri,
COUNT(*) AS cnt
FROM waf_logs
WHERE action = 'BLOCK'
GROUP BY terminatingruleid, httprequest.uri
ORDER BY cnt DESC
LIMIT 20;
-- カウント中のルールグループ内で一致したルールを集計
SELECT rg.rulegroupid,
nt.ruleid,
COUNT(*) AS cnt
FROM waf_logs
CROSS JOIN UNNEST(rulegrouplist) AS t(rg)
CROSS JOIN UNNEST(rg.nonterminatingmatchingrules) AS u(nt)
GROUP BY rg.rulegroupid, nt.ruleid
ORDER BY cnt DESC;
ログインAPIや検索画面のURIが上位に並んだら、誤検知を疑う合図です。ルールIDとURI、発生時刻をそろえてWafCharmのサポートへ渡すと、例外設定の追加が早く進みます。Athenaはスキャンしたデータ量で課金されるため、日付でパーティションを切る設計はAmazon Athenaの料金:スキャン量課金の実額とパーティション設計を参照してください。
WafCharm料金試算|Lite・Business・Enterpriseの費用増加
WafCharmの料金は「プラン料金」「WAF設定ユニット料金」「Webリクエスト超過料金」「WAFログストレージ料金」の4要素で組み立てられています。月額の見出しだけを見ると見積もりを外します。
プラン料金・WAF設定ユニット・超過リクエストの3要素で組む月額試算
WafCharmの料金ページに掲載されている2026年9月時点の税抜価格は次のとおりです。初期費用はすべてのプランで0円です。
| 項目 | Lite | Business | Enterprise |
|---|---|---|---|
| プラン料金 | 31,500円 | 100,000円 | 180,000円 |
| 含まれるリクエスト | 10万件 | 1,000万件 | 1億件 |
| WAF設定ユニット | 約14,500円 | 12,000円 | 12,000円 |
| 超過リクエスト | 約3.6円〜/1万件 | 900円/100万件 | 400円/100万件 |
| 月額の目安 | 46,000円〜 | 112,000円〜 | 192,000円〜 |
Liteは1ドル145円で換算した概算で、AWS Marketplaceでの購入に限られます。例として、Businessプランで本番とステージングの2つのWeb ACLを登録し、月間3,000万リクエストを処理する場合を計算します。プラン料金100,000円、ユニット12,000円×2で24,000円、超過2,000万件×900円で18,000円となり、合計は月額142,000円です。ここにAWS WAF本体の費用が別に乗ります。
Web ACLの数とリクエスト数で費用が跳ねる条件とプランの逆転点
BusinessとEnterpriseの機能差はなく、違いはリクエスト単価です。Businessの月額は100,000円+900円×(リクエスト数−1,000万件)÷100万件で増えるため、月間約9,900万リクエストでEnterpriseの180,000円に並びます。これを超える見込みがあるならEnterpriseを選んでください。
もう1つの変数がWeb ACLの数です。環境ごと、サービスごとにWeb ACLを分けていると、ユニット料金は1つにつき12,000円ずつ積み上がります。検証環境まで登録すると費用の割に得るものが少ないため、登録するのは外部に公開している本番のWeb ACLに絞るのが基本です。
WafCharmを採用する条件と見送る場面|AWSマネージドルール単独との判断基準
最後に判断を言い切ります。WafCharmが効くのは、WAFのルール運用に人を割けない組織です。そうでなければAWSマネージドルールで足ります。
採用する条件|WAF運用の専任がいない複数Web ACL構成の本番環境
次の条件が2つ以上そろうなら、WafCharmを検討する価値があります。社内にWAFのログを読み、ルールを調整できる担当がいないこと。公開しているWebサービスが複数あり、Web ACLが2つ以上あること。攻撃検知の月次レポートやメール通知を、顧客や監査への報告に使う必要があること。そして誤検知の相談を24時間365日受け付ける窓口が必要なことです。電話サポートと24時間365日サポートはBusiness以上に含まれます。
WAFの前段でDDoSを受け止める設計はAWS Shieldとは?StandardとAdvancedの違い・料金と採用判断、エッジでの配信とWAFの組み合わせはAmazon CloudFrontとは?仕組み・料金プランとエッジ機能で扱っています。
見送る場面|小規模トラフィックと厳格な変更管理が求められる案件
見送ってよい条件もはっきりしています。第一に、月間リクエストが数百万件以下でWeb ACLが1つの場合です。AWS WAF本体はWeb ACL 5ドル、ルール1ドル、100万リクエスト0.60ドルの料金体系で、月に数十ドルに収まります。そこへ月額10万円超のサービスを足すより、CRSとKnown bad inputsを入れて四半期ごとにログを見直すほうが費用対効果は高くなります。
第二に、本番環境の設定変更に承認手続きが必要な案件です。WafCharmは外部からルールを書き換えるため、「変更はすべて事前承認」という運用規程とぶつかります。第三に、TerraformやCloudFormationでWeb ACLのルールまでコードに書いて管理している場合です。コードの外でルールが変わると、次回の適用でWafCharmのルールを消してしまう事故が起きます。この場合はWafCharmが管理するルールをコードの管理対象から外す設計が前提になります。
WAFはアプリケーションの脆弱性そのものを直すものではありません。WAFで止めている攻撃の裏にある実装上の穴は、診断で見つけて塞ぐ必要があります。アプリケーションとAPIの診断から相談するなら脆弱性診断・セキュリティ診断、診断の種類と費用感は脆弱性診断とは?種類・費用相場・進め方と外注時の判断基準で確認できます。
よくある質問
WafCharmの導入検討で挙がることの多い質問をまとめました。
WafCharmとAWS WAFの違いは何ですか?
AWS WAFは通信を検査して遮断するWAF本体で、WafCharmはそのAWS WAFに登録するルールを自動で作成・更新する運用サービスです。WafCharmを契約してもAWS WAFは必要で、AWS WAFの利用料金は別に請求されます。WAFの基本的な仕組みやファイアウォールとの違いはWAFとは?仕組み・ファイアウォール/IPS・IDSとの違いで整理しています。
WafCharmの料金はいくらからですか?
2026年9月時点の税抜価格で、Liteが月額46,000円〜、Businessが112,000円〜、Enterpriseが192,000円〜です。これはプラン料金にWeb ACL1つ分のWAF設定ユニット料金を足した額で、Web ACLを増やすとユニット料金が加算されます。Liteは1ドル145円換算の概算で、AWS Marketplaceでの購入に限られます。初期費用は全プランで0円です。
WafCharmはどれくらいのWCUを使いますか?
公式ヘルプでは、Legacy Ruleポリシーが適用時に1,100WCU、Advanced Ruleポリシーが最小構成で800〜900WCU程度と案内されています。AWS WAFのWeb ACLは1,500WCUまでが基本料金内のため、Core rule set(700WCU)と併用すると超える可能性が高くなります。導入前にget-web-aclで現在の消費量を確認してください。
WafCharmの導入にはどんなAWSの設定が必要ですか?
必要な設定は2つです。1つはWAFログのS3出力で、バケット名はaws-waf-logs-で始め、Advanced Ruleポリシーでは直接出力にします。もう1つはWafCharmに渡すIAMロールで、AWSWAFFullAccessとCloudWatchの読み取り権限、WAFログのバケットに絞ったS3読み取り権限を付けます。認証はAssumeRole方式が推奨です。
WafCharmは誤検知したときにどう対応すればよいですか?
まずAWS WAFのログから、止めたルールのIDと対象のURI、発生時刻を特定します。Athenaでterminatingruleid別に集計すると、特定の画面やAPIへの偏りを確認できるため、誤検知の切り分けに使う集計です。そのうえでWafCharmのサポートへ連絡すると、例外設定などのカスタムルールで対応してもらえます。導入直後はカウントで観察する期間を設けると、本番の業務を止めずに確認できます。
関連記事
- WAFとは?仕組み・ファイアウォール/IPS・IDSとの違いと企業の選び方を解説:WafCharmが運用を担うWAFそのものの仕組みと選び方です。
- AWS Shieldとは?StandardとAdvancedの違い・料金と採用判断を実装者目線で解説:WAFと組み合わせるDDoS防御の設計に使えます。
- Cloud Armorとは?Google CloudのWAF/DDoS防御の仕組み・料金・実装判断:WafCharmのGoogle Cloud版が対象とするWAFの解説です。
- APIセキュリティとは?OWASP API Top 10の主要リスクと実装対策を解説:WAFだけでは防げないAPI側の対策を扱っています。
- 脆弱性診断とは?種類・費用相場・進め方と外注時の判断基準を解説:WAFの裏にある実装の穴を見つける手段を比較できます。