翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
の Amazon SNSトピックポリシー CloudTrail
SNS トピックに通知を送信するには、 に必要なアクセス許可 CloudTrail が必要です。 CloudTrail は、 CloudTrail コンソールで証跡を作成または更新する一環として Amazon SNSトピックを作成するときに、トピックに必要なアクセス許可を自動的にアタッチします。
重要
セキュリティのベストプラクティスとして、SNSトピックへのアクセスを制限するために、SNS通知を送信する証跡を作成または更新した後、SNSトピックにアタッチされているIAMポリシーを手動で編集して条件キーを追加することを強くお勧めします。詳細については、このトピックの「SNS トピックポリシーのセキュリティのベストプラクティス」を参照してください。
CloudTrail は、次のフィールドを使用して、次のステートメントをポリシーに追加します。
-
許可される SIDs。
-
のサービスプリンシパル名 CloudTrail。
-
リージョン、アカウント ID、SNSトピック名を含むトピック。
次のポリシーでは CloudTrail 、 はサポートされているリージョンからのログファイル配信に関する通知を送信できます。詳細については、「CloudTrail サポートされているリージョン」を参照してください。これは、証跡を作成または更新し、SNS通知を有効にするときに、新規または既存のSNSトピックポリシーにアタッチされるデフォルトのポリシーです。
SNS トピックポリシー
{ "Version": "2012-10-17", "Statement": [ { "Sid": "AWSCloudTrailSNSPolicy20131101", "Effect": "Allow", "Principal": { "Service": "cloudtrail.amazonaws.com" }, "Action": "SNS:Publish", "Resource": "arn:aws:sns:
region
:SNSTopicOwnerAccountId
:SNSTopicName
" } ] }
で AWS KMS暗号化された Amazon SNSトピックを使用して通知を送信するには、次のステートメントを のポリシーに追加して、イベントソース (CloudTrail) と暗号化されたトピックとの互換性も有効にする必要があります AWS KMS key。
KMS キーポリシー
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "cloudtrail.amazonaws.com" }, "Action": [ "kms:GenerateDataKey*", "kms:Decrypt" ], "Resource": "*" } ] }
詳細については、「 AWS サービスからのイベントソースと暗号化されたトピック間の互換性を有効にする」を参照してください。
目次
SNS トピックポリシーのセキュリティのベストプラクティス
デフォルトでは、 が Amazon SNSトピックにア CloudTrail タッチするIAMポリシーステートメントにより、 CloudTrail サービスプリンシパルは によって識別される SNSトピックに発行できますARN。攻撃者がSNSトピックにアクセスしたり、 に代わってトピック受信者 CloudTrail に通知を送信したりしないようにするには、トピックポリシーを手動で編集 CloudTrail SNSして、 によってアタッチされたポリシーステートメントにaws:SourceArn
条件キーを追加します CloudTrail。このキーの値は、証跡ARNの 、またはSNSトピックを使用している証跡の配列ARNsです。特定の証跡 ID と証跡を所有するアカウントの ID の両方が含まれているため、SNSトピックへのアクセスは証跡を管理する権限を持つアカウントのみに制限されます。SNS トピックポリシーに条件キーを追加する前に、 CloudTrail コンソールで証跡の設定からSNSトピック名を取得します。
aws:SourceAccount
条件キーもサポートされていますが、推奨されません。
aws:SourceArn
条件キーをSNSトピックポリシーに追加するには
https://console.aws.amazon.com/sns/v3/home
で Amazon SNSコンソールを開きます。 -
ナビゲーションペインで、[トピック] を選択します。
-
証跡設定に表示されるSNSトピックを選択し、編集 を選択します。
-
[アクセスポリシー] を展開します。
-
アクセスポリシー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" }
-
次の例に示すように、条件
aws:SourceArn
用の新しいブロックを追加します。の値は、 に通知を送信する証跡ARNのaws:SourceArn
ですSNS。{ "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" } } }
-
SNS トピックポリシーの編集が完了したら、変更を保存 を選択します。
aws:SourceAccount
条件キーをSNSトピックポリシーに追加するには
https://console.aws.amazon.com/sns/v3/home
で Amazon SNSコンソールを開きます。 -
ナビゲーションペインで、[トピック] を選択します。
-
証跡設定に表示されるSNSトピックを選択し、編集 を選択します。
-
[アクセスポリシー] を展開します。
-
アクセスポリシー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" }
-
次の例に示すように、条件
aws:SourceAccount
用の新しいブロックを追加します。の値は、 CloudTrail 証跡を所有するアカウントの IDaws:SourceAccount
です。この例では、 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" } } }
-
SNS トピックポリシーの編集が完了したら、変更を保存 を選択します。
通知の送信用に既存のトピックを指定する
Amazon SNSコンソールでトピックポリシーに Amazon SNSトピックのアクセス許可を手動で追加し、 CloudTrail コンソールでトピックを指定できます。
SNS トピックポリシーを手動で更新するには
https://console.aws.amazon.com/sns/v3/home
で Amazon SNSコンソールを開きます。 -
[Topics] を選択し、トピックを選択します。
-
編集 を選択し、下にスクロールしてアクセスポリシー を選択します。
-
リージョン、アカウント ID、トピック名に適切な値SNS topic policyを指定して、 から ステートメントを追加します。
-
トピックが暗号化されたトピックの場合は、 CloudTrail に
kms:GenerateDataKey*
および アクセスkms:Decrypt
許可を付与する必要があります。詳細については、「Encrypted SNS topic KMS key policy」を参照してください -
[変更の保存] を選択します。
-
CloudTrail コンソールに戻り、証跡のトピックを指定します。
SNS トピックポリシーのトラブルシューティング
以下のセクションでは、SNSトピックポリシーのトラブルシューティング方法について説明します。
CloudTrail がリージョンの通知を送信していない
証跡の作成または更新の一環として新しいトピックを作成すると、 は必要なアクセス許可をトピックにア CloudTrail タッチします。トピックポリシーは、サービスプリンシパル名 を使用します。これにより"cloudtrail.amazonaws.com"
、 CloudTrail はすべてのリージョンに通知を送信できます。
CloudTrail がリージョンの通知を送信しない場合、トピックにIDs各リージョンの CloudTrail アカウントを指定する古いポリシーがある可能性があります。このポリシーは、指定されたリージョンに対してのみ通知を送信する CloudTrail アクセス許可を付与します。
次のトピックポリシーでは CloudTrail 、 が指定された 9 つのリージョンの通知のみを送信できるようにします。
例 アカウントの トピックポリシー IDs
{
"Version": "2012-10-17",
"Statement": [{
"Sid": "AWSCloudTrailSNSPolicy20131101",
"Effect": "Allow",
"Principal": {"AWS": [
"arn:aws:iam::903692715234:root",
"arn:aws:iam::035351147821:root",
"arn:aws:iam::859597730677:root",
"arn:aws:iam::814480443879:root",
"arn:aws:iam::216624486486:root",
"arn:aws:iam::086441151436:root",
"arn:aws:iam::388731089494:root",
"arn:aws:iam::284668455005:root",
"arn:aws:iam::113285607260:root"
]},
"Action": "SNS:Publish",
"Resource": "aws:arn:sns:us-east-1:123456789012:myTopic"
}]
}
このポリシーは、個々の CloudTrail アカウント に基づくアクセス許可を使用しますIDs。新しいリージョンのログを配信するには、ポリシーを手動で更新して、そのリージョンの CloudTrailアカウント ID を含める必要があります。例えば、 は米国東部 (オハイオ) リージョンのサポート CloudTrail を追加したため、ポリシーを更新して、そのリージョンARNのアカウント ID を追加する必要があります: "arn:aws:iam::475085895292:root"
。
ベストプラクティスとして、 CloudTrail サービスプリンシパルのアクセス許可を使用するようにポリシーを更新します。これを行うには、アカウント ID をサービスプリンシパル名 に置き換えARNsます"cloudtrail.amazonaws.com"
。
これにより、現在のリージョンと新しいリージョンの通知を送信する CloudTrail アクセス許可が に付与されます。以下に示しているのは、以前のポリシーの最新バージョンです。
例 サービスプリンシパル名を使用したトピックポリシー
{
"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 が組織のメンバーアカウントの通知を送信していない
AWS Organizations 組織の証跡を持つメンバーアカウントが Amazon SNS通知を送信していない場合、SNSトピックポリシーの設定に問題がある可能性があります。 は、リソースの検証に失敗した場合でも、メンバーアカウントに組織の証跡 CloudTrail を作成します。例えば、組織の証跡のSNSトピックにはすべてのメンバーアカウント が含まれていませんIDs。SNS トピックポリシーが正しくない場合、認証に失敗します。
証跡のSNSトピックポリシーに認証の失敗があるかどうかを確認するには:
-
CloudTrail コンソールから、証跡の詳細ページを確認します。認証に失敗した場合、詳細ページには警告が表示され
SNS authorization failed
、SNSトピックポリシーの修正が示されます。 -
から AWS CLI、 get-trail-status コマンドを実行します。認証に失敗した場合、コマンド出力には の値が設定された
LastNotificationError
フィールドが含まれますAuthorizationError
。
追加リソース
SNS トピックとそのサブスクライブの詳細については、「Amazon Simple Notification Service デベロッパーガイド」を参照してください。