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

最終更新日: 2021 年 3 月 30 日

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

簡単な説明

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

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

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

解決方法

Kinesis Data Firehose を作成する

  1. Kinesis コンソールを開きます。
  2. ナビゲーションバーで、ウェブ 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] (Direct PUT またはその他のソース) を選択したままにします。その後、[Next] (次へ) を選択します。
  7. 次の設定については、デフォルトのオプションをそのまま使用します。
    レコード変換 (無効)
    レコード形式の変換 (無効)
  8. [Next] (次へ) を選択します。
  9. [Destination] (送信先) には、[Amazon S3] を選択します。
  10. [S3 destination] (S3 送信先) セクションで、[Create new] (新規作成) を選択します。
  11. [S3 bucket name] (S3 バケット名) に名前を入力します。均一性のために、ステップ 4 で作成した配信ストリームに使用したのと同じ名前を使用できます。
  12. AWS WAF ログが保存されるリージョンを選択します。
  13. [Create S3 bucket] (S3 バケットの作成) を選択します。
  14. (オプション) S3 プレフィックスエラープレフィックスを設定します。
    注: カスタムプレフィックスは、バケットが他のログと共有されている場合に役立ちます。
  15. [Next] (次へ) を選択します。
  16. 次の設定のデフォルトオプションはそのままにしておくことができます。
    バッファサイズ (5)
    バッファ間隔 (300)
    S3 圧縮 (無効)
    S3 暗号化 (無効)
  17. (オプション) 必要に応じて タグを設定します。
  18. [IAM role] (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] (ウェブ ACL) を選択します。
  3. [Filter] (フィルター) で、ウェブ 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 のクォータ」をご参照ください。