2023/06/01 更新
WafCharm更新に伴い、内容を見直しました。

2023/03/23 更新
Credential Storeのリリースに伴い、手順を更新しました。


WafCharmの初期設定の流れを紹介します。WafCharmの初期設定には、AWSマネジメントコンソールにてAWS WAF / IAMポリシー / CloudFront(またはALB)のログ設定の確認が必要です。
※WafCharmはALB, CloudFront, API Gateway以外には対応しておりません。

  1. プラン契約の申し込みまで進むと、以下のページに案内されますので、Web ACL Configの設定から始めましょう。
  2. Add Web ACL をクリックします。

  3. 必要な情報(①〜⑨と⑫)を入力し、Saveをクリックします。

    ①Web ACL Config Name Web ACL Config Nameを入力します。
    AWS コンソール上で登録している Web ACL の名前と必ずしも同一にする必要はありません。
    ②Web ACL ID AWSマネジメントコンソール > WAF & Shield > Go to AWS WAF > Web ACLsを選択します。下記画像の赤枠で囲まれているIDが「Web ACL ID」となります。
    ③Web ACL Version AWS WAF v2が選択されています。調整は不要です。
    ④Choose AWS Service Type Web ACLをアタッチしている対象のリソースをプルダウンから選択します。
    ※ALB, CloudFront, API Gateway以外には対応しておりません。
    ⑤Choose your AWS Region Web ACL及び、リソースを作成しているリージョンを選択します。
    ⑥Credential Store Addボタンから認証情報を登録します。

    AssumeRoleを使用する場合
    IAMのポリシー “AWSWAFFullAccess” を付与していたロールのARNを登録します。
    参考:
    AssumeRoleでの設定とIAMポリシーについて

    Access Key/Secret Keyを使用する場合(非推奨)
    IAMのポリシー “AWSWAFFullAccess” を付与している対象ユーザーのキーの値を登録します。
    参考:
    アクセスキー/シークレットキーの準備編
    WafCharmご利用の際に必要となるIAMポリシー

    ⑦Default WAF Action WafCharmが対象Web ACLにルールを適用する際のアクションを設定できます。
    ※既に適用されているルールのアクションはこの設定では変更できません。
    ⑧Whitelist 初期設定の段階でホワイトリストを設ける場合に入力します。後から追加設定することも可能です。
    ⑨Blacklist 初期設定の段階でブラックリストを設ける場合に入力します。後から追加設定することも可能です。
    ⑫Originating address XFF ヘッダーオプションの設定ができます。WafCharm を適用する ALB の前段に CloudFront が配置されているような場合にはご利用を検討してください。詳細はダッシュボード内のヘルプをご確認ください。

    ※WafCharmはルール投入時に1100WCUを必要とします。既に独自のルールを適用しているWeb ACLで使用するWCUを追加料金なしで使用できる1500WCU以内に収めたい場合は、事前にWCUの使用状況をご調整ください。

    3の手順実施後、S3周りの設定をするページに遷移するのでこちらも必要な情報を入力し、Saveをクリックします。

    WafCharm「Web Site Config」設定画面

    Web Site Config は WafCharm による解析に使用するアクセスログの出力先を登録する設定になります。(WAF の保護対象を登録する設定ではございません。)
    ※ API Gateway でのご利用の場合、Web Site Config の設定は不要になります。

    ①Web ACL Config 対象のWeb ACL Configを選択します。
    ※初めてWeb ACL Configを作成された方は既に選択されています。
    ②FQDN 対象WebアプリケーションのFQDNを入力します。
    ※次の手順(③S3 Path)の入力内容が同一の場合、複数の FQDN が存在するとしても代表で一つの FQDN をWeb Site Conifg に登録してください。
    (WAF は リソース(ALB/CloudFront etc.)単位で稼働するため、登録する FQDN の違いによる WAF への影響はありません。)
    ③S3 Path お使いのリソースのアクセスログの出力先のパスを設定します。
    CloudFrontのログ出力先確認
    AWSマネジメントコンソール > CloudFront > 対象CloudFrontにチェックを入れDistribution Settingをクリック > Editをクリック > 下記赤枠で囲まれた箇所を確認します。下記赤枠の場合だと、WafCharmに登録するS3 Pathは
    「s3://Wafcharm.s3.amazonaws.com/cloudfrontlogs/」
    となります。

    CloudFrontのログ出力先確認画面
    ※ 該当の S3 Path には複数の CloudFront Distribution のアクセスログは出力しない様お願いいたします。
    ※ CloudFront のリアルタイムログ機能には対応しておりません。
    ALBのログ出力先確認
    AWSマネジメントコンソール > EC2 > サイドバーのロードバランサーをクリック > 対象のALBをチェック > ロードバランサー情報にて説明のタブ(デフォルト)下部を確認 > 属性の確認下記赤枠の場合だと、
    ・アクセスログ:S3 の場所 WafCharm/alblogs
    になります。そのため、WafCharmに登録するS3 Pathは
    「s3://WafCharm/alblogs/AWSLogs/<AWSアカウントID>/elasticloadbalancing/ap-northeast-1/」
    となります。
    ※今回はリージョンが、ap-northeast-1としています。

    ALBのログ出力先確認画面
    ※ API Gatewayのアクセスログには対応しておりません。
    ④Credential Store

    IAMのポリシー “AmazonS3ReadOnlyAccess” および “CloudWatchReadOnlyAccess” を付与しているロールあるいはユーザーのクレデンシャル情報が必要です。
    Web ACL Configと同じものを使用する場合には「Reuse Web ACL Credential Store」のチェックを選択したまま保存します。

    ※Access key / Secret keyの利用は非推奨です。
    参考URL:
    AssumeRoleでの設定とIAMポリシーについて

    Access key/Secret keyを使用する場合:
    アクセスキー/シークレットキーの準備編
    WafCharmご利用の際に必要となるIAMポリシー

    Web ACL Configと異なる認証情報を使用する場合、「Reuse Web ACL Credential Store」のチェックを外すと、プルダウンから選択あるいはAddボタンから新規追加が可能です。

    注意
    S3バケットを特定のリージョン(※)にしている場合、Credential Storeのバリデーションがエラーとなる場合があります。その場合は、対象のリージョン名を添えてWafCharmサポートまでご連絡ください。
    ※特定のリージョンは、AWSコンソール上でデフォルトでは無効になっているオプトインリージョンです。詳細はデフォルトで無効になっているリージョンの一覧をご確認ください。

    以上の設定を正しく登録することで、WafCharmがご利用頂けます。
    AWSマネジメントコンソール上にて確認が必要な情報がいくつかございます。ご注意ください。