yuj1osm's tech blog

クラウドやセキュリティなど

Amazon CloudWatch Logsで機密データを保護できるようになりました

AWS re:Invent 2022が始まり、アップデートが増えてきました。
Amazon CloudWatch Logsで機密データを保護できるようになったようなので、検証してみました。

aws.amazon.com

アップデート概要

Amazon CloudWatch LogsはAWSが提供しているログ監視サービスです。
システムやアプリケーション、 AWSサービスからのログを一元化して監視することができ、検索や検知に活用できます。
今回はそのCloudWatch Logsに対して、データ保護ポリシーを適用することで、ログ中の機密データを検知して自動的にマスクできるようになりました。
HIPPA、GDPRPCI-DSSといった規制にも役立つ機能です。

以下がユーザガイドになります。

docs.aws.amazon.com

保護できるデータの種類は以下にまとまっており、本記事の執筆時点では日本語対応はしていないようです。

docs.aws.amazon.com

検証

機密データを検知させてみる

ロググループを作成します。

「アクション」から「Create data protection policy」を押下します。

プルダウンで保護対象を選択します。 「EmailAddress」と「Name」を選択してみました。

適当なログストリームを作成して、サンプルのメールアドレスを流してみます。

アスタリスクでマスクされていることを確認できました。

次に氏名を流してみましたが、日本語氏名はマスクされないようです。

※アンマスクしたもの(アンマスク方法は後述)

機密データとして検知すると、警告表示が出ます。

「Data protection」というタブが追加されており、検知数を確認できます。

アンマスクしてみる

「Display」から「Temporarily unmask protection data」を押下するとアンマスクできます。

ただし「logs:Unmask」権限が必要なので、権限が無いと以下のようにエラーになります。
「ReadOnlyAccess」でもアンマスクはできませんでした。

IAMユーザに以下「logs:Unmask」権限を付与しましょう。

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "logs:Unmask",
            "Resource": "*"
        }
    ]
}

「logs:Unmask」権限を付与したIAMユーザで「Temporarily unmask protection data」を押下すると、以下のようにアンマスクされたログが確認できます。

検知ログの転送

検知ログはCloudWatch Logs、Kinesis Data Firehose、S3に送信することができます。
今回は、新たに作成したCloudWatch Logsのロググループに転送設定をしてみました。

以下のように新たにログを生成します。
検知は2件です。

※アンマスクしたものが以下です。

カウントが2件増え、合計4件になりました。

転送先のロググループのログストリームを確認してみると、検知した2件がどのカテゴリで検知したかを確認できます。
※黒塗りはAWSアカウントIDです。

機密データが紛れ込んだときに、気付けるようなアラートの実装も簡単にできそうです。

まとめ

セキュリティ監視の現場では、機密データはマスクして欲しいという要望は多いので、非常に良い機能だと思います。
日本語が未対応のため、今後のアップデートでさらに使いやすくなるのではないかと思います。