

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

# Amazon SNS アクセスポリシーの主な概念
<a name="sns-access-policy-language-key-concepts"></a>

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

## アクセス許可
<a name="permissions"></a>

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

## ステートメント
<a name="statement"></a>

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

## ポリシー
<a name="policy"></a>

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

![\[Amazon SNS でポリシーステートメントを整理する 2 つの方法を比較します。左側では、1 つのポリシー (ポリシー A) に 2 つのステートメントが含まれています。右側では、同じ 2 つのステートメントが 2 つのポリシーに分割され、各ポリシーに 1 つのステートメントが含まれています。この図は、アクセス許可の定義と適用の方法に関して、これら 2 つのアプローチが同等であることを示しています。\]](http://docs.aws.amazon.com/ja_jp/sns/latest/dg/images/AccessPolicyLanguage_Statement_and_Policy.gif)


ポリシードキュメントでは ASCII 文字のみを使用できます。`aws:SourceAccount` と を使用して`aws:SourceOwner`、ASCII 以外の文字を含む他の AWS サービスの ARNs をプラグインする必要があるシナリオを回避できます。[`aws:SourceAccount` と `aws:SourceOwner`](sns-access-policy-use-cases.md#source-account-versus-source-owner) の違いを確認してください。



## Issuer
<a name="issuer"></a>

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

## Principal
<a name="principal"></a>

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

## Action
<a name="action"></a>

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

## [リソース]
<a name="resource"></a>

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

## 条件とキー
<a name="conditions"></a>

*条件*とは、アクセス権限についての制限や詳細のことです。「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 API のアクセス許可: アクションとリソースのリファレンス](sns-access-policy-language-api-permissions-reference.md)」を参照してください。

## リクエスタ
<a name="requester"></a>

*リクエスタ*は、 AWS サービスにリクエストを送信し、特定のリソースへのアクセスを要求するユーザーです。リクエスタは、「D が適用される C への B の実行を許可しますか? AWS 」というリクエストを に送信します。

## 評価
<a name="evaluation"></a>

*評価*は、該当するポリシーに基づいて受信リクエストを拒否するか許可するかを判断するために AWS サービスが使用するプロセスです。評価論理の詳細については、「[評価論理](sns-access-policy-language-evaluation-logic.md)」を参照してください。

## エフェクト
<a name="effect"></a>

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

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

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

## デフォルトで拒否
<a name="Define_SoftDeny"></a>

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

## 許可
<a name="allow"></a>

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

## 明示的拒否
<a name="Define_HardDeny"></a>

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