🍣

CloudWatchLogsのデータ保護機能を使ってみる

2023/01/25に公開

はじめに

前回の記事でも記載しましたが、2022年11月27日に、re:InventでCloudWatchLosの データ保護機能 が発表されました。
今回は、前回構築した環境を用いて、実際にデータ保護機能を利用してみたいと思います。
前回の記事は以下です。
https://zenn.dev/motisan/articles/20230122_cloudwatchlogs

本記事の目標

CloudWatchLogsのデータ保護機能を有効化して、どのような機能なのか理解する。

データ保護機能とは

2022年11月27日にAWSより発表された、CloudWatchLogsの新たな機能です。
CloudWatchLogsに出力されたログの中から、機密性の高いデータを検知して、自動的にマスキングしてくれます。
マスキングするデータは、設定画面上から選択できるので、ログの種別に沿った設定が可能となります。
また、IAMポリシーを駆使することで、必要なときにはアンマスクすることもできます
https://aws.amazon.com/jp/blogs/news/protect-sensitive-data-with-amazon-cloudwatch-logs/

料金

データ保護機能を利用すると、以下のように追加料金がかかるようです。
$0.12 / スキャンされたデータ(GB)
※上記は、東京リージョンの場合

https://aws.amazon.com/jp/cloudwatch/pricing/

データ保護機能を設定してみる

設定方法は簡単です。

  1. 「CloudWatch」-「ロググループ」より、データ保護機能を有効にしたいロググループを選択します
  2. 「アクション」から「データ保護ポリシーを作成」をクリックします
  3. 「データ識別子」として、マスキングしたい情報 を選択します
    今回は、Apacheのログをマスキングしてみるので「IpAddress」を選択してみます。
  4. 「監査先」として「Amazon CloudWatch Logs」を選択して「データ保護のアクティブ化」をクリックします
    ※この設定は、必須ではありません。

以上で「データ保護」の設定は完了です。

データ保護を確認してみる

設定が終わったので、実際に保護されているか確認してみます。
何度かApacheのトップページにアクセスしてみた後、CloudWatchLogsのロググループを確認すると、以下のようにセンシティブデータが何件見つかったかが表示されました。

実際のログを確認してみたところ、マスキングされている箇所とされていない箇所がありました。
どうやら、データ保護機能を有効化した後のログのみマスキング されるようです。

もう少し深掘りして1つのログの中を確認してみると、明らかにIPアドレスではない箇所もマスキングされていました。
おそらく「N.N.N.N」(Nは数字)だった場合にIPアドレス(v4)であると判断して、マスキングしているのでしょう。

マスキングを一時的に解除する

マスキングされていても、生データはきちんと保存されているので、マスキングを解除することも可能です。
但し、解除するにはIAMポリシーが適用されている必要があります。

必要なIAMポリシー: logs:Unmask

マスキングを解除するのは簡単で、該当のログイベントを表示させて、「表示」から「保護されたデータのマスキングを一時的に解除」を選択するだけで解除することができます。

監査結果を確認してみる

データ保護機能を有効化する際に、監査先としてCloudWatchLogsのロググループを指定したので、そちらでどのように出力されているのか確認してみます。
以下の情報を確認することができました。

resourceArn:どのロググループで発見されたか(ログストリームの特定までは難しそう)
name:どの監査項目に引っかかったか(今回であれば、IpAddress)
count:1行のログの中で何箇所発見されたか
detections:ログの中の何文字目から何文字目が該当するか

その他

該当するデータが発見されれば、センシティブデータカウントとしてアラートが表示されますが、アラートの内容を確認した後は、カウントをリセットしたいこともあると思います。
CloudWatchLogsのロググループ一覧画面上部に「ログで機密データが検出されました」と表示されますが、その右側にある「Reset alert」をクリックすると、カウントをゼロに戻すことができます。

おわりに

マスキングして欲しくないところが誤検知でマスキングされてしまうのは残念ですが、仕方ないかなと思います。
良かったと思うところは、生データを加工してマスキングしているわけではない点でしょうか。
セキュリティ監査という視点で、生データを加工してしまうと証跡としての価値が下がってしまうからです。
また、権限を操作して、必要最小限の人のみ閲覧できるようにすることで、センシティブデータの情報漏洩防止にもつながっていいなと思いました。

普段センシティブデータが保存されないはずのログで、もしセンシティブデータが出力された場合にアラートを飛ばしたい場合は、「監査先」設定を行なって、ログが出力されたらメールを飛ばす、といった設定をしたらいいのでしょうか。機会があったら試してみたいと思います。

Discussion