

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

# AWS：允許經過 MFA 驗證的 IAM 使用者在「安全憑證」頁面中管理其自己的 MFA 裝置
<a name="reference_policies_examples_aws_my-sec-creds-self-manage-mfa-only"></a>

此範例會示範如何建立身分型政策，允許透過[多重要素驗證 (MFA)](id_credentials_mfa.md) 進行身分驗證的 IAM 使用者在**安全憑證**頁面管理自己的 MFA 裝置。 AWS 管理主控台 此頁面會顯示帳戶和使用者資訊，但使用者只能檢視和編輯自己的 MFA 裝置。若要允許使用者使用 MFA 管理自己的所有憑證，請參閱[AWS：允許經過 MFA 驗證的 IAM 使用者在「安全憑證」頁面中管理其憑證。](reference_policies_examples_aws_my-sec-creds-self-manage.md)。

**注意**  
如果具有此政策的 IAM 使用者未經 MFA 驗證，則此政策會拒絕存取所有 AWS 動作，但使用 MFA 驗證所需的動作除外。若要使用 AWS CLI 和 AWS API，IAM 使用者必須先使用 AWS STS [GetSessionToken](https://docs.aws.amazon.com/STS/latest/APIReference/API_GetSessionToken.html) 操作擷取其 MFA 字符，然後使用該字符來驗證所需的操作。其他政策 (例如資源型政策或其他身分型政策) 可允許其他服務中的動作。如果 IAM 使用者並未通過 MFA 身分驗證，此政策將會拒絕該存取。

若要了解使用者如何存取**安全憑證**頁面，請參閱 [IAM 使用者如何變更他們自己的密碼 (主控台)](id_credentials_passwords_user-change-own.md#ManagingUserPwdSelf-Console)。

**此政策的功能為何？**
+ `AllowViewAccountInfo` 陳述式可讓使用者檢視為使用者啟用之虛擬 MFA 裝置的詳細資訊。由於此許可不支援指定資源 ARN，因此此許可必須在其陳述式中。您反而必須指定 `"Resource" : "*"`。
+ `AllowManageOwnVirtualMFADevice` 陳述式可讓使用者建立自己的虛擬 MFA 裝置。此陳述式中的資源 ARN 允許使用者以任何名稱建立 MFA 裝置，但政策中的其他陳述式僅允許使用者連接裝置到目前登入的使用者。
+ `AllowManageOwnUserMFA` 陳述式可讓使用者檢視或管理自己的虛擬、U2F 或硬體 MFA 裝置。此陳述式中的資源 ARN 僅允許存取使用者自己的 IAM 使用者。使用者不能檢視或管理其他使用者的 MFA 裝置。
+ `DenyAllExceptListedIfNoMFA` 陳述式拒絕存取所有 AWS 服務中的每個動作，但少數列出的動作除外，但***前提是***使用者未使用 MFA 登入。陳述式使用 `"Deny"` 和 `"NotAction"` 的組合，來明確拒絕存取未列出的每項動作。此陳述式不會拒絕或允許列出的項目。然而，政策中的其他陳述式會允許多項動作。如需有關此陳述式邏輯的詳細資訊，請參閱[使用拒絕 (Deny) 的 NotAction](reference_policies_elements_notaction.md)。如果使用者使用 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](troubleshoot.md#troubleshoot_general_access-denied-delete-mfa)。

------
#### [ JSON ]

****  

```
{
    "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"}
            }
        }
    ]
}
```

------