Amazon でのアイデンティティベースのポリシーの使用 SNS - Amazon Simple Notification Service

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

Amazon でのアイデンティティベースのポリシーの使用 SNS

Amazon Simple Notification Service は AWS Identity and Access Management (IAM) と統合されているため、 内のユーザーが Amazon SNSリソースで AWS アカウント 実行できる Amazon SNSアクションを指定できます。ポリシーで特定のトピックを指定できます。例えば、 内の特定のトピックで Publishアクションを使用するアクセス許可を組織内の特定のユーザーに付与するIAMポリシーを作成するときに、 変数を使用できます AWS アカウント。詳細については、「 の使用IAMガイド」の「ポリシー変数」を参照してください。

重要

SNS で Amazon を使用してIAMも、Amazon の使用方法は変わりませんSNS。Amazon SNSアクションに変更はなく、ユーザーとアクセスコントロールに関連する新しい Amazon SNSアクションもありません。

Amazon SNSアクションとリソースを対象とするポリシーの例については、「」を参照してくださいAmazon のポリシーの例 SNS

IAM と Amazon SNSポリシーをまとめて

IAM ポリシーを使用して、Amazon SNSアクションとトピックへのユーザーのアクセスを制限します。IAM ポリシーは、アクセスを AWS アカウント内のユーザーのみに制限でき、他の には制限できません AWS アカウント。

特定のトピックで Amazon SNSポリシーを使用して、そのトピックを操作するユーザー (メッセージを発行できるユーザー、サブスクライブできるユーザーなど) を制限します。Amazon SNSポリシーは AWS アカウント、他の へのアクセス、または独自の 内のユーザーにアクセス権を付与できます AWS アカウント。

Amazon SNSトピックのアクセス許可をユーザーに付与するには、IAMポリシー、Amazon SNSポリシー、またはその両方を使用できます。ほとんどの場合、どちらでも同じ結果が得られます。例えば、次の図は、IAMポリシーと同等の Amazon SNSポリシーを示しています。このIAMポリシーでは、 の topic_xyz というトピックの Amazon AWS アカウント SNSSubscribeアクションを許可します。IAMポリシーは Bob と Susan のユーザーにアタッチされます (つまり、Bob と Susan はポリシーに記載されているアクセス許可を持っていることを意味します)。Amazon SNSポリシーは、同様に、 topic_xyz へのアクセス許可を Bob と Susan に付与Subscribeします。

IAM ポリシーと Amazon SNSポリシーを比較し、両方のポリシーが Bob と Susan の 2 人のユーザーに同等のアクセス許可を付与し、 内の特定の Amazon SNSトピックにサブスクライブできることを示します AWS アカウント。主な違いは、Amazon SNSポリシーは異なる のユーザーにアクセス許可を付与できるのに対し AWS アカウント、IAMポリシーは付与できないことです。
注記

先の例では、条件のない単純なポリシーを示しました。どちらのポリシーでも特定の条件を指定して、同じ結果を得ることができます。

と Amazon SNSポリシーには AWS IAM 1 つの違いがあります。Amazon SNSポリシーシステムでは、他の にアクセス許可を付与できますが AWS アカウント、IAMポリシーには付与されません。

両方のシステムを同時に使用してどのようにアクセス許可を管理するかは、ニーズに応じて決めてください。以下の例では、2 つのポリシーシステムがどのように連携するかを示しています。

例 1

この例では、IAMポリシーと Amazon SNSポリシーの両方が Bob に適用されます。このIAMポリシーは AWS アカウント、 のトピックのいずれかSubscribeに対する のアクセス許可をユーザーに付与しますが、Amazon SNSポリシーは特定のトピック (topic_xyz) Publish で使用するアクセス許可をユーザーに付与します。以下の図に、そのコンセプトを示します。

