翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
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
します。
注記
先の例では、条件のない単純なポリシーを示しました。どちらのポリシーでも特定の条件を指定して、同じ結果を得ることができます。
と Amazon SNSポリシーには AWS IAM 1 つの違いがあります。Amazon SNSポリシーシステムでは、他の にアクセス許可を付与できますが AWS アカウント、IAMポリシーには付与されません。
両方のシステムを同時に使用してどのようにアクセス許可を管理するかは、ニーズに応じて決めてください。以下の例では、2 つのポリシーシステムがどのように連携するかを示しています。
例 1
この例では、IAMポリシーと Amazon SNSポリシーの両方が Bob に適用されます。このIAMポリシーは AWS アカウント、 のトピックのいずれかSubscribe
に対する のアクセス許可をユーザーに付与しますが、Amazon SNSポリシーは特定のトピック (topic_xyz) Publish
で使用するアクセス許可をユーザーに付与します。以下の図に、そのコンセプトを示します。
Bob が AWS アカウントの任意のトピックにサブスクライブするリクエストを送信する場合、IAMポリシーは アクションを許可します。Bob が topic_xyz にメッセージを発行するリクエストを送信する場合、Amazon SNSポリシーは アクションを許可します。
例 2
この例は、例 1 で示した、ボブに 2 つのポリシーが適用されている状態に基づいています。ボブは、必要のない topic_xyz にメッセージを発行しているため、トピックに発行する機能を完全に削除するとします。最も簡単なのは、すべてのトピックのPublish
アクションへのアクセスを拒否するIAMポリシーを追加することです。この 3 番目のポリシーは、もともと topic_xyz に発行するアクセス許可を付与した Amazon SNSポリシーを上書きします。明示的な拒否は常に許可を上書きするためです (ポリシー評価ロジックの詳細については、「」を参照してください評価論理)。以下の図に、そのコンセプトを示します。
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が提供するアクションを指定できます。ただし、 アクションConfirmSubscription
と Unsubscribe
アクションには認証は必要ありません。つまり、ポリシーでこれらのアクションを指定しても、 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: グループでトピックの作成と管理を許可する
この例では、CreateTopic
、ListTopics
、SetTopicAttributes
、および 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" } ] }