AWS 에서 is not authorized to perform 에러 발생시 해결방법
is not authorized to perform 에러
AWS에서 모든 동작은 API로 이루어지고, 모든 API는 권한이 관리된다. 이 에러는 사용자가 권한이 없는 어떤 동작을 수행하고자 할때 발생한다. 결국 사용자에게 적절한 권한을 추가한다면 에러는 해결된다.
아래는 CodeBuild에서 build project를 생성할때 발생하는 에러이다.
어떤 권한을 추가해야 될까?
위 사진을 보면 iam:CreateRole 이라는 권한이 없기 때문에 발생했다는것을 알수 있다. IAM에서 사용자에게 iam:CreateRole 권한을 추가해주면 된다. "iam:" 으로 시작하기 때문에, IAM 서비스에 대한 권한임을 알수 있다.
사용자에게는 policy라는 단위로 추가할수 있는데, 여기서 policy는 일종의 권한의 집합 이라고 생각하면 된다. 결국 iam:CreateRole이 포함된 정책을 사용자에게 추가해야 한다.
권한 추가 방법
첫번째 방법, 서비스의 모든 권한이 포함된 policy 추가
가장 간단한 방법은 서비스의 모든 권한이 포함된 policy을 추가하는 것이다(편하지만 좋지 않은). IAM에 대한 모든 권한을 추가해보자
IAM 메뉴 진입 -> Users -> 사용자 선택 -> Add permisions -> Attach existion policies directly -> IAM검색 -> IAMFullAccess 선택 및 추가
xxxFullAccess로 끝난다면 해당 서비스의 모든 권한이 포함된 policy라고 생각하면 된다. 혹시 FullAccess 외에 미리 만들어져 있는 적절한 policy가 있다면 해당 정책을 선택하는것이 사실 더 좋다. (ReadOnly 등)
두번째 방법, 해당 권한을 포함한 policy 생성 및 추가
에러문구로 확인한 권한을 포함한 policy를 직접 생성해보자
IAM 메뉴 진입 -> Users -> 사용자 선택 -> Add permisions -> Attach existion policies directly -> Create policy -> Choose a service -> 서비스 선택(여기서는 IAM) -> CreateRole 입력 체크 -> Resources -> All resources 선택 -> Next 및 저장
이후에는 첫번째 방법과 동일하게 진행하고, 새로 생성한 policy 이름으로 검색해서 추가하면 된다.