データ保護ポリシーとは
- データ保護ポリシーはどの機密データをモニタリングし、トピックを介してやり取りされないようにするかを定義します。
詳細
-
検出 : PII や PHI が入っていないか、データ識別子 を使用し、機械学習とパターンマッチングを使用して機密データを検出します。
-
オペレーション : 見つかったデータ識別子に基づいて、Audit(監査) 、De-identify(識別解除) 、Deny(拒否) のオペレーションを定義できます。
- Audit(監査) : 機密データの結果を AWS の送信先にロギングします。
- De-identify(識別解除) : 公開されたメッセージから機密データをマスクまたは編集します。インバウンドにのみ使用できます。
- Deny(拒否): メッセージに機密データが含まれている場合に Publish API リクエストまたはメッセージの配信のいずれかを中断します。
やってみる
設定モードには、「ベーシック」 と 「アドバンスト」 があります。
「ベーシック」 と 「アドバンスト」 の説明は図の通りですが、JSON のサンプルがドキュメントにあるの今回はそちらを利用し検証してみたいと思います。
監査ポリシー
次の例では、インバウンドでクレジットカード番号をモニタリングし、その結果を CloudWatch Logs に送信することで、トピックを通過するメッセージの 99% を監査します。
なお、CloudWatch Logs に送信する場合は、ロググループが、 /aws/vendedlogs/
で始まる必要があります。
{
"Name": "__example_data_protection_policy",
"Description": "Example data protection policy",
"Version": "2021-06-01",
"Statement": [
{
"DataDirection": "Inbound",
"Principal": ["*"],
"DataIdentifier": [
"arn:aws:dataprotection::aws:data-identifier/CreditCardNumber"
],
"Operation": {
"Audit": {
"SampleRate": "99",
"FindingsDestination": {
"CloudWatchLogs": {
"LogGroup": "/aws/vendedlogs/test"
}
}
}
}
}
]
}
こちらのページにあるダミーのクレジットカード番号を SNS からメッセージを発行して確認してみると、次の通り、CloudWatch Logs で検出されました。
{
"messageId": "36b8a2f3-2930-5697-bf06-fe19a9b37864",
"auditTimestamp": "2023-05-26T09:39:15Z",
"callerPrincipal": "arn:aws:iam::XXXXXXXXXXXX:user/XXX",
"resourceArn": "arn:aws:sns:ap-northeast-1:XXXXXXXXXXXX:test",
"dataIdentifiers": [
{
"name": "CreditCardNumber",
"count": 2,
"detections": [
{
"start": 6,
"end": 21
},
{
"start": 103,
"end": 118
}
]
}
],
"policyName": "__example_data_protection_policy"
}
識別解除ポリシー
次の例では、メッセージの内容から機密データをマスキング(#)して、クレジット番号 によりユーザーがメッセージをトピックに発行するのを防ぎます。
{
"Name": "__example_data_protection_policy",
"Description": "Example data protection policy",
"Version": "2021-06-01",
"Statement": [
{
"DataDirection": "Inbound",
"Principal": [
"arn:aws:iam::123456789012:user/ExampleUser"
],
"DataIdentifier": [
"arn:aws:dataprotection::aws:data-identifier/CreditCardNumber"
],
"Operation": {
"Deidentify": {
"MaskConfig": {
"MaskWithCharacter": "#"
}
}
}
}
]
}
同じように、ダミーのクレジットカード番号を SNS からメッセージを発行して確認して、サブスクライブしている Email を確認してみましたが、1 行目はマスク化してくれましたが、2 行目はマスクしてくれませんでした。
Visa
################
44XXXXXXXXXXXXXX
拒否ポリシー
次の例では、クレジットカード番号 を含むメッセージを受信しないようにブロックします。
{
"Name": "__example_data_protection_policy",
"Description": "Example data protection policy",
"Version": "2021-06-01",
"Statement": [
{
"DataDirection": "Outbound",
"Principal": [
"arn:aws:iam::123456789012:user/ExampleUser"
],
"DataIdentifier": [
"arn:aws:dataprotection::aws:data-identifier/CreditCardNumber"
],
"Operation": {
"Deny": {}
}
}
]
}
同じように、ダミーのクレジットカード番号を SNS からメッセージを発行して確認して、サブスクライブしている Email を確認してみましたが、今回はアウトバウンドですのでもちろんメッセージは届いていません。
配信ステータスをログに記録することで、詳細を確認可能ですが、今回は Email にサブスクライブしているので、割愛させていただきます。