

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

# CloudTrail の Amazon SNS トピックポリシー
<a name="cloudtrail-permissions-for-sns-notifications"></a>

SNS トピックに通知を送信するには、CloudTrail が必要なアクセス許可を持っている必要があります。Amazon SNS トピックを CloudTrail コンソールでの証跡の作成あるいは更新の一部として作成するとき、CloudTrail はバケットに必要なアクセス権限を自動的にアタッチします。

**重要**  
セキュリティのベストプラクティスとして、SNS トピックへのアクセスを制限するために、SNS 通知を送信する証跡を作成または更新した後、SNS トピックにアタッチされている IAM ポリシーを手動で編集して条件キーを追加することを強くお勧めします。詳細については、このトピックの「[SNS トピックポリシーのセキュリティのベストプラクティス](#cloudtrail-sns-notifications-policy-security)」を参照してください。

CloudTrail は、次のフィールドを使用して、ポリシーに次のステートメントを追加します。
+ 許可された SID。
+ CloudTrail のサービスプリンシパル名。
+ SNS トピック (リージョン、アカウント ID、およびトピック名を含む)。

次のポリシーを使用すると、CloudTrail はサポートされているリージョンからログファイルの配信に関する通知を送信できるようになります。詳細については、「[CloudTrail がサポートされているリージョン](cloudtrail-supported-regions.md) 」を参照してください。これは、証跡を作成または更新し、SNS 通知を有効にするときに新規または既存の SNS トピックポリシーにアタッチされるデフォルトのポリシーです。

**SNS トピックポリシー**

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "AWSCloudTrailSNSPolicy20131101",
            "Effect": "Allow",
            "Principal": {
                "Service": "cloudtrail.amazonaws.com"
            },
            "Action": "SNS:Publish",
            "Resource": "arn:aws:sns:us-east-1:111111111111:SNSTopicName"
        }
    ]
}
```

------<a name="kms-key-policy"></a>

 AWS KMS暗号化された Amazon SNS トピックを使用して通知を送信するには、次のステートメントを のポリシーに追加して、イベントソース (CloudTrail) と暗号化されたトピックとの互換性も有効にする必要があります AWS KMS key。

**KMS キーポリシー**

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "Service": "cloudtrail.amazonaws.com"
            },
            "Action": [
                "kms:GenerateDataKey*",
                "kms:Decrypt"
            ],
            "Resource": "*"
        }
    ]
}
```

------

