翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
データ保護ポリシーオペレーション
以下は、機密データの監査および拒否に使用できるデータ保護ポリシーの例です。サンプルアプリケーションを含む完全なチュートリアルについては、「Introducing message data protection for Amazon SNS
監査オペレーション
[Audit] (監査) オペレーションは、トピックのインバウンドメッセージをサンプリングし、機密データの結果を AWS の送信先にロギングします。サンプルレートは、0 ~ 99 の整数になります。このオペレーションには、次のいずれかのタイプのロギング先が必要です。
-
FindingsDestination – Amazon SNS トピックがペイロード内の機密データを検出したときのログ記録の送信先。
-
NoFindingsDestination – Amazon SNS トピックがペイロードで機密データを見つけられない場合のログ記録先。
次の AWS サービス を以下の各ログの送信先タイプで使用できます。
-
Amazon CloudWatch Logs (オプション) –
LogGroup
はトピックリージョンにあり、名前は /aws/vendedlogs/ で始まる必要があります。 -
Amazon Data Firehose (オプション) – はトピックリージョンにあり、配信ストリームのソースとしてダイレクト PUT を持っている
DeliveryStream
必要があります。詳細については、「Amazon Data Firehose デベロッパーガイド」の「送信元、送信先、名前」を参照してください。 -
Amazon S3 (オプション) — Amazon S3 バケット名。SSE-KMS 暗号化を有効にして Amazon S3 バケットを使用するには、追加のアクションが必要です。
{ "Operation": { "Audit": { "SampleRate": "99", "FindingsDestination": { "CloudWatchLogs": { "LogGroup": "/aws/vendedlogs/log-group-name" }, "Firehose": { "DeliveryStream": "delivery-stream-name" }, "S3": { "Bucket": "bucket-name" } }, "NoFindingsDestination": { "CloudWatchLogs": { "LogGroup": "/aws/vendedlogs/log-group-name" }, "Firehose": { "DeliveryStream": "delivery-stream-name" }, "S3": { "Bucket": "bucket-name" } } } } }
ログの送信先の指定に必要な権限
データ保護ポリシーでロギング先を指定する場合、Amazon SNS PutDataProtectionPolicy
API、または --data-protection-policy
パラメータを含む CreateTopic
API を呼び出す IAM プリンシパルの IAM ID ポリシーに、次のアクセス権限を追加する必要があります。
監査先 | IAM 許可 |
---|---|
デフォルト値 | logs:CreateLogDelivery logs:GetLogDelivery logs:UpdateLogDelivery logs:DeleteLogDelivery logs:ListLogDeliveries |
CloudWatchLogs | logs:PutResourcePolicy logs:DescribeResourcePolicies logs:DescribeLogGroups |
Firehose | iam:CreateServiceLinkedRole firehose:TagDeliveryStream |
S3 | s3:PutBucketPolicy s3:GetBucketPolicy |
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "logs:CreateLogDelivery", "logs:GetLogDelivery", "logs:UpdateLogDelivery", "logs:DeleteLogDelivery", "logs:ListLogDeliveries" ], "Resource": [ "*" ] }, { "Effect": "Allow", "Action": [ "logs:PutResourcePolicy", "logs:DescribeResourcePolicies", "logs:DescribeLogGroups" ], "Resource": [ "arn:aws:logs:region:account-id:SampleLogGroupName:*:*" ] }, { "Effect": "Allow", "Action": [ "iam:CreateServiceLinkedRole", "firehose:TagDeliveryStream" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "s3:PutBucketPolicy", "s3:GetBucketPolicy" ], "Resource": [ "arn:aws:s3:::bucket-name" ] } ] }
SSE-KMS に使用する必須のキーポリシー
Amazon S3 バケットをログの送信先として使用する場合、バケット内のデータを保護するには、Amazon S3 マネージドキーによるサーバー側の暗号化 (SSE-S3) または AWS KMS keys によるサーバー側の暗号化 (SSE-KMS) のいずれかを有効にします。詳細については、Amazon S3 ユーザーガイドの「サーバー側の暗号化を使用したデータの保護」をご参照ください。
SSE-S3 を選択した場合、追加の設定は必要ありません。Amazon S3 が暗号化キーを処理します。
SSE-KMS を選択した場合は、カスタマーマネージドキーを使用する必要があります。ログ配信アカウントが S3 バケットに書き込めるように、カスタマーマネージドキーのキーポリシーを更新する必要があります。SSE-KMS で使用するために必要なキーポリシーの詳細については、「Amazon Logs ユーザーガイド」の「Amazon S3 バケットのサーバー側の暗号化 CloudWatch 」を参照してください。
監査先ログの例
次の例では、callerPrincipal
を使用して機密コンテンツのソースを特定します。また、messageID
を参照として使用し、Publish
API レスポンスに対してチェックします。
{ "messageId": "34d9b400-c6dd-5444-820d-fbeb0f1f54cf", "auditTimestamp": "2022-05-12T2:10:44Z", "callerPrincipal": "arn:aws:iam::123412341234:role/Publisher", "resourceArn": "arn:aws:sns:us-east-1:123412341234:PII-data-topic", "dataIdentifiers": [ { "name": "Name", "count": 1, "detections": [ { "start": 1, "end": 2 } ] }, { "name": "PhoneNumber", "count": 2, "detections": [ { "start": 3, "end": 4 }, { "start": 5, "end": 6 } ] } ] }
監査オペレーションのメトリクス
監査オペレーションが FindingsDestination
または NoFindingsDestination
プロパティを指定すると、トピック所有者も MessagesWithFindings
および MessagesWithNoFindings
メトリクスを受け取ります CloudWatch。
![指定した期間のデータを表示する監査の例。](images/audit-operations-metrics.png)
識別解除オペレーション
識別解除オペレーションは、発行または配信するメッセージの機密データをマスキングまたは削除します。このオペレーションは、インバウンドとアウトバウンドの両方のメッセージに使用可能であり、次のいずれかのタイプの設定を必要とします。
-
MaskConfig – 次の表でサポートされている文字を使用してマスクします。例えば、ssn:
123-45-6789
は ssn:###########
になります。{ "Operation": { "Deidentify": { "MaskConfig": { "MaskWithCharacter": "#" } } }
サポートされているマスク文字 名前 * アスタリスク A~Z、a~z、0~9 英数字 スペース ! 感嘆符 $ ドル記号 % パーセント記号 & アンパサンド () かっこ
+ プラス記号 , カンマ - ハイフン . [Period] (期間) /\ スラッシュ、バックスラッシュ
# ナンバー記号 : コロン ; セミコロン =, <> 等号。小なりまたは大なり
@ アットマーク [] 角かっこ ^ キャレット記号 _ 下線 ` バックティック | 縦棒 ~ チルダ記号 -
RedactConfig - データを完全に削除して編集します。例えば、ssn:
123-45-6789
は ssn:{ "Operation": { "Deidentify": { "RedactConfig": {} } }
受信メッセージでは、監査オペレーション後に機密データが識別解除され、メッセージ全体が機密である場合、SNS:Publish
API 発信者は次の無効なパラメータエラーを受け取ります。
Error code: AuthorizationError ...
拒否オペレーション
[Deny] (拒否) オペレーションは、メッセージに機密データが含まれている場合に Publish
API リクエストまたはメッセージの配信のいずれかを中断します。拒否オペレーションオブジェクトは、追加の設定を必要としないため空です。
"Operation": { "Deny": {} }
インバウンドメッセージでは、SNS:Publish
API 発信者が認証エラーを受け取ります。
Error code: AuthorizationError ...
アウトバウンドメッセージでは、Amazon SNS トピックはメッセージをサブスクリプションに配信しません。不正配信を追跡するには、トピックの[delivery status logging] (配信ステータスのログ記録) を有効にします。以下は、配信ステータスログの例です。
{ "notification": { "messageMD5Sum": "29638742ffb68b32cf56f42a79bcf16b", "messageId": "34d9b400-c6dd-5444-820d-fbeb0f1f54cf", "topicArn": "arn:aws:sns:us-east-1:123412341234:PII-data-topic", "timestamp": "2022-05-12T2:12:44Z" }, "delivery": { "deliveryId": "98236591c-56aa-51ee-a5ed-0c7d43493170", "destination": "arn:aws:sqs:us-east-1:123456789012:NoNameAccess", "providerResponse": "The topic's data protection policy prohibits this message from being delivered to <subscription-arn>", "dwellTimeMs":20, "attempts":1, "statusCode": 403 }, "status": "FAILURE" }