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

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

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

Amazon Simple Notification Service は AWS Identity and Access Management (IAM) と統合されているため、 のユーザーが Amazon SNSリソースで実行できる Amazon AWS アカウント 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ポリシーは、 AWS アカウントの topic_xyz というトピックの Amazon SNSSubscribeアクションを許可します。IAM ポリシーは、Bob と Susan のユーザーにアタッチされます (つまり、Bob と Susan にはポリシーに記載されているアクセス許可があります)。同様に、Amazon SNSポリシーは、topic_xyz Subscribeの へのアクセス許可を Bob と Susan に付与します。

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ポリシーは、 のトピックのいずれかSubscribeに対する のアクセス許可をユーザーに付与しますが、Amazon AWS アカウント 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ポリシーを上書きします。明示的な拒否は常に許可を上書きするためです (ポリシー評価ロジックの詳細については、「」を参照してください評価論理)。以下の図に、そのコンセプトを示します。

すべてのトピックの「公開」アクションを拒否する IAMポリシーを追加すると、ユーザー Bob が特定のトピック「topic_xyz」に公開することを許可した既存の Amazon SNSポリシーを上書きする方法の図 IAM 拒否ポリシーは Amazon SNSポリシーよりも優先され、実質的に Bob が「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、「 IAMユーザーガイドARNs」の「」を参照してください。

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

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

  • sns:endpoint — Subscribeリクエストまたは以前に確認されたサブスクリプションARNからの 、URLE メールアドレス、または 。文字列条件とともに使用 (「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" } ] }