Amazon S3 にログを保存するように AWS WAF の包括的なログ記録を設定する方法を教えてください。

最終更新日: 2019 年 11 月 19 日

AWS WAF をセットアップしましたが、Amazon Simple Storage Service(Amazon S3) にログを保存するための包括的なログ記録を設定する必要があります。どうしたらよいですか?

簡単な説明

同じリージョン内の Amazon S3 バケットを宛先とする Amazon Kinesis Data Firehose ストリームを使用して、ウェブアクセスコントロールリスト(web ACL)で包括的なログ記録を有効にできます。そのためには、次の 3 つの AWS のサービスを使用する必要があります。

  • ログを作成するために AWS WAF
  • ログを受け取るために Kinesis Data Firehose
  • ログを保存するために Amazon S3

注: AWS WAF、Kinesis Data Firehose、および Amazon S3 は同じリージョンで実行されている必要があります。

解決方法

Kinesis Data Firehose を作成する

  1. Kinesis コンソールを開きます。
  2. ナビゲーションバーで、web ACL が保存されている リージョン を選択します。
  3. ナビゲーションペインで [Data Forehose] を選択します。
  4. [Create Delivery Stream] を選択します。
  5. [Delivery stream name] に、配信ストリームの名前を入力します。名前は aws-waf-logs- で始まり、任意のサフィックスで終わる必要があります。たとえば、aws-waf-logs-demo です。
  6. [Source] で、デフォルトの [Direct PUT or other sources] を選択したままにします。その後、[Next] を選択します。
  7. 次の設定については、デフォルトのオプションをそのまま使用します。
    レコード変換 (無効)
    レコード形式の変換 (無効)
  8. [Next] を選択します。
  9. [Destination] には、[Amazon S3] を選択します。
  10. [S3 destination] セクションで、[Create new] を選択します。
  11. [S3 bucket name] に名前を入力します。均一性のために、ステップ 4 で作成した配信ストリームに使用したのと同じ名前を使用できます。
  12. AWS WAF ログが保存される リージョン を選択します。
  13. [Create S3 bucket] を選択します。
  14. (オプション) S3 プレフィックス と エラープレフィックスを設定します。
    注: カスタムプレフィックス は、バケットが他のログと共有されている場合に役立ちます。
  15. [Next] を選択します。
  16. 次の設定のデフォルトオプションはそのままにしておくことができます。
    バッファサイズ (5)
    バッファ間隔 (300)
    S3 圧縮 (無効)
    S3 暗号化 (無効)
  17. (オプション) 必要に応じて タグを設定します。
  18. [IAM ロール] で、[Create new or choose] を選びます。
  19. [Role Name] に、わかりやすい名前を入力します。たとえば、 firehose_to_s3-waflogs-demoです。
  20. [Allow] を選択し、[Next] を選択します。
  21. 設定を確認し、[Create delivery stream] を選択します。

AWS WAF を Kinesis Data Firehose に関連付ける

  1. AWS WAF コンソールを開きます。
  2. ナビゲーションペインで、[Web ACLs] をクリックします。
  3. [Filter] で、Web ACL が作成されたリージョンを選択します。
  4. 表示されたリストから関連する Web ACL を選択し、[Logging] を選択します。
  5. [Enable Logging] を選択します。
  6. [Amazon Kinesis Data Firehose] で、上記で作成した配信ストリームを選択します。
  7. (オプション) ログから編集する必要があるフィールドを設定します。
  8. [Create] を選択します。すべての AWS WAF ログは、分析のために Amazon S3 バケットに保存されます。

注: 1 つの AWS WAF ログは 1 つの Kinesis Data Firehose レコードに相当します。通常、1 秒あたり 10,000 件のリクエストを受信する場合は、Kinesis Data Firehose で 1 秒あたり 10,000 件のレコード制限を設定し、完全なログ記録を有効にします。それ以外の場合、AWS WAF はすべてのログを記録しません。詳細については、Amazon Kinesis Data Firehose の制限 を参照してください。