本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
IAM JSON 政策元素:NotResource
NotResource
是進階政策元素,會明確比對除指定資源以外的每項資源。使用 NotResource
可以透過僅列出一些不相符的資源來產生較短的政策,而不是包括相符的長資源清單。這對套用在單一 AWS 服務中的政策特別有用。
例如,假設您有一個名為 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
元素。
使用 NotResource
時,請記住,此元素中指定的資源是「唯一」不受限的資源。因此,這會限制可能套用至動作的所有資源。在上述範例中,政策只影響 Amazon S3 動作,因此只會影響 Amazon S3 資源。如果動作也包含 Amazon EC2 動作,則政策不會拒絕存取任何 EC2 資源。若要瞭解服務中的哪些動作允許指定資源的 ARN,請參閱服AWS 務的動作、資源和條件金鑰。
NotResource 與其他元素
"Effect": "Allow"
、"Action": "*"
和 "NotResource": "arn:aws:s3:::HRBucket"
元素絕對不能一起使用。這個陳述式非常危險,因為它允許除 HRBucket
S3 儲存貯體以外的所有資源 AWS 上執行所有動作。它甚至允許使用者自行新增允許他們存取 HRBucket
的政策。請勿執行此作業。
在相同陳述式中或在政策中的不同陳述式小心使用 NotResource
元素和 "Effect": "Allow"
。NotResource
允許未明確列出的所有服務和資源,並可能導致授予使用者比您預期的更多許可。在相同陳述式中使用 NotResource
元素和 "Effect": "Deny"
會拒絕未明確列出的服務和資源。