Amazon SNS トピックにアラートメッセージを送信するためのアクセス許可を Amazon Managed Service for Prometheus に付与する
Amazon SNS トピックにメッセージを送信するには、Amazon Managed Service for Prometheus にアクセス許可を付与する必要があります。次のポリシーステートメントは、そのアクセス許可を付与します。これには、混乱した代理問題と呼ばれるセキュリティ問題の防止に役立つ Condition ステートメントが含まれています。Condition ステートメントは、Amazon SNS トピックへのアクセスを制限し、この特定のアカウントと Amazon Managed Service for Prometheus ワークスペースからのオペレーションのみを許可します。「混乱した代理」問題の詳細については、「サービス間の混乱した代理の防止」を参照してください。
Amazon SNS トピックにメッセージを送信するためのアクセス許可を Amazon Managed Service for Prometheus に付与するには
Amazon SNS コンソール(https://console.aws.amazon.com/sns/v3/home
)を開きます。 -
ナビゲーションペインで、[トピック] を選択します。
-
Amazon Managed Service for Prometheus で使用しているトピックの名前を選択します。
-
[編集] を選択します。
-
[アクセスポリシー] を選択し、次のポリシーステートメントを既存のポリシーに追加します。
{ "Sid": "Allow_Publish_Alarms", "Effect": "Allow", "Principal": { "Service": "aps.amazonaws.com" }, "Action": [ "sns:Publish", "sns:GetTopicAttributes" ], "Condition": { "ArnEquals": { "aws:SourceArn": "workspace_ARN" }, "StringEquals": { "AWS:SourceAccount": "account_id" } }, "Resource": "arn:aws:sns:region:account_id:topic_name" }[オプション] Amazon SNS トピックでサービス側の暗号化 (SSE) が有効になっている場合、トピックの暗号化に使用するキーの AWS KMS キーポリシーに
kms:GenerateDataKey*アクセス許可とkms:Decryptアクセス許可を追加し、この暗号化されたトピックにメッセージを送信することを Amazon Managed Service for Prometheus に許可する必要があります。例えば、以下をポリシーに追加できます。
{ "Statement": [{ "Effect": "Allow", "Principal": { "Service": "aps.amazonaws.com" }, "Action": [ "kms:GenerateDataKey*", "kms:Decrypt" ], "Resource": "*" }] }詳細については、「SNS トピックに対する AWS KMS アクセス許可」を参照してください。
-
[変更を保存] を選択します。
注記
デフォルトでは、Amazon SNS は AWS:SourceOwner に条件を設定したアクセスポリシーを作成します。詳細については、「SNS アクセスポリシー」を参照してください。
注記
IAM は、最も制限の厳しいポリシーを優先するルールに従います。SNS トピックに、ドキュメント化された Amazon SNS ポリシーブロックよりも制限の厳しいポリシーブロックがある場合、トピックポリシーのアクセス許可は付与されません。ポリシーを評価して何が許可されているかを確認するには、「ポリシーの評価論理」を参照してください。
オプトインリージョンの SNS トピック設定
aps.amazonaws.com を使用して、Amazon Managed Service for Prometheus ワークスペースと同じ AWS リージョン で Amazon SNS トピックを設定できます。非オプトインリージョン (us-east-1 など) の SNS トピックをオプトインリージョン (af-south-1 など) で使用するには、リージョンサービスプリンシパル形式を使用する必要があります。リージョンサービスの原則では、us-east-1 を、使用する非オプトインリージョン (aps.) に置き換えます。us-east-1.amazonaws.com
次の表に、オプトインリージョンとそれに対応するリージョンサービスプリンシパルを示します。
| リージョン名 | リージョン | リージョンサービスプリンシパル |
|---|---|---|
| アフリカ (ケープタウン) | af-south-1 | af-south-1.aps.amazonaws.com |
| アジアパシフィック (香港) | ap-east-1 | ap-east-1.aps.amazonaws.com |
| アジアパシフィック (タイ) | ap-southeast-7 | ap-southeast-7.aps.amazonaws.com |
| ヨーロッパ (ミラノ) | eu-south-1 | eu-south-1.aps.amazonaws.com |
| 欧州 (チューリッヒ) | eu-central-2 | eu-central-2.aps.amazonaws.com |
| 中東 (アラブ首長国連邦) | me-central-1 | me-central-1.aps.amazonaws.com |
| アジアパシフィック (マレーシア) | ap-southeast-5 | ap-southeast-5.aps.amazonaws.com |
オプトインリージョンを有効にする方法については、Amazon Web Services 全般のリファレンス の「IAM ユーザーガイド」の「AWS リージョンの管理」を参照してください。
これらのオプトインリージョンに Amazon SNS トピックを設定するときは、正しいリージョンサービスプリンシパルを使用して、リージョン間のアラート配信を有効にしてください。
サービス間の混乱した代理の防止
混乱した代理問題とは、アクションを実行する許可を持たないエンティティが、より高い特権を持つエンティティにそのアクションの実行を強制できるというセキュリティ問題です。AWS では、サービス間でのなりすましによって、混乱した代理問題が発生する場合があります。サービス間でのなりすましは、1 つのサービス (呼び出し元サービス) が、別のサービス (呼び出し対象サービス) を呼び出すときに発生する可能性があります。呼び出し元サービスは、本来ならアクセスすることが許可されるべきではない方法でその許可を使用して、別のお客様のリソースに対する処理を実行するように操作される場合があります。これを防ぐために、AWS には、アカウント内のリソースへのアクセス権が付与されたサービスプリンシパルですべてのサービスのデータを保護するために役立つツールが用意されています。
リソースポリシーで aws:SourceArn および aws:SourceAccount グローバル条件コンテキストキーを使用して、Amazon Managed Service for Prometheus が Amazon SNS に付与するリソースへのアクセス許可を制限することをお勧めします。両方のグローバル条件コンテキストキーを同じポリシーステートメントで使用する場合は、aws:SourceAccount 値と、aws:SourceArn 値に含まれるアカウントが、同じアカウント ID を示している必要があります。
aws:SourceArn の値は、Amazon Managed Service for Prometheus ワークスペースの ARN でなければなりません。
混乱した代理問題から保護するための最も効果的な方法は、リソースの完全な ARN を指定して aws:SourceArn グローバル条件コンテキストキーを使用することです。リソースの完全な ARN が不明な場合や、複数のリソースを指定する場合は、aws:SourceArn グローバルコンテキスト条件キーを使用して、ARN の未知部分をワイルドカード (*) で表します。例えば、arn:aws: です。servicename::123456789012:*
「Amazon SNS トピックにアラートメッセージを送信するためのアクセス許可を Amazon Managed Service for Prometheus に付与する」に記載されているポリシーは、Amazon Managed Service for Prometheus で aws:SourceArn および aws:SourceAccount グローバル条件コンテキストキーを使用して、混乱した代理問題を防止する方法を示しています。