내용으로 건너뛰기

EC2 인스턴스 시작 실패에 대한 ‘UnauthorizedOperation’ 인증 오류를 디코딩하고 분석하려면 어떻게 해야 합니까?

2분 분량
0

Amazon Elastic Compute Cloud(Amazon EC2) 인스턴스를 시작하려고 하면 다음과 같은 오류가 표시됩니다. "An error occurred (UnauthorizedOperation) when calling the RunInstances operation: You are not authorized to perform this operation. Encoded authorization failure message encoded-message".

간략한 설명

AWS Identity and Access Management(IAM) 정책이 너무 제한적일 때 UnauthorizedOperation 오류가 발생할 수 있습니다. 이 오류는 IAM 사용자에게 EC2 인스턴스를 시작할 권한이 없는 경우에도 발생할 수 있습니다. 실패에 대한 자세한 내용을 보려면 AWS Command Line Interface(AWS CLI) 또는 AWS CloudShell을 사용하여 오류 메시지에 포함된 인코딩된 메시지를 디코딩하십시오. 인코딩된 메시지는 다음 예와 비슷합니다.

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

참고: 인코딩된 메시지를 디코딩하려면 IAM 사용자 또는 역할에 DecodeAuthorizationMesssage API 작업을 수행할 수 있는 권한이 있어야 합니다. 사용자 또는 역할에 해당 권한이 없는 경우 디코딩 작업은 다음 오류 메시지와 함께 실패합니다.

"Error: A client error (AccessDenied) occurred when calling the DecodeAuthorizationMessage operation: User: ### is not authorized to perform: (sts:DecodeAuthorizationMessage) action".

해결 방법

참고: AWS Command Line Interface(AWS CLI) 명령을 실행할 때 오류가 발생하면 AWS CLI의 오류 해결을 참조하십시오. 또한 최신 AWS CLI 버전을 사용하고 있는지 확인하십시오.

인증 실패 오류를 디코딩하려면 다음 단계를 완료하십시오.

  1. decode-authorization-message 명령을 실행합니다.
    aws sts decode-authorization-message --encoded-message encoded-message-error
    참고: encoded-message-error를 오류 메시지에 포함된 인코딩된 메시지로 바꿉니다.
    디코딩된 메시지의 예:
    aws sts decode-authorization-message --encoded-message 4GIOHlTkIaWHQD0Q0m6XSnuUMCm-abcdefghijklmn-abcdefghijklmn-abcdefghijklmn{
        "DecodedMessage":
    {
    "allowed
    ...
    "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\"}]}}]}}}"
    }
    디코딩된 메시지에는 IAM 사용자 또는 역할 정책에서 누락된 필수 권한이 나열됩니다.
  2. 디코딩된 메시지에서 principal, action, resource, conditionkey 필드를 검토하여 실패 원인에 대한 자세한 정보를 얻습니다. 메시지에는 요청된 작업 및 리소스, 요청을 한 위탁자 및 사용자 요청의 조건 키 값이 포함됩니다.
    이전 예시에서 요청이 실패한 이유는 AWS-Userarn:aws:iam::accountID:role/EC2_instance_Profile_role ARN에 대해 iam:PassRole 작업을 수행할 수 있는 권한이 없기 때문입니다.
  3. IAM 사용자 또는 역할과 연결된 IAM 정책을 편집하여 필수 권한을 추가합니다.

또한 IAM 정책 시뮬레이터를 사용하여 ID 기반 정책 및 IAM 권한 경계의 문제를 해결할 수도 있습니다.

관련 정보

EC2 인스턴스에서 AWS CLI 명령을 실행할 수 없는 이유는 무엇인가요?

EC2 인스턴스를 시작할 수 없는 이유는 무엇입니까?

액세스 거부 오류 메시지 문제 해결

AWS 공식업데이트됨 7달 전