AWS Identity and Access Management
ユーザーガイド

IAM JSON ポリシーエレメント: NotResource

NotResource は、指定されたリソースリスト以外のすべてを明示的に照合する高度なポリシー要素です。NotResource を使うと、一致する予定のリソースのリストを含めるのではなく、一致する必要がないアクションがいくつかリストアップされ、リソースが短くなります。NotResource を使用する場合は、この要素に指定されているリソースは制限されている だけの リソースであることに注意してください。 これは、リストされていない他のすべてのサービスのリソースを含むすべてのリソースが、Allow 効果を使用する場合は許可され、Deny 効果を使用する場合は拒否されることを意味します。ステートメントには、ARN を使用してリソースを指定する ResourceまたはNotResource 要素を含める必要があります。ARN のフォーマットの詳細については、「Amazon リソースネーム (ARN) と AWS サービスの名前空間」を参照してください。

NotResource 要素と "Effect": "Allow" を同じステートメントで使用したり、ポリシー内の別のステートメントで使用することに注意してください。NotResource は、明示的にリストされていないすべてのサービスおよびリソースを可能にし、意図した以上の権限をユーザーに付与する可能性があります。同じステートメントで NotResource 要素と "Effect": "Deny" を使用すると、明示的にリストされていないサービスとリソースが拒否されます。

たとえば、HRPayrollという名前のグループがあるとしましょう。HRPayrollのメンバーは、HRBucket バケット内の Payroll フォルダ以外のすべての Amazon S3 リソースにアクセスできません。次のポリシーは、リストされたリソース以外のすべての Amazon S3 リソースへのアクセスを明示的に拒否します。ただし、このポリシーは、すべてのリソースにユーザーのアクセス権を与えるものではないことに注意してください。

{ "Version": "2012-10-17", "Statement": { "Effect": "Deny", "Action": "s3:*", "NotResource": [ "arn:aws:s3:::HRBucket/Payroll", "arn:aws:s3:::HRBucket/Payroll/*" ] } }

通常、リソースへのアクセスを明示的に拒否するには、"Effect":"Deny" を使用し、各フォルダを個別にリストするResource 要素を含むポリシーを作成します。ただし、その場合には、HRBucket にフォルダを追加したり、アクセスすべきでない Amazon S3 にリソースを追加するたびに、Resource のリストにその名前を追加する必要があります。代わりに NotResource 要素を使用すると、ユーザーはフォルダ名を NotResource 要素に追加しない限り、新しいフォルダへのアクセスは自動的に拒否されます。