詳細については、[「 AWS サービスからのイベントソースと暗号化されたトピック間の互換性を有効にする](https://docs.aws.amazon.com/sns/latest/dg/sns-key-management.html#compatibility-with-aws-services)」を参照してください。

**Contents**
+ [SNS トピックポリシーのセキュリティのベストプラクティス](#cloudtrail-sns-notifications-policy-security)
+ [通知の送信用に既存のトピックを指定する](#specifying-an-existing-topic-for-sns-notifications)
+ [SNS トピックポリシーのトラブルシューティング](#troubleshooting-sns-topic-policy)
  + [CloudTrail がリージョンの通知を送信しない](#sns-topic-policy-for-multiple-regions)
  + [CloudTrail が組織内のメンバーアカウントに通知を送信しない](#sns-topic-policy-authorization-failure)
+ [その他のリソース](#cloudtrail-notifications-more-info-5)

## SNS トピックポリシーのセキュリティのベストプラクティス
<a name="cloudtrail-sns-notifications-policy-security"></a>

デフォルトでは、CloudTrail が Amazon SNS トピックにアタッチする IAM ポリシーステートメントにより、CloudTrail サービスプリンシパルが ARN によって識別される SNS トピックに発行できるようになります。攻撃者が SNS トピックにアクセスしたり、CloudTrail に代わってトピック受信者に通知を送信したりすることを防ぐには、CloudTrail SNS トピックポリシーを手動で編集して、`aws:SourceArn` 条件キーを CloudTrail によってアタッチされたポリシーステートメントに追加します。このキーの値は、証跡の ARN、または SNS トピックを使用している証跡 ARN の配列です。特定の証跡 ID と証跡を所有するアカウント ID の両方が含まれているため、SNS トピックへのアクセスは証跡を管理するアクセス許可を持つアカウントのみに制限されます。SNS トピックポリシーに条件キーを追加する前に、CloudTrail コンソールの証跡の設定から SNS トピック名を取得します。

`aws:SourceAccount` 条件キーもサポートされていますが、推奨されません。

**`aws:SourceArn` 条件キーを SNS トピックポリシーに追加するには**

1. Amazon SNS コンソールの[https://console.aws.amazon.com/sns/v3/home](https://console.aws.amazon.com/sns/v3/home)を開いてください。

1. ナビゲーションペインで、**[トピック]** を選択してください。

1. 証跡設定に表示される SNS トピックを選択し、[**編集**] を選択します。

1. [**アクセスポリシー**] を展開します。

1. **アクセスポリシー** JSON エディタで、次の例のようなブロックを探します。

   ```
       {
         "Sid": "AWSCloudTrailSNSPolicy20150319",
         "Effect": "Allow",
         "Principal": {
           "Service": "cloudtrail.amazonaws.com"
         },
         "Action": "SNS:Publish",
         "Resource": "arn:aws:sns:us-west-2:111122223333:aws-cloudtrail-logs-111122223333-61bbe496"
       }
   ```

1. 次の例に示すように、条件 `aws:SourceArn` 用の新しいブロックを追加します。の値`aws:SourceArn`は、SNS に通知を送信するトレイルの ARN です。

   ```
       {
         "Sid": "AWSCloudTrailSNSPolicy20150319",
         "Effect": "Allow",
         "Principal": {
           "Service": "cloudtrail.amazonaws.com"
         },
         "Action": "SNS:Publish",
         "Resource": "arn:aws:sns:us-west-2:111122223333:aws-cloudtrail-logs-111122223333-61bbe496",
         "Condition": {
           "StringEquals": {
             "aws:SourceArn": "arn:aws:cloudtrail:us-west-2:123456789012:trail/Trail3"
           }
         }
       }
   ```

1. SNS トピックポリシーの編集が終了したら、[**変更の保存**] を選択します。

**`aws:SourceAccount` 条件キーを SNS トピックポリシーに追加するには**

1. Amazon SNS コンソールの[https://console.aws.amazon.com/sns/v3/home](https://console.aws.amazon.com/sns/v3/home)を開いてください。

1. ナビゲーションペインで、**[トピック]** を選択してください。

1. 証跡設定に表示される SNS トピックを選択し、[**編集**] を選択します。

1. [**アクセスポリシー**] を展開します。

1. **アクセスポリシー** JSON エディタで、次の例のようなブロックを探します。

   ```
       {
         "Sid": "AWSCloudTrailSNSPolicy20150319",
         "Effect": "Allow",
         "Principal": {
           "Service": "cloudtrail.amazonaws.com"
         },
         "Action": "SNS:Publish",
         "Resource": "arn:aws:sns:us-west-2:111122223333:aws-cloudtrail-logs-111122223333-61bbe496"
       }
   ```

1. 次の例に示すように、条件 `aws:SourceAccount` 用の新しいブロックを追加します。`aws:SourceAccount` の値は CloudTrail 証跡を所有するアカウントの ID です。この例では、SNS トピックへのアクセスを、 AWS アカウント 123456789012 にサインインできるユーザーのみに制限します。

   ```
       {
         "Sid": "AWSCloudTrailSNSPolicy20150319",
         "Effect": "Allow",
         "Principal": {
           "Service": "cloudtrail.amazonaws.com"
         },
         "Action": "SNS:Publish",
         "Resource": "arn:aws:sns:us-west-2:111122223333:aws-cloudtrail-logs-111122223333-61bbe496",
         "Condition": {
           "StringEquals": {
             "aws:SourceAccount": "123456789012"
           }
         }
       }
   ```

1. SNS トピックポリシーの編集が終了したら、[**変更の保存**] を選択します。

## 通知の送信用に既存のトピックを指定する
<a name="specifying-an-existing-topic-for-sns-notifications"></a>

Amazon SNS コンソールでAmazon SNS トピックのトピックポリシーへのアクセス許可を手動で追加した後、CloudTrail コンソールでトピックを指定できます。

**SNS トピックポリシーを手動で更新するには**

1. Amazon SNS コンソールの[https://console.aws.amazon.com/sns/v3/home](https://console.aws.amazon.com/sns/v3/home)を開いてください。

1. [**Topics**] を選択し、トピックを選択します。

1. **[編集]** を選択し、下にスクロールして **[アクセスポリシー]** にアクセスします。

1. リージョン、アカウント ID、およびトピック名の適切な値を使用して、[SNS topic policy](#sns-topic-policy) からステートメントを追加します。

1. トピックが暗号化されたトピックの場合は、`kms:GenerateDataKey*` および `kms:Decrypt` のアクセス許可を CloudTrail に付与する必要があります。詳細については、「[Encrypted SNS topic KMS key policy](#kms-key-policy)」を参照してください。

1. **[Save changes]** (変更の保存) をクリックします。

1. CloudTrail コンソールに戻り、証跡のトピックを指定します。

## SNS トピックポリシーのトラブルシューティング
<a name="troubleshooting-sns-topic-policy"></a>

以下のセクションでは、SNS トピックポリシーをトラブルシューティングする方法について説明します。

**Topics**
+ [CloudTrail がリージョンの通知を送信しない](#sns-topic-policy-for-multiple-regions)
+ [CloudTrail が組織内のメンバーアカウントに通知を送信しない](#sns-topic-policy-authorization-failure)

### CloudTrail がリージョンの通知を送信しない
<a name="sns-topic-policy-for-multiple-regions"></a>

証跡を作成または更新する操作の一部として新しいトピックを作成した場合、CloudTrail によって必要なアクセス許可がトピックにアタッチされます。トピックポリシーでは、`"cloudtrail.amazonaws.com"` というサービスプリンシパル名が使用され、これにより、CloudTrail がすべてのリージョンについて通知を送信できるようになります。

CloudTrail が特定のリージョンについて通知を送信していない場合は、そのトピックで、リージョンごとに CloudTrail アカウント ID を指定する古いポリシーが使用されている可能性があります。このタイプのポリシーでは、指定されたリージョンについてのみ通知を送信できる CloudTrail にアクセス許可が付与されます。

ベストプラクティスとして、CloudTrail サービスプリンシパルでアクセス権限を使用するようにポリシーを更新します。これを行うには、アカウント ID ARN をサービスプリンシパル名 `"cloudtrail.amazonaws.com"` に置き換えます。

次のポリシー例により、現在のリージョンと新しいリージョンについて通知を送信するためのアクセス許可が CloudTrail に付与されます。

**Example サービスプリンシパル名を使用したトピックポリシー**    
****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [{
        "Sid": "AWSCloudTrailSNSPolicy20131101",
        "Effect": "Allow",
        "Principal": {"Service": "cloudtrail.amazonaws.com"},
        "Action": "SNS:Publish",
        "Resource": "arn:aws:sns:us-west-2:123456789012:myTopic"
    }]
}
```

ポリシーの値が正しいことを確認します。
+ [`Resource`] フィールドに、トピックの所有者のアカウント番号を指定します。自分で作成したトピックについては、自分のアカウント番号を指定します。
+ リージョンと SNS トピック名の適切な値を指定します。

### CloudTrail が組織内のメンバーアカウントに通知を送信しない
<a name="sns-topic-policy-authorization-failure"></a>

 AWS Organizations 組織の証跡を持つメンバーアカウントが Amazon SNS 通知を送信しない場合、SNS トピックポリシーの設定に問題がある可能性があります。CloudTrail は、リソースの検証が失敗した場合でも、メンバーアカウントに組織の証跡を作成します。例えば、組織の証跡の SNS トピックには、すべてのメンバーアカウント ID は含まれていません。SNS トピックポリシーが正しくない場合、認証エラーが発生します。

証跡の SNS トピックポリシーに認証失敗があるかどうかを確認する方法
+ CloudTrail コンソールで、証跡の詳細ページを確認します。認証に失敗した場合、詳細ページには警告 `SNS authorization failed` が表示され、SNS トピックポリシーの修正を求めます。
+ から AWS CLI、 [https://docs.aws.amazon.com/cli/latest/reference/cloudtrail/get-trail-status.html](https://docs.aws.amazon.com/cli/latest/reference/cloudtrail/get-trail-status.html) コマンドを実行します。認証に失敗した場合、コマンド出力には `AuthorizationError` の値を持つ `LastNotificationError` フィールドが含まれます。

## その他のリソース
<a name="cloudtrail-notifications-more-info-5"></a>

Amazon SNS トピックおよびそのサブスクライブの詳細については、「[Amazon Simple Notification Service デベロッパーガイド](https://docs.aws.amazon.com/sns/latest/dg/)」を参照してください。