Amazon SNS アクセスポリシーの主な概念 - Amazon Simple Notification Service

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

Amazon SNS アクセスポリシーの主な概念

以下のセクションでは、アクセスポリシー言語を使用するにあたって理解しておくべきコンセプトを説明します。基本的なものから順に分かりやすく説明していきます。

アクセス許可

アクセス権限とは、特定のリソースへのある種のアクセスに対し、許可または拒否をするというコンセプトです。アクセス権限は、基本的に「A は、条件 D に該当する C を対象とするアクション B の実行を許可または禁止されている」という形態をとります。例えば、Jane (A) には、プロトコル (D) を使用している限り、トピック TopicAに (B) を発行するアクセス許可があります。 HTTP ジェーンがトピック A をパブリッシュした時点で、ジェーンにアクセス権限があるかどうか、またそのリクエストが定められているアクセス権限の条件を満たしているかどうかが、サービスによってチェックされます。

Statement

ステートメントとは、アクセスポリシー言語で使用するアクセス権限を定義する書式です。1 つのステートメントで 1 つのアクセス権限を定義します。ポリシー という、より広範囲のコンテナドキュメントの一部としてステートメントを書きます (次のコンセプト参照)。

ポリシー

ポリシーとは、1 つ以上のステートメントのコンテナの役目を果たすドキュメント (アクセスポリシー言語で記述) です。例えば、1 つのポリシーには「ジェーンは E メールプロトコルを使用してサブスクライブできる」というステートメントと、「ボブはトピック A を発行することができない」というステートメント、計 2 つのステートメントが含まれることがあります。以下の図に示されているように、同等のシナリオでは、「ジェーンは E メールプロトコルを使用してサブスクライブできる」というポリシーと、「ボブはトピック A を発行することができない」というポリシー、計 2 つのポリシーを含むことができます。

Amazon でポリシーステートメントを整理する 2 つの方法を比較しますSNS。左側には、1 つのポリシー (ポリシー A) に 2 つのステートメントが含まれています。右側では、同じ 2 つのステートメントが 2 つのポリシーに分割され、各ポリシーには 1 つのステートメントが含まれます。この図は、これらの 2 つのアプローチが、アクセス許可の定義と適用方法という点で同等であることを示しています。

ポリシードキュメントではASCII文字のみを使用できます。aws:SourceAccount と を利用して、 ASCII以外の文字ARNsを含む他の AWS サービスのプラグインが必要なシナリオaws:SourceOwnerを回避できます。aws:SourceAccount と aws:SourceOwner の違いを確認してください。

Issuer

発行者とは、リソース用のアクセス権限についてのポリシーを記述する個人です。発行者 (定義上) は常にリソース所有者です。 AWS は、 AWS サービスユーザーが所有していないリソースのポリシーを作成することを許可しません。John がリソース所有者である場合、 は、そのリソースのアクセス許可を付与するために記述されたポリシーを送信するときに、John のアイデンティティを AWS 認証します。

Principal

プリンシパルとは、ポリシーのアクセス権限を適用される個人またはグループを指します。「A は、条件 D に該当する C を対象とするアクション B の実行を許可または禁止されている」というステートメントにおいては、A がプリンシパルに相当します。ポリシーでは、「誰でも」プリンシパルに設定することができます (例えば、ワイルドカードを指定して全員に設定できます)。例えば、リクエスタの実際のアイデンティティをベースにアクセス制限をかけたくなければ、リクエスタの IP アドレスのような、他のアイデンティティの特性をもとにして行うことができます。

アクション

アクションとは、プリンシパルに対し、実行が許可されているアクティビティです。「A は、条件 D に該当する場合 C に対して B を実行することを許可されている」というステートメントにおいては、B がアクションに相当します。通常、 アクションは へのリクエストの オペレーションにすぎません AWS。例えば、Jane は SNSを使用して Amazon にリクエストを送信しますAction=Subscribe。1 つのポリシーに 1 つまたは複数のアクションを指定することができます。

リソース

リソースとは、プリンシパルがアクセスを要求するオブジェクトのことです。「A は、条件 D に該当する場合 C に対して B を実行することを許可されている」というステートメントにおいては、C がリソースに相当します。

条件とキー

条件とは、アクセス権限についての制限や詳細のことです。「A は、条件 D に該当する場合 C に対して B を実行することを許可されている」というステートメントにおいては、D が条件に相当します。ポリシーの中でも、記述が最も詳細かつ複雑になるのが、この条件部分です。よく使用される条件の設定項目は以下のとおりです。

  • 日時 (特定の日付以前に到着したリクエストのみ処理するなど)

  • IP アドレス (例えば、リクエスタの IP アドレスは特定のCIDR範囲に含まれている必要があります)

キーは、アクセス制限に使用される基本項目です。例えば、リクエストの日時がこれに相当します。

制限は、条件キーの両方を使用して定義します。具体例を挙げて説明します。2010 年 5 月 30 日以前のアクセスを制限するには、DateLessThan という条件を使用します。aws:CurrentTime と呼ばれるキーを使用して それを 2010-05-30T00:00:00Z の値に設定します。 AWS では使用できる条件やキーを定義します。 AWS サービス自体 (Amazon SQSや Amazon などSNS) は、サービス固有のキーを定義する場合もあります。詳細については、「Amazon SNS API アクセス許可: アクションとリソースのリファレンス」を参照してください。

リクエスタ

リクエスタとは、 AWS のサービスにリクエストを送信する人、または特定のリソースへのアクセスを要求する人です。リクエスタが AWS に送信するリクエストの内容は、基本的には「条件 D に該当する場合 C に対して B を実行することを許可してください」のようになります。

評価

評価は、 AWS サービスが受信リクエストを、該当するポリシーに基づいて拒否または許可すべきかどうかを判断するために使用するプロセスです。評価論理の詳細については、「評価論理」を参照してください。

エフェクト

エフェクトとは、ポリシーのステートメントが評価時に返す結果のことです。この値はポリシーのステートメントを記述するときに指定します。使用可能な値は deny と allow です。

例えば、南極大陸からのすべてのリクエストを拒否するステートメントを含むポリシーを記述できます (リクエストの送信元 IP アドレスが南極大陸に割り当てられている場合、エフェクトの値を deny とします)。または、南極大陸以外からのすべてのリクエストを許可するステートメントを含むポリシーを記述できます (リクエストの送信元が南極大陸でない場合、エフェクトの値を allow とします)。2 つのステートメントは同じことを行うように見えますが、アクセスポリシー言語の論理上では異なるものです。詳細については、「評価論理」を参照してください。

エフェクトに特定できる値は allow と deny の 2 つだけですが、ポリシーの評価結果には、デフォルトで拒否許可および明示的拒否の 3 種類があります。詳細については、以下のコンセプトおよび「評価論理」を参照してください。

デフォルトで拒否

デフォルトで拒否とは、ポリシーに許可または明示的拒否が指定されていない場合に、デフォルトで適用される拒否のことです。

許可

許可とは、ステートメントに effect=allow が指定されていて、許可条件がすべて満たされている場合に返される結果です。例えば、2010 年 4 月 30 日午後 1 時までに受信されたリクエストが許可されます。許可は、すべてのデフォルトで拒否に優先して適用されますが、明示的拒否が 1 つでもあれば適用されません。

明示的拒否

明示的拒否とは、ステートメントに effect=deny が指定されていて、拒否条件がすべて満たされている場合に返される結果です。例えば、送信元が南極大陸であるすべてのリクエストが拒否されます。その他のポリシーによって許可されている場合においても、南極から来たリクエストに対しては常に拒否します。