IAM JSON 政策元素:NotResource - AWS Identity and Access Management

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" 元素絕對不能一起使用。此陳述式非常危險,因為,除 AWS S3 儲存貯體之外,它允許對所有資源執行 HRBucket 中的所有動作。它甚至允許使用者自行新增允許他們存取 HRBucket 的政策。請勿執行此作業。

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