AWS:允許經過 MFA 驗證的 IAM 使用者在 My Security Credentials (我的安全憑證) 頁面上管理其 MFA 裝置 - AWS Identity and Access Management

AWS:允許經過 MFA 驗證的 IAM 使用者在 My Security Credentials (我的安全憑證) 頁面上管理其 MFA 裝置

此範例會示範如何建立身分型政策,允許透過多重要素驗證 (MFA) 進行身分驗證的 IAM 使用者在 My Security Credentials (我的安全憑證) 頁面上管理自己的 MFA 裝置。此 AWS Management Console 頁面會顯示帳戶和使用者資訊,但使用者僅可檢視和編輯自己的 MFA 裝置。若要允許使用者使用 MFA 管理自己的所有憑證,請參閱AWS:允許經過 MFA 驗證的 IAM 使用者在 My Security Credentials (我的安全憑證) 頁面上管理其憑證。

注意

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

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

此政策的功能為何?

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

  • AllowManageOwnVirtualMFADevice 陳述式可讓使用者建立、更新及刪除自己的虛擬 MFA 裝置。此陳述式中的資源 ARN 僅允許存取與目前登入使用者完全同名的 MFA 裝置。使用者不能建立或刪除自己裝置外的任何虛擬 MFA 裝置。

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

  • 除了一些列出的動作以外,DenyAllExceptListedIfNoMFA 陳述式會拒絕存取所有 AWS 服務中的每個動作,但只有使用者未使用 MFA 登入時。陳述式使用 "Deny""NotAction" 的組合,來明確拒絕存取未列出的每項動作。此陳述式不會拒絕或允許列出的項目。然而,政策中的其他陳述式會允許多項動作。如需有關此陳述式邏輯的詳細資訊,請參閱使用拒絕 (Deny) 的 NotAction。如果使用者使用 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", "iam:DeleteVirtualMFADevice" ], "Resource": "arn:aws:iam::*:mfa/${aws:username}" }, { "Sid": "AllowManageOwnUserMFA", "Effect": "Allow", "Action": [ "iam:DeactivateMFADevice", "iam:EnableMFADevice", "iam:GetUser", "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"} } } ] }