

# 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 작업에 대해 액세스는 명시적으로 거부합니다. 이를 프로그래밍 방식으로 수행하려면 사용자가 `GetSessionToken` 작업을 호출하는 동안 선택 사항인 `SerialNumber` 및 `TokenCode` 값을 포함해야 합니다. 이 작업은 MFA를 사용하여 인증된 임시 자격 증명을 반환합니다. GetSessionToken에 대해 자세히 알아보려면 [신뢰할 수 없는 환경의 사용자를 위한 자격 증명 요청](id_credentials_temp_request.md#api_getsessiontoken) 섹션을 참조하세요.

이 정책이 하는 일은 무엇입니까?
+ `AllowAllActionsForEC2` 문은 모든 Amazon EC2 작업을 허용합니다.
+ `DenyStopAndTerminateWhenMFAIsNotPresent` 문은 MFA 컨텍스트가 누락된 경우 `StopInstances` 및 `TerminateInstances` 작업을 거부합니다. 따라서 Multi-Factor Authentication(MFA) 컨텍스트가 누락된 경우(MFA가 사용되지 않은 경우) 작업이 거부됩니다. 거부는 허용을 무시합니다.

**참고**  
MFA를 사용하지 않을 때는 키가 없어 키를 평가할 수 없기 때문에 `Deny` 문의 `MultiFactorAuthPresent`에 대한 조건 확인이 `{"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}
            }
        }
    ]
}
```

------