Amazon Simple Queue Service
開発者ガイド

Amazon SQS Access Policy Language での明示的な拒否とデフォルトで拒否の関係

Amazon SQS ポリシーがリクエストに直接適用されない場合、リクエストの結果は、default-deny となります。たとえば、ユーザーが Amazon SQS を使用するアクセス権限をリクエストしたが、そのユーザーに適用される唯一のポリシーでは DynamoDB を使用できる場合、リクエストの結果は default-deny となります。

ステートメントの条件が満たされない場合、リクエストの結果は default-deny になります。ステートメントのすべての条件が満たされている場合、ポリシーの エレメントの値に基づいて、リクエストの結果は 許可 または のどちらかとなります。explicit-denyeffect条件が満たされていない際にポリシーが行為を特定していない場合、デフォルトの結果として default-deny となります。たとえば、南極大陸から来るリクエストを防ぐとします。その場合、南極大陸から来ていないリクエストにのみ許可を与えるポリシー A1 を記述します。以下の図は Amazon SQS ポリシーについて解説しています。


						アーキテクチャの概要

ユーザーがアメリカからリクエストを送信すると、条件が満たされ (リクエストは南極大陸から来ていない)、リクエストの結果は allow になります。ただし、ユーザーが南極からリクエストを送信した場合、条件は満たされず、リクエストはデフォルトで default-deny になります。南極大陸から来たリクエストを明示的に拒否するポリシー A2 を作成して、結果を explicit-deny に変更することができます。以下の図はポリシーについて解説しています。


						アーキテクチャの概要

ユーザーが南極大陸からリクエストを送信すると、条件は満たされ、リクエストの結果は explicit-deny となります。

default-denyexplicit-deny の違いは重要です。allow は前者を上書きできますが、後者を上書きすることはできないためです。たとえば、ポリシー B は、2010 年 6 月 1 日に届いたリクエストを許可します。以下の図は、このポリシーをポリシー A1 およびポリシー A2 と組み合わせた場合を比較しています。


						カスタムクックブック属性を使用した

シナリオ 1 では、ポリシー A1 の結果は default-deny になり、ポリシー B の結果は allow になります。これは、ポリシーで 2010 年 6 月 1 日に来るリクエストが許可されるためです。ポリシー B による allow は、ポリシー A1 の default-deny で拒否に優先するため、結果としてリクエストは許可されます。

シナリオ 2 で、ポリシー B2 の結果は explicit-deny になり、ポリシー B の結果は allow になります。ポリシー A2 による explicit-deny は、ポリシー B の allow に優先するため、結果としてリクエストは拒否されます。