

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# Amazon SNS のデータ保護ポリシーオペレーション
<a name="sns-message-data-protection-operations"></a>

**重要**  
Amazon SNS メッセージデータ保護は、2026 年 4 月 30 日以降、新規のお客様は利用できなくなります。代替方法の詳細とガイダンスについては、[Amazon SNS メッセージデータ保護の可用性の変更](https://docs.aws.amazon.com/sns/latest/dg/sns-message-data-protection-availability-change.html)」を参照してください。

以下は、機密データの監査および拒否に使用できるデータ保護ポリシーの例です。サンプルアプリケーションを含む完全なチュートリアルについては、「[Introducing message data protection for Amazon SNS](https://aws.amazon.com/blogs/compute/introducing-message-data-protection-for-amazon-sns/)」(Amazon SNS のメッセージデータ保護の実装) のブログ記事を参照してください。

## 監査オペレーション
<a name="statement-operation-json-properties-audit"></a>

**監査**オペレーションは、トピックのインバウンドメッセージをサンプリングし、送信 AWS 先の機密データの検出結果をログに記録します。サンプルレートは、0 ～ 99 の整数になります。このオペレーションには、次のいずれかのタイプのロギング先が必要です。

1. **[FindingsDestination]** — Amazon SNS トピックがペイロードに機密データを見つけたときのロギング先。

1. **[NoFindingsDestination]** — Amazon SNS トピックがペイロードに機密データを見つけなかったときのロギング先。

次の各ログ送信先タイプ AWS のサービス で以下を使用できます。
+ **Amazon CloudWatch Logs** (オプション) — `LogGroup` はトピックリージョンにあり、名前が **/aws/vendedlogs/** で始まる必要があります。
+ ****(オプション) – `DeliveryStream` はトピックリージョンにあり、配信ストリームのソースとして **Direct PUT** が必要です。詳細については、「*Amazon Data Firehose デベロッパーガイド*」の「[送信元、送信先、および名前](https://docs.aws.amazon.com/firehose/latest/dev/create-name.html)」を参照してください。
+ **Amazon S3** (オプション) — Amazon S3 バケット名。[SSE-KMS 暗号化を有効にして Amazon S3 バケットを使用するには、追加のアクションが必要です](#flow-logs-s3-cmk-policy)。

```
{
  "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"
            }
      }
    }
  }
}
```

### ログの送信先の指定に必要な権限
<a name="required-permissions-log-operations"></a>

データ保護ポリシーでロギング先を指定する場合、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 [SSE-KMS 暗号化を有効にして Amazon S3 バケットを使用するには、追加のアクションが必要です](#flow-logs-s3-cmk-policy)。  | 

------
#### [ JSON ]

****  

```
{
    "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:us-west-1:123456789012:SampleLogGroupName:*:*"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "iam:CreateServiceLinkedRole",
                "firehose:TagDeliveryStream"
            ],
            "Resource": "*"
        },
        {
            "Effect": "Allow",
            "Action": [
                "s3:PutBucketPolicy",
                "s3:GetBucketPolicy"
            ],
            "Resource": [
                "arn:aws:s3:::bucket-name"
            ]
        }
    ]
}
```

------

#### SSE-KMS に使用する必須のキーポリシー
<a name="flow-logs-s3-cmk-policy"></a>

Amazon S3 バケットをログの送信先として使用する場合は、Amazon S3 S3-Managed) または によるサーバー側の暗号化 AWS KMS keys (SSE-KMS) を有効にすることで、バケット内のデータを保護できます。詳細については、「*Amazon S3 ユーザーガイド*」の「[サーバー側の暗号化を使用したデータの保護](https://docs.aws.amazon.com/AmazonS3/latest/userguide/serv-side-encryption.html)」をご参照ください。

SSE-S3 を選択した場合、追加の設定は必要ありません。Amazon S3 が暗号化キーを処理します。

SSE-KMS を選択した場合は、カスタマーマネージドキーを使用する必要があります。ログ配信アカウントが S3 バケットに書き込めるように、カスタマーマネージドキーのキーポリシーを更新する必要があります。SSE-KMS での使用に必要なキーポリシーについては、「Amazon CloudWatch Logs ユーザーガイド」の「[Amazon S3 バケットのサーバー側の暗号化](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/AWS-logs-and-resource-policy.html#AWS-logs-SSE-KMS-S3)」を参照してください。

### 監査先ログの例
<a name="data-protection-policy-audit-destination-log"></a>

次の例では、`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
        }
      ]
    }
  ]
}
```

### 監査オペレーションのメトリクス
<a name="data-protection-policy-audit-metrics"></a>

監査オペレーションで `FindingsDestination` または `NoFindingsDestination` プロパティが指定された場合、トピックのオーナーは CloudWatch `MessagesWithFindings` および `MessagesWithNoFindings` メトリクスも受信します。

![\[指定した期間のデータを表示する監査の例。\]](http://docs.aws.amazon.com/ja_jp/sns/latest/dg/images/audit-operations-metrics.png)


## 識別解除オペレーション
<a name="statement-operation-json-properties-deidentify"></a>

**識別解除**オペレーションは、発行または配信するメッセージの機密データをマスキングまたは削除します。このオペレーションは、インバウンドとアウトバウンドの両方のメッセージに使用可能であり、次のいずれかのタイプの設定を必要とします。
+ **MaskConfig** — 次の表からサポートされている文字を使用してマスクします。例えば、ssn: `123-45-6789` は ssn: `###########` になります。

  ```
  {
  "Operation": {
      "Deidentify": {
          "MaskConfig": {
              "MaskWithCharacter": "#"
            }
      }
  }
  ```    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/sns/latest/dg/sns-message-data-protection-operations.html)
+ **RedactConfig** — データを完全に削除して編集します。例えば、ssn: `123-45-6789` は ssn: ` ` になります。

  ```
  {
  "Operation": {
      "Deidentify": {
          "RedactConfig": {}
      }
  }
  ```

受信メッセージでは、監査オペレーション後に機密データが識別解除され、メッセージ全体が機密である場合、`SNS:Publish` API 発信者は次の無効なパラメータエラーを受け取ります。

`Error code: AuthorizationError ...`

## 拒否オペレーション
<a name="statement-operation-json-properties-deny"></a>

**[Deny]** (拒否) オペレーションは、メッセージに機密データが含まれている場合に `Publish` API リクエストまたはメッセージの配信のいずれかを中断します。拒否オペレーションオブジェクトは、追加の設定を必要としないため空です。

```
"Operation": {
    "Deny": {}
}
```

インバウンドメッセージでは、`SNS:Publish` API 発信者が認可エラーを受け取ります。

`Error code: AuthorizationError ...`

アウトバウンドメッセージでは、Amazon SNS トピックはメッセージをサブスクリプションに配信しません。不正配信を追跡するには、トピックの[[delivery status logging]](sns-topic-attributes.md) (配信ステータスのログ記録) を有効にします。以下は、配信ステータスログの例です。

```
{
    "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"
}
```