IAM ポリシーと Amazon SNSポリシーの両方がユーザー Bob にどのように適用されるかを示します。IAMポリシーは、 の任意のトピックをサブスクライブすることを許可し AWS アカウント、Amazon SNSポリシーはユーザーに「topic_xyz」という名前の特定のトピックにメッセージを公開するアクセス許可を付与します。この図は、IAMポリシーによって付与される一般的なアクセス許可と、特定のトピックに対して Amazon SNSポリシーによって付与される特定のアクセス許可の区別を強調しています。

Bob が AWS アカウントの任意のトピックにサブスクライブするリクエストを送信する場合、IAMポリシーは アクションを許可します。Bob が topic_xyz にメッセージを発行するリクエストを送信する場合、Amazon SNSポリシーは アクションを許可します。

例 2

この例は、例 1 で示した、ボブに 2 つのポリシーが適用されている状態に基づいています。ボブは、必要のない topic_xyz にメッセージを発行しているため、トピックに発行する機能を完全に削除するとします。最も簡単なのは、すべてのトピックのPublishアクションへのアクセスを拒否するIAMポリシーを追加することです。この 3 番目のポリシーは、もともと topic_xyz に発行するアクセス許可を付与した Amazon SNSポリシーを上書きします。明示的な拒否は常に許可を上書きするためです (ポリシー評価ロジックの詳細については、「」を参照してください評価論理)。以下の図に、そのコンセプトを示します。

すべてのトピックの「Publish」アクションを拒否するIAMポリシーを追加すると、Bob が特定のトピックに公開することを許可した既存の Amazon SNSポリシーを上書きする方法の図。「topic_xyz」 IAM 拒否ポリシーは Amazon SNSポリシーよりも優先され、ボブが「topic_xyz」などのトピックに発行することを実質的に妨げます。

Amazon SNSアクションとリソースを対象とするポリシーの例については、「」を参照してくださいAmazon のポリシーの例 SNS。Amazon SNSポリシーの記述の詳細については、Amazon の技術ドキュメントSNSを参照してください。

Amazon SNSリソースARN形式

Amazon の場合SNS、トピックはポリシーで指定できる唯一のリソースタイプです。以下は、トピックの Amazon リソースネーム (ARN) 形式です。

arn:aws:sns:region:account_ID:topic_name

の詳細についてはARNs、「 ユーザーガイドARNs」の「」を参照してください。 IAM

AWS アカウント 123456789012 に属する us-east-2 リージョン MyTopic で という名前のトピックARNの を次に示します。

arn:aws:sns:us-east-2:123456789012:MyTopic

Amazon がSNSサポートする各リージョン MyTopic に という名前のトピックがある場合は、次の を使用してトピックを指定できますARN。

arn:aws:sns:*:123456789012:MyTopic

トピック名にはワイルドカード * および ? を使用できます。例えば、以下では、ボブが bob_ をプレフィックスとして付けて作成したすべてのトピックを参照します。

arn:aws:sns:*:123456789012:bob_*

便宜上、トピックを作成すると、Amazon は応答ARNでトピックの SNSを返します。

Amazon SNSAPIアクション

IAM ポリシーでは、Amazon SNSが提供するアクションを指定できます。ただし、 アクションConfirmSubscriptionUnsubscribeアクションには認証は必要ありません。つまり、ポリシーでこれらのアクションを指定しても、 IAMはこれらのアクションへのユーザーのアクセスを制限しません。

ポリシーで指定する各アクションには、小文字の文字列 sns: をプレフィックスとして付ける必要があります。例えば、すべての Amazon SNSアクションを指定するには、 を使用しますsns:*。アクションのリストについては、Amazon Simple Notification Service APIリファレンス を参照してください。

Amazon SNSポリシーキー

Amazon では、以下の AWS ワイドポリシーキーと、一部のサービス固有のキーSNSを実装しています。

各 でサポートされている条件キーのリストについては AWS のサービス、 IAM ユーザーガイド「 のアクション、リソース、および条件キー AWS のサービス」を参照してください。複数の で使用できる条件キーのリストについては AWS のサービス、「 ユーザーガイド」のAWS 「グローバル条件コンテキストキー」を参照してください。 IAM

