はじめに
re:Invent 2022にて発表された、Amazon CloudWatch Logsの機密データ保護機能を試してみました。
- Protect Sensitive Data with Amazon CloudWatch Logs
https://aws.amazon.com/jp/blogs/aws/protect-sensitive-data-with-amazon-cloudwatch-logs/
こちらを参考に実施してみました。
目次
手順の概要
- ロギングテスト用Lambdaを作成する
- 機密データ(のようなサンプルデータ)をロギングする
- CloudWatch Logsで対象のロググループにData protection policyを設定
- 再度 手順2を実行
- マスクされる事を確認する
手順
1. ロギングテスト用Lambdaを作成する
直接ロググループに文字列発行が面倒なのでロギングするだけのLambda関数を作成しました。
2. 機微なデータ(のようなサンプルデータ)をロギングする
サンプルデータとして下記をロギングしてみました。(JSON)
transaction_log = { "IP": "8.8.8.8", "user": "kouzu@skyarch.net", "card_holder_name": "KOUZU TEST", "card_number": "4111111111111111" } logger.info(transaction_log)
3. Data protection policyを設定
多くの項目がありますが、残念ながらJP系は少なそうです(今後に期待)
![](https://www.skyarch.net/blog/wp-content/uploads/2022/12/10.DataProtectionSettings-725x1024.png)
取り急ぎIPAddress、メールアドレス、CreditCardNumber等を設定してみました。
5. マスクされる事を確認する
再度手順2を実行しマスクされるか確認してみました。
マスクされました!がサンプルデータのためか、IPアドレスのみマスクされました
Sensitive data found カウントが正常に増えているので、分かりやすいですね。
LogsInsightsの検索でもマスクされている事を確認
Maskされた部分を復号する
※大前提として、マネジメントコンソール操作者IAMPolicyに logs:Unmask
が必要です。
CloudWatch Logsでは、Displayメニューの[Temporary Unmask Protected Data]で復号できます
CloudWatch Logs Insightsでは、復号したいデータに unmask() を付ける事でできます
まとめ
機密データと定義される書式に日本フォーマットが今後増えてくれば、嬉しいサービスと感じました。
本サービスに頼り切る事なく、予め排除が必要(ロギングしないデータ)はロジックで排除しておくことが当然ですが重要な一方で、機密データがログに入ってしまったりしてないよねという念の為確認にもある程度利用出来るサービスではないかと思いました。