

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

# Amazon EC2：要求特定 EC2 操作的 MFA (GetSessionToken)
<a name="reference_policies_examples_ec2_require-mfa"></a>

此範例示範如何建立身分型政策，允許完整存取 Amazon EC2 中的所有 AWS API 操作。不過，如果未透過[多重要素驗證 (MFA)](id_credentials_mfa.md) 來對使用者進行驗證，此政策會明確拒絕對 `StopInstances` 和 `TerminateInstances` API 操作的存取。若要以程式設計的方式執行，使用者必須在呼叫 `SerialNumber` 操作時包含選用 `TokenCode` 和 `GetSessionToken` 值。這個操作會傳回透過使用 MFA 驗證的臨時憑證。要進一步了解 GetSessionToken 的相關資訊，請參閱 [為不信任環境中的使用者請求憑證](id_credentials_temp_request.md#api_getsessiontoken)。

此政策的功能為何？
+ `AllowAllActionsForEC2` 陳述式會允許所有 Amazon EC2 動作。
+ MFA 內容遺失時，`DenyStopAndTerminateWhenMFAIsNotPresent` 陳述式會拒絕 `StopInstances` 和 `TerminateInstances` 動作。這表示當多重驗證內容遺失 (表示未使用 MFA) 時，動作遭拒。拒絕會覆寫允許。

**注意**  
`MultiFactorAuthPresent` 陳述式中 `Deny` 的條件檢查不應該是 `{"Bool":{"aws:MultiFactorAuthPresent":false}}`，因為該索引鍵不存在，並且在不使用 MFA 時無法評估。因此，在檢查值之前，使用 `BoolIfExists` 檢查來查看索引鍵是否存在。如需詳細資訊，請參閱[...IfExists 條件運算子](reference_policies_elements_condition_operators.md#Conditions_IfExists)。

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "AllowAllActionsForEC2",
            "Effect": "Allow",
            "Action": "ec2:*",
            "Resource": "*"
        },
        {
            "Sid": "DenyStopAndTerminateWhenMFAIsNotPresent",
            "Effect": "Deny",
            "Action": [
                "ec2:StopInstances",
                "ec2:TerminateInstances"
            ],
            "Resource": "*",
            "Condition": {
                "BoolIfExists": {"aws:MultiFactorAuthPresent": false}
            }
        }
    ]
}
```

------