1

郵便局の「手紙検査官」でイメージしよう

📮 データ保護ポリシー = 郵便局の「機密情報検査官」

CloudWatch Logsのデータ保護ポリシーは、 郵便局で手紙をチェックする「機密情報検査官」 のようなものです。
アプリケーションから送られてくる「ログ」という手紙の中に、見せてはいけない情報が含まれていないかをチェックし、必要に応じて黒塗り(マスキング)します。

📝

ログ = 手紙

アプリケーションが生成するログは、状況を報告する「手紙」のようなもの。時にはうっかり個人情報が含まれてしまうことも...

🔍

検出 = 手紙の検査

検査官が「クレジットカード番号のパターン」「メールアドレスの形式」などを知っていて、手紙の中から見つけ出します

🖊️

マスキング = 黒塗り

見つけた機密情報を黒いペンで塗りつぶし「*****」に置き換え。第三者が見ても中身がわからないように保護します

📊

監査 = 検査記録

「今日はクレジットカード番号を5件、メールアドレスを10件検出しました」という記録を残し、後から確認できるようにします

❌ 保護なし

データ保護ポリシー適用前

"message": "User login: "
"email": "tanaka@example.com"
"card": "4532-1234-5678-9012"
"phone": "090-1234-5678"

😱 機密情報がそのままログに記録されてしまう!

✅ 保護あり

データ保護ポリシー適用後

"message": "User login: "
"email": "*****"
"card": "*****"
"phone": "*****"

😊 機密情報が自動的にマスキングされて安心!

2

データ保護の仕組み

🔄 データ保護ポリシーの処理フロー
📤
STEP 1
ログ送信
🔍
STEP 2
パターン検出
📋
STEP 3
監査記録
🎭
STEP 4
マスキング
💾
STEP 5
保存完了
📊
Audit(監査)

検出した機密情報の種類と件数を記録します。データ自体は変更しませんが、「何が見つかったか」を把握できます。

  • CloudWatch Metricsに検出結果を出力
  • CloudWatch Logsに監査ログを記録
  • S3やFirehoseへの転送も可能
  • データの中身は変更されない
🎭
Deidentify(非識別化)

検出した機密情報を「*****」でマスキング(置換)します。実際にログデータを変更して機密情報を隠します。

  • 機密情報を「*****」に自動置換
  • 元のデータは完全に上書き
  • 権限を持つユーザーは復元可能
  • コンプライアンス要件に対応
3

検出できる機密データの種類

AWS が提供する 「マネージドデータ識別子」 を使用して、150種類以上の機密データパターンを検出できます。

💳
クレジットカード情報
VISA, MasterCard, JCB など主要ブランドに対応
CreditCardNumber
📧
メールアドレス
xxx@example.com 形式のアドレスを検出
EmailAddress
📱
電話番号
日本の携帯・固定電話番号に対応
PhoneNumber
🏠
住所
日本の住所形式を検出
Address
🔑
AWSシークレットキー
誤ってログに含まれたキーを検出
AwsSecretKey
🌐
IPアドレス
IPv4 / IPv6アドレス
IpAddress
👤
氏名
個人名のパターンを検出
Name
🔐
パスワード
ログに含まれたパスワードを検出
Password

💡 ポイント: 日本固有のデータ(マイナンバー、運転免許証番号など)にも対応しています。また、カスタムデータ識別子を作成して独自のパターンを追加することも可能です。

4

設定方法

AWS CLI ポリシーJSON CloudFormation
AWS CLI
# データ保護ポリシーを作成(JSONファイルを指定)
aws logs put-data-protection-policy \
  --log-group-identifier "/aws/my-application/logs" \
  --policy-document file://data-protection-policy.json

# 現在のポリシーを確認
aws logs get-data-protection-policy \
  --log-group-identifier "/aws/my-application/logs"

# ポリシーを削除
aws logs delete-data-protection-policy \
  --log-group-identifier "/aws/my-application/logs"
