[アップデート] AWS WAF でログ上の特定データフィールドを保護できるオプションが追加されました
いわさです。
AWS WAF ではコンソール上やログなどに受信されたデータが出力されます。
先日のアップデートで、特定のデータフィールドを保護する機能が登場しました。
What's New AWS のアナウンスがまだでていませんが、マネジメントコンソールや各種ドキュメントからは更新通知がされています。
この機能を使うと、Web ACL のログやコンソール上のサンプルリクエストなど、受信したデータに関する様々な出力上で、表示される一部のフィールドを保護することができます。
これによってコンソールやログ上で、リクエストに含まれる秘匿情報を隠すことができます。
実際に設定して試してみたのでその様子を紹介します。
設定できる内容
冒頭の画像のとおり、Web ACL のログ構成タブにてデータ保護のためのエリア「Data protection settings」が追加されています。
こちらで「Enable」を有効化していきます。
まず、スコープの設定があって全ての出力に対して保護するか、特定のログ送信先のみ保護するかを選択できます。
全ての出力先には Security Lake やサンプルリクエストが含まれています。
特定のログ送信先については CloudWatch Logs や S3 など既存のログ出力先を指しています。
ただ、私が今朝試した時点ではなぜかこちらの設定はマネジメントコンソールからは有効化が出来ませんでした。API 経由あるいはマネジメントコンソールが更新されるのを待つ必要がありそうです。
ということで今回は All logging で設定をしていこうかなと思います。
スコープを決めたら次にデータ保護フィールドを指定する必要があります。
指定できるフィールドは Body、クエリ文字列、クッキー、ヘッダーなどのフィールドタイプをまず指定します。
指定されたフィールドタイプごとに対象フィールドの指定方法は異なるのですが、以下はクッキーの場合です。
クッキー名以外は全フィールドタイプで共通の設定項目となっていまして、フィールドをハッシュ化するか置換するかを選択できます。置換文字列は設定できずシステム既定の値で置換されるようです。後ほど実際の出力を見ていただきます。
Field retention によってそのデータを含めないようするか、あるいは例外的にそのフィールドをデータ保護の対象外とするかを設定できます。
トラブルシューティングなどの目的でデータ保護の例外を構成するシナリオが想定されているようです。
設定してみる
今回は CloudFront に Web ACL をアタッチし、そちらに適当なヘッダーやクエリ文字列を送信するケースを試してみます。
まず、データ保護の設定を追加せずにリクエストを送信してみます。
iwasa.takahito@HL01200 hoge0215waf % curl -I "https://d2gc6lupy67eup.cloudfront.net/?hoge-iwasa3=ccc" -H "hoge-iwasa1:aaa" -H "hoge-iwasa2:bbb"
HTTP/2 200
content-type: text/html; charset=UTF-8
:
サンプルリクエストをコンソールで確認すると次のような内容が確認できます。
ヘッダーもクエリ文字列も出力されていますね。
上記のフィールドを保護してみます。
ログ構成タブから次のようにデータ保護フィールドを指定しました。
同じようにリクエストを送信して同じようにサンプルリクエストを確認してみると...
おっ、指定したクエリ文字列やヘッダーが保護されていますね!
クエリ文字列とヘッダー「hoge-iwasa1」はハッシュ化を指定しました。
「hoge-iwasa2」については置換を指定しました。置換文字列は「REDACTED」になるようです。
なお、データ保護されるのはログ上の話で、CloudFront 側のログ情報からはデータ保護される前の情報を確認することができます。データ保護によってアプリケーション上の挙動がおかしくなることはなさそうですね。
制限事項や注意事項
フィールドタイプによって指定可能な項目が異なっているのですが、本日時点で以下の制限があります。[1]
- クエリ文字列は全ての引数が対象となる
- 各設定値の条件によって RuleMatch と RateBased の適用条件が異なる
また、本機能について以下のように注意書きがされています。
トラブルシューティングに影響を及ぼし予期しない検出や緩和動作が発生する可能性があるとのことで、必要なものへのみ使うようにしましょうとのことです。[2]
Warning
The data protection feature may potentially affect troubleshooting AWS WAF capabilities. These settings can cause unexpected detection and mitigation behaviors. Limit data protection for specific parameters to only those that are absolutely necessary.
さいごに
本日は AWS WAF でログ上の特定データフィールドを保護できるオプションが追加されたので試してみました。
ログ上に表示される秘匿情報をどうにか保護したいなというシーンは多いので、特定フィールドを指定する形ですが役に立ちそうな機能だと思います。
注意事項に気をつけて採用してみましょう。