Amazon では、以下のサービス固有のキーSNSを使用します。Subscribe リクエストへのアクセスを制限するポリシーで、これらのキーを使用します。

  • sns:endpoint — URL、メールアドレス、またはSubscribeリクエストまたは以前に確認されたサブスクリプションARNからの 。文字列条件とともに使用 (「Amazon のポリシーの例 SNS」を参照) して特定のエンドポイント (*@yourcompany.com など) へのアクセスを制限します。

  • sns:Protocol - Subscribe リクエストまたは以前に確認されたサブスクリプションからの protocol 値。文字列条件とともに使用 (「Amazon のポリシーの例 SNS」を参照) して、特定の配信プロトコル (https など) への発行を制限します。

Amazon のポリシーの例 SNS

このセクションでは、Amazon へのユーザーアクセスを制御するためのいくつかのシンプルなポリシーを示しますSNS。

注記

今後、Amazon は、ポリシーの記述された目標に基づいて、次のいずれかのポリシーに論理的に含めるべき新しいアクションを追加するSNS場合があります。

例 1: グループでトピックの作成と管理を許可する

この例では、CreateTopicListTopicsSetTopicAttributes、および DeleteTopic へのアクセスを付与するポリシーを作成します。

{ "Statement": [{ "Effect": "Allow", "Action": ["sns:CreateTopic", "sns:ListTopics", "sns:SetTopicAttributes", "sns:DeleteTopic"], "Resource": "*" }] }
例 2: IT グループが特定のトピックにメッセージを発行することを許可する

この例では、IT のグループを作成し、対象の特定のトピックで Publish へのアクセスを付与するポリシーを割り当てます。

{ "Statement": [{ "Effect": "Allow", "Action": "sns:Publish", "Resource": "arn:aws:sns:*:123456789012:MyTopic" }] }
例 3: トピックをサブスクライブする AWS アカウント 機能をユーザーに付与する

この例では、sns:Protocol および sns:Endpoint ポリシーキーの文字列一致条件を使って Subscribe アクションにアクセスを付与するポリシーを作成します。

{ "Statement": [{ "Effect": "Allow", "Action": ["sns:Subscribe"], "Resource": "*", "Condition": { "StringLike": { "SNS:Endpoint": "*@example.com" }, "StringEquals": { "sns:Protocol": "email" } } }] }
例 4: パートナーが特定のトピックにメッセージを発行することを許可する

Amazon SNSポリシーまたは IAMポリシーを使用して、パートナーが特定のトピックに発行することを許可できます。パートナーに がある場合は AWS アカウント、Amazon SNSポリシーを使用する方が簡単です。ただし、 AWS セキュリティ認証情報を所有するパートナーの会社の誰でも、トピックにメッセージを公開できます。この例では、特定のユーザー (またはアプリケーション) へのアクセスを制限するとします。そのためには、パートナーを社内のユーザーとして扱い、Amazon IAMポリシーの代わりにSNSポリシーを使用する必要があります。

この例では、パートナー会社 WidgetCo を表す というグループを作成し、アクセスが必要なパートナー会社の特定の人物 (またはアプリケーション) のユーザーを作成し、そのユーザーをグループに配置します。

次に、 という名前の特定のトピックに対するグループPublishアクセスを許可するポリシーをアタッチしますWidgetPartnerTopic

また、 WidgetCo グループがトピックに対して他の操作を実行できないようにしたいため、 以外のトピックPublishに対する以外の Amazon SNSアクションに対するアクセス許可を拒否するステートメントを追加します WidgetPartnerTopic。これは、Amazon への幅広いアクセスをユーザーに許可する広範なポリシーがシステム内の他の場所に存在している場合にのみ必要ですSNS。

{ "Statement": [{ "Effect": "Allow", "Action": "sns:Publish", "Resource": "arn:aws:sns:*:123456789012:WidgetPartnerTopic" }, { "Effect": "Deny", "NotAction": "sns:Publish", "NotResource": "arn:aws:sns:*:123456789012:WidgetPartnerTopic" } ] }