![[アップデート]Amazon CloudWatch Logsでログデータに含まれた機密情報を保護出来るようになりました #reinvent](https://devio2023-media.developers.io/wp-content/uploads/2022/11/eyecatch_reinvent2022_new-service.png)
[アップデート]Amazon CloudWatch Logsでログデータに含まれた機密情報を保護出来るようになりました #reinvent
この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。
こんにちは、AWS事業本部@福岡オフィスのべこみん(@beco_minn)です。
遂にAWS re:Invent 2022が始まりましたね。それに合わせてたくさんのアップデートが出てきました。
本記事ではそのうちの一つ、「Amazon CloudWatch Logsでの転送中の機密データ保護」についてまとめます。
ざっくりまとめ
- Amazon CloudWatch Logsで転送中の機密情報が含まれたログデータを保護(マスク)することが出来るようになった
- HIPAAやGDPR、PCI-DSS、FedRAMPに則った保護が可能
- 監査結果をAmazon CloudWatch Logs、Amazon Kinesis Data Firehose、Amazon S3に送ることも可能
logs:Unmask権限を持つユーザーであればマスクを外した状態でログデータを確認することも可能- 住所や運転免許証番号などは記事執筆時点(2022/11/28)で日本語未対応
アップデート内容
Amazon CloudWatch Logsで転送中のログデータに含まれる機密情報を保護(マスク)する機能が追加されました。
この機能は任意のロググループを作成後、追加の操作を行うことで有効化することが可能です。有効化の操作はマネジメントコンソールからだけでなくAWS CLIでも行うことが出来ます。
この機能の公式ドキュメントは下記です。記事執筆時点では英語版のみです。
どんなデータタイプを保護出来るのか
保護が可能なデータタイプは下記ページにまとめられています。
上記ページに記載されているデータタイプは下表のとおりです。
| データ | 分類 |
|---|---|
| Address | Personal |
| AwsSecretKey | Credentials |
| CreditCardExpiration | Financial |
| CreditCardNumber | Financial |
| CreditCardSecurityCode | Financial |
| EmailAddress | Personal |
| IpAddress | Personal |
| LatLong | Personal |
| Name | Personal |
| OpenSshPrivateKey | Credentials |
| PgpPrivateKey | Credentials |
| PkcsPrivateKey | Credentials |
| PuttyPrivateKey | Credentials |
| VehicleIdentificationNumber | Personal |
また、国別で対応しているデータもあります。
| データ | 分類 | 対応国名コード |
|---|---|---|
| BankAccountNumber | Financial | DE, ES, FR, GB, IT |
| CepCode | Personal | BR |
| Cnpj | Personal | BR |
| CpfCode | Personal | BR |
| DriversLicense | Personal | AT, AU, BE, BG, CA, CY, CZ, DE, DK, EE, ES, FI, FR, GB, GR, HR, HU, IE, IT, LT, LU, LV, MT, NL, PL, PT, RO, SE, SI, SK, US |
| DrugEnforcementAgencyNumber | Health | US |
| ElectoralRollNumber | Personal | GB |
| HealthInsuranceCardNumber | Health | EU |
| HealthInsuranceClaimNumber | Health | US |
| HealthInsuranceNumber | Health | FR |
| HealthcareProcedureCode | Health | US |
| IndividualTaxIdentificationNumber | Personal | US |
| InseeCode | Personal | FR |
| MedicareBeneficiaryNumber | Health | US |
| NationalDrugCode | Health | US |
| NationalIdentificationNumber | Personal | DE, ES, IT |
| NationalInsuranceNumber | Personal | GB |
| NationalProviderId | Health | US |
| NhsNumber | Health | GB |
| NieNumber | Personal | ES |
| NifNumber | Personal | ES |
| PassportNumber | Personal | CA, DE, ES, FR, GB, IT, US |
| PermanentResidenceNumber | Personal | CA |
| PersonalHealthNumber | Health | CA |
| PhoneNumber | Personal | BR, DE, ES, FR, GB, IT, US |
| PostalCode | Personal | CA |
| RgNumber | Personal | BR |
| SocialInsuranceNumber | Personal | CA |
| Ssn | Personal | ES, US |
| TaxId | Personal | DE, ES, FR, GB |
| ZipCode | Personal | US |
やってみた
今回はマネジメントコンソールから有効化してみました。
この機能はロググループ作成時には設定出来ず、作成されたロググループに有効化する仕様になっています。そのため、今回は適当なロググループを作成します。
ロググループ作成後、ロググループ一覧からアクション -> Create data protection policyを選択します。

すると、このようなData protection機能の設定画面に遷移します。

設定可能な項目は主に保護対象のデータタイプ。また、監査結果をどこかに保存したい場合、Amazon CloudWatch Logs、Amazon Kinesis Data Firehose、Amazon S3のいずれかに送信することが可能です。
今回は監査結果は保存せず、保護対象のデータとしてAddress、AWSSecretKey、IPAddressを選んでみました。

それでは手動でログストリームを作成し、ログイベントを流してみます。まずはIPAddressから。

ちゃんとマスクされて表示されていますね。(0.0.0.0を流す前に「test start」というログを流しています。)

その後、Addressに引っ掛けるために以下の値を送ってみました。
- 〒812-0011 福岡県福岡市博多区博多駅前2丁目20−1 大博多ビル 11F(クラスメソッド福岡オフィスの住所です。)
- 1600 Pennsylvania Avenue NW, Washington, D.C. 20500 U.S.A.(ホワイトハウスの住所らしいです。)
結果はこんな感じ。どうやら日本語には対応してないようです。

最後にAWSSecretKeyを試したのですが、マスクされませんでした。。マスク出来た方は教えてください。

また、機密情報が含まれていると検知されたログの件数はロググループのData protectionタブで確認することが出来ます。

追記: ロググループ一覧にアラートも出てました。

マスクを外した状態で保護されたログデータを見てみた
マスクされたログデータの中身を見る手段も用意されています。
logs:Unmask という権限を持つユーザーで操作を行うことでマスクされていない状態でログデータを見ることが可能です。
マネジメントコンソール上であれば、Display -> Temporally unmask protected dataを選択することでマスクを外してログデータを見ることが出来ます。


また、再度マスクすることも可能です。

公式ドキュメントは下記
まとめ
今回のアップデート、結構望まれていたものだったのではないでしょうか。うっかりログに機密データを流してしまった場合にすぐ気付ける良い機能ですね。
ただし、多くのデータタイプで日本語未対応のため、まだ使用場面はかなり限られそうですが。。。
本記事がどなたかのお役に立てれば幸いです。
以上、べこみんでした。







