

# IAM JSON ポリシー要素NotResource
<a name="reference_policies_elements_notresource"></a>

`NotResource` は、指定されたリソースを除くすべてのリソースを明示的に照合する高度なポリシー要素です。`NotResource` を使うと、一致する予定のリソースのリストを含めるのではなく、一致する必要がないアクションがいくつかリストアップされ、リソースが短くなります。これは、単一の AWS のサービス内で適用されるポリシーで特に便利です。

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

------
#### [ JSON ]

****  

```
{
  "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` 要素に追加しない限り、新しいフォルダへのアクセスは自動的に拒否されます。

`NotResource` を使用する場合は、この要素に指定されているリソースは制限されていないリソース*のみ*であることに注意してください。これにより、アクションに適用されるすべてのリソースが制限されます。上記の例では、ポリシーは Amazon S3 アクションにのみ影響し、そのため、Amazon S3 リソースにのみ影響します。`Action` 要素に Amazon EC2 アクションも含まれている場合、`NotResource` 要素で指定されていない EC2 リソースへのアクセスはポリシーによって拒否されます。サービス内のどのアクションでリソースの ARN を指定できるかについては、「[AWS のサービスのアクション、リソース、および条件キー](reference_policies_actions-resources-contextkeys.html)」を参照してください。

## NotResource とその他の要素
<a name="notresource-element-combinations"></a>

`"Effect": "Allow"`、`"Action": "*"`、および `"NotResource": "arn:aws:s3:::HRBucket"` **要素を一緒に使用しないでください**。このステートメントは、`HRBucket` S3 バケットを除くすべてのリソースで AWS のすべてのアクションを許可するため、非常に危険です。これにより、ユーザーは自身に `HRBucket` へのアクセスを許可するポリシーを追加することもできます。この操作はしないでください。

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