

# Amazon EC2: 特定の EC2 オペレーション (GetSessionToken) に対して MFA を必要とします。
<a name="reference_policies_examples_ec2_require-mfa"></a>

この例は、Amazon EC2 のすべての AWS API オペレーションへのフルアクセスを許可する ID ベースのポリシーを作成する方法を示しています。ただし、ユーザーが[多要素認証 (MFA) ](id_credentials_mfa.md)を使用して認証されていない場合は、`StopInstances` および `TerminateInstances` APIオペレーションへのアクセスを明示的に拒否します。これをプログラムで行うには、`GetSessionToken` オペレーションを呼び出すときにユーザーはオプションの `SerialNumber` および `TokenCode` 値を含める必要があります。このオペレーションでは、MFA を使用して認証された一時認証情報を返します。GetSessionToken の詳細については、「[信頼されていない環境でのユーザーの認証情報のリクエスト](id_credentials_temp_request.md#api_getsessiontoken)」を参照してください。

このポリシーで行うこと
+ この `AllowAllActionsForEC2` ステートメントではすべての Amazon EC2 アクションが許可されます。
+ `DenyStopAndTerminateWhenMFAIsNotPresent` ステートメントは、MFA コンテキストが欠落している場合に、`StopInstances` および `TerminateInstances` のアクションを拒否します。これは、多要素認証コンテキストがない場合 (MFA が使用されなかったことを意味します) にアクションが拒否されることを意味します。拒否が許可に優先します。

**注記**  
`Deny` ステートメントの `MultiFactorAuthPresent` の条件チェックは、MFA が使用されていなければ該当キーが存在せず、評価できないため、`{"Bool":{"aws:MultiFactorAuthPresent":false}}` となりません。その代わりに、`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}
            }
        }
    ]
}
```

------