AWS CLI를 사용하는 IAM 사용자에 대한 MFA 인증을 적용하려면 어떻게 해야 합니까?

최종 업데이트 날짜: 2021년 9월 15일

AWS Identity and Access Management(IAM) 사용자의 AWS 서비스 액세스를 제한하는 Multi-Factor Authentication(MFA) 조건 정책을 생성했습니다. 이 정책은 AWS 관리 콘솔에서는 작동하지만, AWS Command Line Interface(AWS CLI)에서는 작동하지 않습니다. AWS CLI에서 MFA를 사용하려면 어떻게 해야 합니까?

간략한 설명

다음 예제 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 관리 콘솔을 사용하는 IAM 사용자는 MFA 인증 자격 증명을 입력하라는 메시지가 표시된 다음에, AWS 서비스에 액세스할 수 있습니다. 하지만 AWS CLI를 사용하는 IAM 사용자에게는 MFA 인증 자격 증명을 입력하라는 메시지가 표시되지 않으며 바로 AWS 서비스에 액세스할 수 있습니다.

해결 방법

참고: AWS CLI 명령을 실행할 때 오류가 발생하는 경우 최신 버전의 AWS CLI를 사용하고 있는지 확인하세요.

장기 자격 증명을 사용하여 이루어진 요청에는 MultiFactorAuthPresent 키가 존재하지 않습니다. 부울 조건 연산자를 사용하는 경우 정책에 키가 없으면 값이 일치하지 않습니다. MultiFactorAuthPresent 키는 장기 자격 증명을 사용하여 이루어진 요청에 대한 액세스를 거부하지 않습니다.

AWS 관리 콘솔을 사용하는 IAM 사용자는 임시 자격 증명을 생성하고 MFA를 사용한 경우에만 액세스를 허용합니다.

부울 조건을 사용하면 true 또는 false로 설정된 키 값으로의 액세스를 제한할 수 있습다. IfExists 조건 연산자를 추가하여 MultiFactorAuthPresent 키가 요청에 있는지 검사할 수 있습니다. MultiFactorAuthPresent 키가 없는 경우 IfExists가 다음과 비슷하게 조건 요소가 true인지 평가합니다.

"Effect" : "Deny",
"Condition" : { "BoolIfExists" : { "aws:MultiFactorAuthPresent" : "false", "aws:ViaAWSService":"false"} }

장기 자격 증명으로 AWS CLI를 사용하는 IAM 사용자는 액세스가 거부되고 반드시 MFA를 사용하여 인증해야 합니다.

자세한 내용은 부울 조건 연산자를 참조하세요.