ウェブ ACL によって分析されるすべてのリクエストをログに記録したくはないのですが、ブロックされたリクエストはログに記録したいと思います。AWS WAF でこれを行うにはどうすればいいですか?
解決方法
AWS WAF ログフィルタリングを使用して、リクエストの評価中にルールアクションまたはルールによって生成されたラベルに基づいてログエントリを除外します。ログフィルタリングは、選択したログのみを公開しますので、Amazon Kinesis Data Firehose とストレージのコストを節約するのに役立ちます。たとえば、ブロックされた要求のみをログに記録することができます。
AWS WAF ログをフィルタリングするには、AWS WAF ログ記録をアクティブ化しておく必要があります。AWS WAF のログ記録を有効にする手順については、「AWS WAF のログ記録をオンにして、Amazon CloudWatch、Amazon S3、または Kinesis Data Firehose にログを送信するにはどうすればよいですか?」を参照してください。
注: AWS ログフィルタリングは、追加料金はなしで使用できます。
AWS WAF ログフィルタリングを有効にする
- AWS WAF コンソールを開きます。
- [Region] (リージョン) で、ウェブ ACL を作成した AWS リージョンを選択します。
注:ウェブ ACL が Amazon CloudFront 用に設定されている場合は、[Global] (グローバル) を選択します。
- ウェブ ACL を選択します。
- [ログ記録とメトリクス] を選択します。
- [フィルターログ] で、[フィルターを追加] を選択します。
- 1 つ以上のフィルター条件を追加します。次に、[すべてのフィルター条件に一致する] または [少なくとも 1 つのフィルター条件に一致する] の条件を選択します。
- [フィルター条件] で、[要求時のルールアクション] または [要求にラベルあり] を選択します。
[ルールアクション] では、許可、ブロック、カウント、 CAPTCHA など、ルールが実行するアクションに基づいてフィルタリングします。
[要求にラベルあり] で、リクエストの評価中に AWS WAF に追加されたラベルに基づいてフィルタリングします。
- [フィルター動作] で、[ログに保持] または [ログから削除] を選択します。
- [既定のログ記録] 動作を選択します。
- [保存] を選択します。
ブロックされたリクエストだけをログに記録する
AWS WAF でブロックされたリクエストのみをログに記録するには、[ルールアクション] と [アクション] に基づくフィルタリングを [ブロック] として選択します。
ブロックアクションは、AWS WAF の終了アクションです。AWS WAF ログフィルタは、AWS WAF ログエントリの終了ルールアクションをチェックします。アクションが [ブロック] の場合、ログエントリはフィルター処理され、ログに追加されます。
ルールグループからのカウントリクエストをログに記録する
ルールグループのルールがどのように設定されるかによって、ログがフィルタリングされるかどうかが決まります。
- ルールグループ内のルールのアクションが [カウント] に設定されている場合、このルールに一致するリクエストのログには、このルールの [カウント] アクションが含まれません。代わりに、AWS WAF ログの ExcludedRules フィールドの下にこのルールが表示されます。このルールは、AWS WAF ログがカウントアクションでフィルタリングされる場合はチェックされません。つまり、これらのリクエストは、カウントアクションのログフィルターではフィルターされません。
- ルールグループのアクションがオーバーライドでカウントであるルールグループ内のルールと一致するリクエストがログに記録されます。これらのリクエストでは、AWS WAF ログの [NonTerminatingMatchingRules] フィールドに [カウント] アクションが含まれます。このアクションは、AWS WAF ログの [カウント] アクションをフィルタリングするときにチェックされます。
注: EXCLUDED_AS_COUNT は、ログフィルタリングの有効なアクションタイプです。このオプションは、putLoggingConfiguration API を使用して設定することができます。