Amazon SNS トピックへのアクセス許可 - AWS Config

Amazon SNS トピックへのアクセス許可

このトピックの情報は、別のアカウントが所有する Amazon SNS トピックを配信するように AWS Config を設定する場合に使用します。AWS Config は、Amazon SNS トピックに通知を送信するのに必要なアクセス許可を持っている必要があります。同じアカウント設定の場合、AWS Config コンソールは Amazon SNS トピックを作成するか、自分のアカウントから Amazon SNS トピックを選択すると、AWS Config は Amazon SNS トピックに必要なアクセス許可が含まれており、セキュリティのベストプラクティスに従っていることを確認します。

注記

AWS Config では現在、同じリージョンおよびクロスアカウントアクセスのみがサポートされます。AWS Systems Manager (SSM) ドキュメントの修正に使用された SNS トピックまたはレコーダーの配信チャネルはリージョンを跨ぐことはできません。

IAM ロール使用時に Amazon SNS トピックに必要なアクセス許可

アクセス許可ポリシーは、別のアカウントが所有する Amazon SNS トピックに適用することができます。他のアカウントから Amazon SNS トピックを使用する場合は、既存の Amazon SNS トピックに以下のポリシーを適用します。

{ "Id": "Policy_ID", "Statement": [ { "Sid": "AWSConfigSNSPolicy", "Action": [ "sns:Publish" ], "Effect": "Allow", "Resource": "arn:aws:sns:region:account-id:myTopic", "Principal": { "AWS": [ "account-id1", "account-id2", "account-id3" ] } } ] }

Resource キーの場合、account-id はトピック所有者の AWS アカウント番号です。account-id1account-id2、および account-id3 には、Amazon SNS トピックにデータを送信する AWS アカウントを使用します。regionmyTopic は適切な値に置き換えることができます。

AWS Config が Amazon SNS トピックに通知を送信する場合、最初に IAM ロールの使用を試行しますが、ロールまたは AWS アカウントにトピックに送信するアクセス許可がない場合、この試行は失敗します。この場合、AWS Config は再度通知を送信しますが、今回は Config サービスプリンシパル名 (SPN) となります。配信が正常に実行される前に、オピックのためのアクセスポリシーは sns:Publish プリンシパル名にconfig.amazonaws.com アクセスを許可する必要があります。IAM ロールにトピックに公開する権限がない場合、Amazon SNS トピックへの AWS Config アクセスを許可するには以下に説明するアクセスポリシーを、Amazon SNS トピックに添付する必要があります。

サービスでリンクされたロールを使用する際 Amazon SNS トピックに必要なアクセス許可

AWS Config に別のアカウントから Amazon SNS トピックへのアクセスを許可するには、以下のアクセス許可ポリシーを添付する必要があります。これは、AWS Config サービスにリンクされたロール (SLR) が別のアカウントから Amazon SNS トピックにアクセスするために Config サービスプリンシパル名 (SPN) が必要なためです。以下のアクセス許可ポリシーには、AWS:SourceAccount 条件に記載されているアカウントへのアクセスを制限することによってのみ、AWS Config が想定するユーザーに代わってリソースにアクセスするセキュリティのベストプラクティスが含まれています。このセキュリティのベストプラクティスを強くお勧めします。

同じアカウント設定の場合、Amazon SNS トピックと SLR が同じアカウントにあり、Amazon SNS ポリシーが SLR に「sns:Publish」を許可する場合、AWS Config SPN を使用する必要はありません。次のアクセス許可ポリシーとセキュリティのベストプラクティスは、クロスアカウント設定のためのものです。

{ "Id": "Policy_ID", "Statement": [ { "Sid": "AWSConfigSNSPolicy", "Effect": "Allow", "Principal": { "Service": "config.amazonaws.com" }, "Action": "sns:Publish", "Resource": "arn:aws:sns:region:account-id:myTopic", "Condition" : { "StringEquals": { "AWS:SourceAccount": [ "account-id1", "account-id2", "account-id3" ] } } } ] }

Resource キーの場合、account-id はトピック所有者の AWS アカウント番号です。account-id1account-id2、および account-id3 には、Amazon SNS トピックにデータを送信する AWS アカウントを使用します。regionmyTopic は適切な値に置き換えることができます。

上記の Amazon SNS トピックポリシーの AWS:SourceAccount 条件を使い、特定のアカウントに代わって Config サービスプリンシパル名 (SPN) がオペレーションを実行するとき Amazon SNS トピックのみと交信するように制限できます。

特定の AWS Config 配信チャネルの代わりにオペレーションを実行するときに、AWS Config は設定 サービスプリンシパル名 (SPN) が Amazon S3 バケットとだけ交信するように制限する AWS:SourceArn 条件もサポートします。Config サービスプリンシパル名 (SPN) を使用する場合、AWS:SourceArn プロパティは常に sourceRegion が配信チャネルのリージョンがある arn:aws:config:sourceRegion:sourceAccountID:* に設定され、sourceAccountID は配信チャネルを含むアカウントの ID になります。AWS Config 配信チャンネルの詳細については、「配信チャネルの管理」を参照してください。たとえば、以下の条件を追加すると、アカウント 123456789012: "ArnLike": {"AWS:SourceArn": "arn:aws:config:us-east-1:123456789012:*"}us-east-1 リージョン中の送信チャンネルに代わってのみ、Config サービスプリンシパル名 (SPN) が Amazon S3 バケットと交信するように制限します。

Amazon SNS トピックのトラブルシューティング

AWS Config には、Amazon SNS トピックに通知を送信するためのアクセス許可が必要です。Amazon SNS トピックで通知を受け取ることができない場合は、AWS Config のIAM ロールに sns:Publish アクセス許可が付与されていることを確認します。