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

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

IAM JSON 政策元素:NotAction

NotAction 是進階政策元素,明確符合「除了」指定的動作清單外的所有內容。使用 NotAction 可以透過僅列出一些不相符的動作來產生較短的政策,而不是包括相符的長動作清單。中指定NotAction的動作不受政策聲明中的AllowDeny效果影響。反之,這表示如果使用 Allow 效果,則允許未列出的所有適用動作或服務。此外,如果您使用 Deny 效果,則會拒絕此類未列出的動作或服務。將 NotActionResource 元素一起使用時,可以為政策提供範圍。這是如何 AWS 確定哪些操作或服務適用。如需詳細資訊,請參閱下列範例政策。

NotAction 與允許

您可以在陳述式中使用NotAction元素,"Effect": "Allow"以提供對 AWS 服務中所有動作的存取權,但中指定的動作除外NotAction。您可以將其與 Resource 元素一起使用,以便為政策提供範圍,將允許的動作限制為可以對指定資源執行的動作。

以下範例可讓使用者存取除了刪除儲存貯體之外可在任何 S3 資源上執行的所有 Amazon S3 動作。這不允許使用者使用 ListAllMyBuckets S3 API 操作,因為該動作需要 "*" 資源。此政策也不允許在其他服務中執行動作,因為其他服務動作不適用於 S3 資源。

"Effect": "Allow", "NotAction": "s3:DeleteBucket", "Resource": "arn:aws:s3:::*",

有時,您可能想要允許存取大量動作。透過使用 NotAction 元素,您可以有效地反轉陳述式,從而產生更短的動作清單。例如,由於 AWS 有太多服務,因此您可能想要建立政策,允許使用者執行除存取 IAM 動作以外的所有項目。

下列範例可讓使用者存取 IAM 以外的每個 AWS 服務中的每個動作。

"Effect": "Allow", "NotAction": "iam:*", "Resource": "*"

在相同陳述式中或在政策中的不同陳述式小心使用 NotAction 元素和 "Effect": "Allow"NotAction 符合未明確列出或適用於指定資源的所有服務和動作,並可能導致授予使用者比您預期更多的許可。

NotAction 與拒絕

您可以在陳述式中使用 NotAction 元素 "Effect": "Deny" 拒絕存取除 NotAction 元素中指定的動作之外的所有列出的資源。此組合不允許列出的項目,而是明確拒絕未列出的動作。您仍必須允許您要允許的動作。

如果使用者未使用 MFA 登入,則以下條件範例拒絕存取非 IAM 動作。如果使用者使用 MFA 登入,則 "Condition" 測試失敗,最終的 "Deny" 陳述式沒有影響。但請注意,這不會授予使用者存取任何動作的許可;它只會明確拒絕除 IAM 動作以外的所有其他動作。

{ "Version": "2012-10-17", "Statement": [{ "Sid": "DenyAllUsersNotUsingMFA", "Effect": "Deny", "NotAction": "iam:*", "Resource": "*", "Condition": {"BoolIfExists": {"aws:MultiFactorAuthPresent": "false"}} }] }

如需拒絕特定區域以外動作存取 (特定服務除外) 的範例政策,請參閱 AWS:根據請求的區域拒絕存取 AWS