EC2 인스턴스를 시작하려고 할 때 "이 작업을 수행할 권한이 없습니다." 오류 메시지가 표시되는 이유는 무엇입니까?

최종 업데이트 날짜: 2020년 3월 30일

Amazon Elastic Compute Cloud(Amazon EC2) 인스턴스를 시작하려고 할 때 "RunInstances 작업을 호출할 때 오류(UnauthorizedOperation)가 발생했습니다. 이 작업을 수행할 권한이 없습니다. 인코딩된 권한 부여 실패 메시지 encoded-message" 오류가 발생합니다. 이 오류를 해결하려면 어떻게 해야 합니까? 

간략한 설명

"UnauthorizedOperation" 오류는 작업을 수행하려고 하는 AWS Identity and Access Management(IAM) 역할 또는 사용자에게 연결된 권한에 EC2 인스턴스를 시작하는 데 필요한 권한이 없음을 나타냅니다. 이 오류는 인코딩된 메시지와 관련이 있으므로 AWS 명령줄 인터페이스(AWS CLI)를 사용하여 메시지를 디코딩합니다. 이 디코딩은 권한 부여 실패에 대한 자세한 정보를 제공합니다.

사전 조건

인코딩된 메시지를 디코딩하려는 IAM 사용자 또는 역할에 IAM 정책을 통해 DecodeAuthorizationMesssage(sts: DecodeAuthorizationMessage) 작업에 대한 권한이 부여되어 있어야 합니다. 사용자 또는 역할에 이 권한이 없는 경우 디코딩 작업이 실패하고 다음 오류 메시지가 나타납니다.

"오류: DecodeAuthorizationMessage 작업을 호출할 때 클라이언트 오류(AccessDenied)가 발생했습니다. 사용자 xxx에게 (sts: DecodeAuthorizationMessage) 작업을 수행할 권한이 없습니다."

DecodeAuthorizationMessage 작업에 대한 자세한 내용은 DecodeAuthorizationMessage를 참조하십시오.

​해결 방법

1.    다음 명령을 실행하여 AWS CLI가 시스템에 설치구성되어 있는지 확인합니다.

$ aws --version

2.    decode-authorization-message 명령을 실행합니다. encoded-message를 오류 메시지에 포함된 정확한 인코딩된 메시지로 바꿉니다.

$ aws sts decode-authorization-message --encoded-message encoded-message

3.    디코딩된 메시지에 IAM 역할 또는 사용자 정책에 누락된 필수 권한이 나열됩니다.

다음은 인코딩된 메시지의 예입니다.

Launch Failed - You are not authorized to perform this operation. Encoded authorization failure message: 4GIOHlTkIaWHQD0Q0m6XSnuUMCm-abcdefghijklmn-abcdefghijklmn-abcdefghijklmn

다음은 디코딩된 메시지의 예입니다.

$ aws sts decode-authorization-message --encoded-message 4GIOHlTkIaWHQD0Q0m6XSnuUMCm-abcdefghijklmn-abcdefghijklmn-abcdefghijklmn

{
    "DecodedMessage": 
"{\"allowed\":false,\"explicitDeny\":false,\"matchedStatements\":{\"items\":[]},\"failures\":{\"items\":[]},\"context\":{\"principal\":{\"id\":\"ABCDEFGHIJKLMNO\",\"name\":\"AWS-User\",
\"arn\":\"arn:aws:iam::accountID:user/test-user\"},\"action\":\"iam:PassRole\",
\"resource\":\"arn:aws:iam::accountID:role/EC2_instance_Profile_role\",\"conditions\":{\"items\":[{\"key\":\"aws:Region\",\"values\":{\"items\":[{\"value\":\"us-east-2\"}]}},
{\"key\":\"aws:Service\",\"values\":{\"items\":[{\"value\":\"ec2\"}]}},{\"key\":\"aws:Resource\",\"values\":{\"items\":[{\"value\":\"role/EC2_instance_Profile_role\"}]}},
{\"key\":\"iam:RoleName\",\"values\":{\"items\":[{\"value\":\"EC2_instance_Profile_role\"}]}},{\"key\":\"aws:Account\",\"values\":{\"items\":[{\"value\":\"accountID\"}]}},
{\"key\":\"aws:Type\",\"values\":{\"items\":[{\"value\":\"role\"}]}},{\"key\":\"aws:ARN\",\"values\":{\"items\":[{\"value\":\"arn:aws:iam::accountID:role/EC2_instance_Profile_role\"}]}}]}}}"
}

위의 오류 메시지는 AWS-User에게 arn:aws:iam::accountID:role/EC2_instance_Profile_role에 대해 iam:PassRole 작업을 수행할 권한이 없어 요청에서 RunInstances를 호출하지 못했음을 나타냅니다.

4.    IAM 역할 또는 사용자에게 연결된 IAM 정책을 편집하여 누락된 권한을 추가합니다.


이 문서가 도움이 되었습니까?

AWS에서 개선해야 할 부분이 있습니까?


도움이 필요하십니까?