メニュー
Amazon Simple Notification Service
開発者ガイド (API バージョン 2010-03-31)

主要なコンセプト

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

アクセス許可

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

Statement

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

ポリシー

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

ポリシー図

発行者

発行者とは、リソース用のアクセス権限についてのポリシーを記述する人物です。発行者は当然のこととして、リソースの所有者になります。AWS のサービスでは、リソースを所有していない AWS のユーザーに対し、ポリシー作成の許可を与えていません。たとえば、ジョンが自ら所有するリソースへのアクセス許可を定義するポリシーを作成して提出した場合、AWS ではジョンが本人であることが認証されます。

Principal

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

アクション

アクションとは、プリンシパルに対し、実行が許可されているアクティビティです。「A は、条件 D に該当する C を対象とするアクション B の実行を許可または禁止されている」というポリシーにおいては、文字通り B がアクションに相当します。通常、アクションとは、リクエストに埋め込まれて AWS に渡されるオペレーションのことです。たとえば、ジェーンが Amazon SNS に Action=Subscribe としてリクエストを送信する。1 つのポリシーに 1 つまたは複数のアクションを指定することができます。

リソース

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

条件とキー

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

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

  • IP アドレス (特定の CIDR 範囲内の IP アドレスからのリクエストのみ処理するなど)

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

制限は、条件キーの両方を使用して定義します。具体例を挙げて説明します。2010 年 5 月 30 日以前のアクセスを制限するには、DateLessThan 条件を使用します。キーは aws:CurrentTime を使用し、値を 2010-05-30T00:00:00Z に設定します。使用する条件やキーは AWS により定義されています。AWS サービス自体 (Amazon SQS や Amazon SNS など) によりサービス固有のキーが定義されている場合もあります。詳細については、「Amazon SNS ポリシーの特別な情報」を参照してください。

リクエスタ

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

評価

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

Effect

エフェクトとは、評価時にポリシーのステートメントによって返される結果のことです。この値はポリシーのステートメントに特定します。使用可能な値は denyallow です。

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

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

デフォルトで拒否

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

許可

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

明示的な拒否

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