IAM 설정 후 ec2 인스턴스 목록에 접근할 수 없을 때
root 계정에서 IAM 역할을 만들어 새로 생성하는 ec2에 부여한 뒤 터미널로 접속해 ec2 인스턴스 목록을 출력하려고 하니
다음과 같은 에러가 발생했다.
[ec2-user@ip-172-31-30-215 ~]$ aws ec2 describe-instances --region ap-northeast-2
An error occurred (UnauthorizedOperation) when calling the DescribeInstances operation: You are not authorized to perform this operation.
An error occurred (UnauthorizedOperation) when calling the DescribeInstances operation: You are not authorized to perform this operation.
해석해보면 DescribeInstances 작업을 호출할 때 오류(UnauthorizedOperation)가 발생했다. 이 작업을 수행할 권한이 없다.
decode-authorization-message 명령을 실행해 encoded-message를 오류 메시지에 포함된 정확한 인코딩된 메시지로 바꾼다.
[ec2-user@ip-172-31-30-215 ~]$ aws sts decode-authorization-message --encoded-message encoded-message
또 다시 에러가 발생 !!
An error occurred (AccessDenied) when calling the DecodeAuthorizationMessage operation: User: arn:aws:sts::471702632719:assumed-role/allow_access_s3/i-058e63660c959ea12 is not authorized to perform: sts:DecodeAuthorizationMessage because no identity-based policy allows the sts:DecodeAuthorizationMessage action
다시 해석해보면
DecodeAuthorizationMessage 작업을 호출할 때 오류가 발생했습니다(AccessDenied).
사용자: arn:aws:sts::471702632719:assumed-role/allow_access_s3/i-058e63660c959ea12는 다음을 수행할 권한이 없습니다. sts:DecodestAuthorizationMessage는 ID가 없기 때문에 허용하지 않습니다. :DecodeAuthorizationMessage 작업
즉, DecodeAuthorizationMessage Policy가 없기 때문에 발생하는 문제였다.
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": "sts:DecodeAuthorizationMessage",
"Resource": "*"
}
]
}
아래와 같이 JSON 형식으로 정책을 추가하고
앞서 만들어둔 allow_access_s3 역할에 정책을 연결해준다.
정책이 정상적으로 연결되었음을 확인할 수 있다.
그런데 다시 한번 명령을 실행해보니 또 다른 오류가 발생했다 ... ㅠㅠ
[ec2-user@ip-172-31-30-215 ~]$ aws ec2 describe-instances --region ap-northeast-2
An error occurred (UnauthorizedOperation) when calling the DescribeInstances operation: You are not authorized to perform this operation.
[ec2-user@ip-172-31-30-215 ~]$ aws sts decode-authorization-message --encoded-message encoded-message
An error occurred (InvalidAuthorizationMessageException) when calling the DecodeAuthorizationMessage operation: Message is not valid
An error occurred (InvalidAuthorizationMessageException) when calling the DecodeAuthorizationMessage operation: Message is not valid
허무맹랑하게도 ... 처음에 터미널로 ec2 인스턴스에 접속한 뒤 aws configure을 설정하지 않아서 발생한 에러였다.
아래 명령을 사용해 정보를 등록해주면 (참고로 마지막 항목인 출력 파일 형식을 table로 지정해주었다.)
aws configure
us-east-1 에 있는 내 ec2 인스턴스 정보를 조회할 수 있다.