AWS Identity and Access Management(IAM) 사용자의 AWS 서비스에 대한 액세스를 제한하는 다중 인증(MFA) 조건 정책을 생성했습니다. 이 정책은 AWS Management Console에서는 작동하지만 AWS Command Line Interface(AWS CLI)에서는 작동하지 않습니다.
간략한 설명
다음 예제 IAM 정책에서는 IAM 사용자가 MFA를 사용하여 특정 AWS 서비스에 액세스해야 합니다.
{
"Sid": "BlockMostAccessUnlessSignedInWithMFA",
"Effect": "Deny",
"NotAction": [
"iam:CreateVirtualMFADevice",
"iam:DeleteVirtualMFADevice",
"iam:ListVirtualMFADevices",
"iam:EnableMFADevice",
"iam:ResyncMFADevice",
"iam:ListAccountAliases",
"iam:ListUsers",
"iam:ListSSHPublicKeys",
"iam:ListAccessKeys",
"iam:ListServiceSpecificCredentials",
"iam:ListMFADevices",
"iam:GetAccountSummary",
"sts:GetSessionToken"
],
"Resource": "*",
"Condition": {
"Bool": {
"aws:MultiFactorAuthPresent": "false",
"aws:ViaAWSService": "false"
}
}
}
AWS Management Console을 사용하는 IAM 사용자에게는 MFA 인증 자격 증명을 입력하라는 메시지가 표시되며, 그런 다음 AWS 서비스에 액세스할 수 있습니다. 그러나 AWS CLI를 사용하는 IAM 사용자에게는 MFA 인증 자격 증명을 입력하라는 메시지가 표시되지 않으며 AWS 서비스에 액세스할 수 있습니다.
해결 방법
**참고:**AWS CLI 명령을 실행할 때 오류가 발생하면, AWS CLI 오류 문제해결을 참조하세요. 또한 최신 AWS CLI 버전을 사용하고 있는지 확인하세요.
aws:MultiFactorAuthPresent 키는 장기 자격 증명을 사용하여 수행된 요청에 존재하지 않습니다. 부울 조건 연산자를 사용하는 경우 정책의 키가 없으면 값이 일치하지 않습니다. MultiFactorAuthPresent 키는 장기 자격 증명을 사용하여 수행된 요청에 대한 액세스를 거부하지 않습니다.
AWS Management Console을 사용하는 IAM 사용자는 임시 자격 증명을 생성하고 MFA를 사용하는 경우에만 액세스를 허용합니다.
이 부울 조건을 사용하면 키 값을 true 또는 false로 설정하여 액세스를 제한할 수 있습니다. IfExists 조건 연산자를 추가하여 MultiFactorAuthPresent 키가 요청에 있는지 확인할 수 있습니다. MultiFactorAuthPresent 키가 없는 경우 IfExists는 다음과 유사하게 조건 요소를 true로 평가합니다.
"Effect" : "Deny",
"Condition" : { "BoolIfExists" : { "aws:MultiFactorAuthPresent" : "false", "aws:ViaAWSService":"false"} }
**참고:**장기 자격 증명으로 AWS CLI를 사용하는 IAM 사용자는 액세스가 거부되며 MFA를 사용하여 인증해야 합니다. 따라서 MFA 토큰을 사용하여 CLI 세션을 인증해야 합니다.
관련 정보
다중 인증 사용
AssumeRole
가상 MFA 디바이스(AWS CLI 또는 AWS API) 활성화 및 관리