

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# IAM JSON 政策元素：NotResource
<a name="reference_policies_elements_notresource"></a>

`NotResource` 是進階政策元素，會明確比對除指定資源以外的每項資源。使用 `NotResource` 可以透過僅列出一些不相符的資源來產生較短的政策，而不是包括相符的長資源清單。這對套用在單一 AWS 服務中的政策特別有用。

例如，假設您有一個名為 `HRPayroll` 的群組。不應允許 `HRPayroll` 成員存取除 `HRBucket` 儲存貯體中的 `Payroll` 資料夾以外的任何 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"` 元素**絕對**不能一起使用。此陳述式非常危險，因為它允許 S3 `HRBucket` 儲存貯體以外所有資源 AWS 上的 中的所有動作。 S3 它甚至允許使用者自行新增允許他們存取 `HRBucket` 的政策。請勿執行此作業。

在相同陳述式中或在政策中的不同陳述式小心使用 `NotResource` 元素和 `"Effect": "Allow"`。`NotResource` 允許未明確列出的所有服務和資源，並可能導致授予使用者比您預期的更多許可。在相同陳述式中使用 `NotResource` 元素和 `"Effect": "Deny"` 會拒絕未明確列出的服務和資源。