data-protection-policy.json
{
  "Name": "data-protection-policy",
  "Description": "機密情報の検出とマスキング",
  "Version": "2021-06-01",
  "Statement": [
    {
      // 監査アクション: 検出結果を記録
      "Sid": "audit-policy",
      "DataIdentifier": [
        "arn:aws:dataprotection::aws:data-identifier/CreditCardNumber",
        "arn:aws:dataprotection::aws:data-identifier/EmailAddress",
        "arn:aws:dataprotection::aws:data-identifier/Address"
      ],
      "Operation": {
        "Audit": {
          "FindingsDestination": {
            "CloudWatchLogs": {
              "LogGroup": "/aws/data-protection/audit-logs"
            }
          }
        }
      }
    },
    {
      // マスキングアクション: 機密情報を「*****」に置換
      "Sid": "deidentify-policy",
      "DataIdentifier": [
        "arn:aws:dataprotection::aws:data-identifier/CreditCardNumber",
        "arn:aws:dataprotection::aws:data-identifier/EmailAddress",
        "arn:aws:dataprotection::aws:data-identifier/Address"
      ],
      "Operation": {
        "Deidentify": {
          "MaskConfig": {}
        }
      }
    }
  ]
}
CloudFormation
Resources:
  MyLogGroup:
    Type: AWS::Logs::LogGroup
    Properties:
      LogGroupName: /aws/my-application/logs
      RetentionInDays: 30
      # データ保護ポリシーを設定
      DataProtectionPolicy:
        Name: "data-protection-policy"
        Version: "2021-06-01"
        Statement:
          - Sid: "audit-and-mask"
            DataIdentifier:
              - "arn:aws:dataprotection::aws:data-identifier/CreditCardNumber"
              - "arn:aws:dataprotection::aws:data-identifier/EmailAddress"
            Operation:
              Audit:
                FindingsDestination:
                  CloudWatchLogs:
                    LogGroup: /aws/data-protection/audit
              Deidentify:
                MaskConfig: {}
5

主なユースケース

🏥

医療・ヘルスケア

患者の氏名、病歴、保険番号などの医療情報をログから自動的に保護。HIPAA対応に貢献します。

🛒

ECサイト・決済

クレジットカード番号、CVV、顧客の住所など決済関連情報を保護。PCI-DSS準拠をサポートします。

🏦

金融・銀行

口座番号、取引情報、顧客の個人情報を保護。金融規制への対応と顧客データの保護を実現します。

🌍

グローバル展開

EU圏ユーザーのデータをGDPR準拠で保護。国際的なプライバシー規制への対応を支援します。

6

注意事項と料金

設定前に知っておくべきこと
  • データ保護ポリシーは ロググループ単位 で設定します。必要なロググループにのみ適用しましょう。
  • マスキング(Deidentify)されたデータは 元に戻せません 。監査目的で元データが必要な場合は「Audit」のみを使用することを検討してください。
  • ポリシーは 新規ログイベント にのみ適用されます。既存のログには遡及的に適用されません。
  • 検出精度は100%ではありません。 誤検出 (False Positive)や 検出漏れ (False Negative)が発生する可能性があります。
  • 権限を持つユーザー(logs:Unmask)は、マスキングされたデータを 表示時に復元 できます。
  • データ保護ポリシーを有効にすると 追加料金 が発生します(下記参照)。
💰 料金体系
🔍
データスキャン
$0.12 / GB
🎭
データ保護
$0.12 / GB
🔓
マスク解除
$0.02 / 1000件
📊
監査結果出力
各サービス料金

※ 料金は東京リージョン(ap-northeast-1)の場合。最新の料金は AWS 公式サイトをご確認ください。

7

よくある質問

Q. マスキングされたデータは完全に削除されますか?

はい、Deidentifyアクションでマスキングされたデータは「*****」に 上書き されます。ただし、 logs:Unmask 権限を持つユーザーは、CloudWatch Logsコンソールや API でデータを 表示する際に 元の値を見ることができます(ログ自体は変更されたまま)。この機能は監査やトラブルシューティング用に提供されています。

Q. 既存のログにも適用されますか?

いいえ、データ保護ポリシーは ポリシー設定後に新しく送信されたログイベント にのみ適用されます。既存のログには遡及的に適用されません。既存ログに機密情報が含まれている場合は、手動で対応するか、ログの保持期間設定で古いログを自動削除する方法を検討してください。

Q. カスタムの検出パターンを追加できますか?

はい、 カスタムデータ識別子 を作成できます。正規表現を使用して、社員番号や独自の識別子など、AWS が提供するマネージドデータ識別子では検出できないパターンを定義できます。

Q. パフォーマンスへの影響はありますか?

データ保護ポリシーはログの取り込み時にスキャンを行うため、わずかな処理オーバーヘッドが発生します。ただし、一般的なユースケースでは体感できるほどの遅延は発生しません。大量のログを処理する場合は、コストと合わせてパフォーマンスの監視を行うことを推奨します。

Q. どのリージョンで利用できますか?

データ保護ポリシーは、東京(ap-northeast-1)を含む主要なAWSリージョンで利用可能です。ただし、一部のリージョンでは利用できない場合があります。最新の対応状況は AWS のリージョン表をご確認ください。

📝 まとめ

CloudWatch Logs データ保護ポリシーは、
ログに含まれる機密情報を自動で検出・保護する強力な機能です

🔍 150種類以上の自動検出 🎭 自動マスキング 📋 監査ログ記録 ⚖️ コンプライアンス対応

Created by SSuzuki1063

AWS SAP Learning Resources