Amazon:允许使用 MFA 完成身份验证的 IAM 用户在“安全凭证”页面上管理自己的 MFA 设备。 - Amazon Identity and Access Management
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

Amazon:允许使用 MFA 完成身份验证的 IAM 用户在“安全凭证”页面上管理自己的 MFA 设备。

此示例演示了如何创建基于身份的策略,以允许通过多重身份验证(MFA)完成身份验证的 IAM 用户在安全凭证页面上管理自己的 MFA 设备。此 Amazon Web Services Management Console 页面显示账户和用户信息,但是用户只能查看和编辑他们自己的 MFA 设备。要允许用户使用 MFA 管理他们自己的所有凭证,请参阅Amazon:允许使用 MFA 完成身份验证的 IAM 用户在“安全凭证”页面上管理自己的凭证。

注意

如果具有此策略的 IAM 用户未通过 MFA 进行身份验证,则此策略会拒绝对所有 Amazon 操作(使用 MFA 进行身份验证所需的操作除外)的访问。要使用 Amazon CLI 和 Amazon API,IAM 用户必须先使用 Amazon STS GetSessionToken 操作检索其 MFA 令牌,然后使用该令牌验证所需的操作。其他策略(如基于资源的策略或其他基于身份的策略)可以允许其他服务中的操作。如果 IAM 用户没有经过 MFA 身份验证,则此策略将拒绝该访问。

要了解用户如何访问安全凭证页面,请参阅 IAM 用户如何更改自己的密码(控制台)

此策略有何作用?

  • AllowViewAccountInfo 语句允许用户查看有关为用户启用的虚拟 MFA 设备的详细信息。此权限必须在它自己的语句中,因为它不支持指定资源 ARN。相反,您必须指定 "Resource" : "*"

  • AllowManageOwnVirtualMFADevice 语句允许用户创建他们自己的虚拟 MFA 设备。此语句中的资源 ARN 允许用户创建任何名称的 MFA 设备,但策略中的其他语句仅允许用户将设备连接到当前登录的用户。

  • AllowManageOwnUserMFA 语句允许用户查看或管理他们自己的虚拟、U2F 或硬件 MFA 设备。此语句中的资源 ARN 仅允许访问用户自己的 IAM 用户。用户无法查看或管理其他用户的 MFA 设备。

  • DenyAllExceptListedIfNoMFA 语句拒绝访问所有 Amazon 服务中的每个操作(除了一些列出的操作),但前提是用户未使用 MFA 登录。该语句使用 "Deny""NotAction" 的组合来显式拒绝对未列出的每个操作的访问。此语句不会拒绝或允许列出的项目。但是,策略中的其他语句允许这些操作。有关此语句的逻辑的更多信息,请参阅 NotAction 以及 Deny。如果用户已使用 MFA 登录,则 Condition 测试将失败,并且此语句不会拒绝任何操作。在这种情况下,用户的其他策略或语句确定用户的权限。

    此语句确保当用户未使用 MFA 登录时,他们只能执行列出的操作。此外,只有在另一个语句或策略允许访问这些操作时,它们才能执行列出的操作。

    ...IfExists 运算符的 Bool 版本可确保:如果 aws:MultiFactorAuthPresent 键缺失,条件将返回 true。这意味着使用长期凭证(例如访问密钥)访问 API 操作的用户被拒绝访问非 IAM API 操作。

此策略不允许用户在 IAM 控制台中查看 Users(用户)页面,或使用该页面访问自己的用户信息。要允许此操作,请将 iam:ListUsers 操作添加到 AllowViewAccountInfoDenyAllExceptListedIfNoMFA 语句。

警告

在未通过 MFA 进行身份验证的情况下,请不要添加删除 MFA 设备的权限。具有该策略的用户可能会尝试为自己分配一个虚拟 MFA 设备,并出现错误以指示未授权其执行 iam:DeleteVirtualMFADevice。如果发生这种情况,请不要将该权限添加到 DenyAllExceptListedIfNoMFA 语句中。切勿允许未使用 MFA 进行身份验证的用户删除 MFA 设备。如果用户以前开始将虚拟 MFA 设备分配给其用户并取消了该过程,则可能会看到该错误。要解决该问题,您或其他管理员必须使用 Amazon CLI 或 Amazon 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"} } } ] }