AWS:允許 MFA 驗證的 IAM 使用者在安全登入資料頁面上管理自己的 MFA 裝置 - AWS Identity and Access Management

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

AWS:允許 MFA 驗證的 IAM 使用者在安全登入資料頁面上管理自己的 MFA 裝置

此範例說明如何建立身分型政策,允許透過多重要素驗證 (MFA) 驗證的 IAM 使用者在 [安全登入資料] 頁面上管理自己的 MFA 裝置。此 AWS Management Console 頁面顯示帳戶和使用者資訊,但使用者只能檢視和編輯自己的 MFA 裝置。若要允許使用者使用 MFA 管理自己的所有憑證,請參閱AWS:允許 MFA 驗證的 IAM 使用者在安全登入資料頁面上管理自己的登入資料

注意

如果具有此政策的 IAM 使用者未經過 MFA 驗證,則此政策會拒絕存取所有動作,但使用 MFA 進行驗證所需的 AWS 動作除外。若要使用 AWS CLI 和 AWS API,IAM 使用者必須先使用 AWS STS GetSessionToken作業擷取其 MFA 權杖,然後使用該權杖來驗證所需的作業。其他政策 (例如資源型政策或其他身分型政策) 可允許其他服務中的動作。如果 IAM 使用者並未通過 MFA 身分驗證,此政策將會拒絕該存取。

若要瞭解使用者如何存取安全認證頁面,請參閱IAM 使用者如何變更他們自己的密碼 (主控台)

此政策的功能為何?

  • AllowViewAccountInfo 陳述式可讓使用者檢視為使用者啟用之虛擬 MFA 裝置的詳細資訊。由於此許可不支援指定資源 ARN,因此此許可必須在其陳述式中。您反而必須指定 "Resource" : "*"

  • AllowManageOwnVirtualMFADevice 陳述式可讓使用者建立自己的虛擬 MFA 裝置。此陳述式中的資源 ARN 允許使用者以任何名稱建立 MFA 裝置,但政策中的其他陳述式僅允許使用者連接裝置到目前登入的使用者。

  • AllowManageOwnUserMFA 陳述式可讓使用者檢視或管理自己的虛擬、U2F 或硬體 MFA 裝置。此陳述式中的資源 ARN 僅允許存取使用者自己的 IAM 使用者。使用者不能檢視或管理其他使用者的 MFA 裝置。

  • DenyAllExceptListedIfNoMFA聲明拒絕訪問所有 AWS 服務中的每個操作,除了一些列出的操作,前提是用戶未使用 MFA 登錄。陳述式使用 "Deny""NotAction" 的組合,來明確拒絕存取未列出的每項動作。此陳述式不會拒絕或允許列出的項目。然而,政策中的其他陳述式會允許多項動作。如需有關此陳述式邏輯的詳細資訊,請參閱「拒絕」(NotAction Deny)。如果使用者使用 MFA 登入,則不會通過 Condition 測試,且此陳述式不會拒絕任何動作。在此情況下,使用者的其他政策或陳述式決定使用者的許可。

    此陳述式確保在使用者未使用 MFA 登入時,他們只能執行列出的動作。此外,只有在另一條陳述式或政策允許存取這些動作時,他們才能執行列出的動作。

    ...IfExists 運算子的 Bool 版本會確認,如果 aws:MultiFactorAuthPresent 索引鍵遺失,條件將返回 true。這就表示,拒絕使用長期憑證 (如存取金鑰) 存取 API 操作的使用者存取為非 IAM API 操作。

此政策不允許使用者檢視 IAM 主控台中的 Users (使用者) 頁面,或使用該頁面存取自己的使用者資訊。若要允許此操作,請將 iam:ListUsers 動作加入到 AllowViewAccountInfo 陳述式和 DenyAllExceptListedIfNoMFA 陳述式。

警告

在沒通過 MFA 身分驗證的情況下不新增刪除 MFA 裝置的許可。使用此政策的使用者可能會嘗試為本身指派虛擬 MFA 裝置,但收到未獲授權執行 iam:DeleteVirtualMFADevice 的錯誤。如果發生這種情況,請勿將該許可新增到 DenyAllExceptListedIfNoMFA 陳述式。未通過 MFA 身分驗證的使用者一律不得刪除其 MFA 裝置。如果使用者先前開始將虛擬 MFA 裝置指派到其使用者並取消該程序,使用者可能就會看到此錯誤。若要解決此問題,您或其他系統管理員必須使用 AWS CLI 或 AWS API 刪除使用者現有的虛擬 MFA 裝置。如需更多詳細資訊,請參閱 我未獲得授權,不得執行:iam:DeleteVirtualMFADevice

{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowViewAccountInfo", "Effect": "Allow", "Action": "iam:ListVirtualMFADevices", "Resource": "*" }, { "Sid": "AllowManageOwnVirtualMFADevice", "Effect": "Allow", "Action": [ "iam:CreateVirtualMFADevice" ], "Resource": "arn:aws:iam::*:mfa/*" }, { "Sid": "AllowManageOwnUserMFA", "Effect": "Allow", "Action": [ "iam:DeactivateMFADevice", "iam:EnableMFADevice", "iam:GetUser", "iam:GetMFADevice", "iam:ListMFADevices", "iam:ResyncMFADevice" ], "Resource": "arn:aws:iam::*:user/${aws:username}" }, { "Sid": "DenyAllExceptListedIfNoMFA", "Effect": "Deny", "NotAction": [ "iam:CreateVirtualMFADevice", "iam:EnableMFADevice", "iam:GetUser", "iam:ListMFADevices", "iam:ListVirtualMFADevices", "iam:ResyncMFADevice", "sts:GetSessionToken" ], "Resource": "*", "Condition": { "BoolIfExists": {"aws:MultiFactorAuthPresent": "false"} } } ] }