BLOG

[Tech blog] 지금 그 IAM, 괜찮으신가요
작성일: 2024-05-13

소개

 

IAM 유저를 생성할 때, 아무 생각없이 AdministratorAccess를 붙이고 있지는 않으십니까?

 

권한을 정해두면 뭔가 발생 할 때마다 관리자에게 신청 해야 하는 등 번거로워지지만, 리소스 감시 목적이나 외부에 운용을 위탁하는 등의 경우, 불필요한 권한은 없애는 편이 안전합니다.

 

이번 게시글에서는 IAM 유저 ‘test-user’를 생성하여 권한을 변경하면 어떻게 되는지에 대해 동작 확인을 해 보도록 하겠습니다.

권한 확인

 

먼저 IAM 사용자의 IAM 정책(권한)을 확인 해 보겠습니다.

 

IAM 페이지로 이동하여 탐색 창(왼쪽 메뉴)에서 Users를 클릭합니다.

 

IAM 사용자가 리스트업 되며, 해당하는 IAM 사용자를 클릭합니다. (이번에는 test-user)

 

 

해당 IAM 사용자에 대한 자세한 정보가 표시되며, Permissions 탭을 클릭하여 Permissions policies의 항목을 보면 부여된 권한을 확인할 수 있습니다.

 

 

관리자 권한에 해당하는 AdministratorAccess가 부여되고 있습니다. 정책 이름 왼쪽에 있는 + , – 를 클릭하여 JSON 형식으로 세부 정보를 확인할 수 있습니다.

 

또한 정책 이름 AdministratorAccess를 클릭하여 권한 세부 정보를 확인할 수도 있습니다.

 

 

402개의 AWS서비스가 있네요(※2023/12/05 시점)

권한 변경

 

만약 ‘test-user는 그정도의 권한은 필요없고, EC2만으로 충분하다’고 한다면, test-user의 권한을 변경해야 합니다.

 

앞에서 말한 바와 같이 IAM 페이지에서 test-user의 Permissions policies를 표시합니다.

 

삭제 할 정책(AdministratorAccess)을 선택하고 오른쪽 상단의 Remove를 클릭합니다.

 

 

확인 화면이 표시되면 Remove policy를 클릭합니다.

 

 

이제 EC2의 IAM 정책을 연결해 봅시다.

 

오른쪽의 드롭다운에서 Add permissions를 클릭합니다.

 

 

우선 오른쪽 상단의 Attach policies directly를 선택하고 EC2로 검색하면 후보 IAM 정책이 계속 나옵니다.

 

이번에는 AmazonEC2FullAccess를 선택하고 오른쪽 하단에서 다음을 클릭합니다.

 

 

확인 화면이 나온 후 Add permissions를 클릭하면 IAM 정책 설정 완료입니다.

 

 

그럼 EC2로만 이용이 제한 되는지 확인 해 봅시다.

권한 변경 후 동작 확인

 

먼저 test-user로 로그인 한 후, EC2의 페이지로 이동해 보면, EC2 인스턴스의 표시나 생성을 문제 없이 할 수 있습니다.

 

 

그러나 RDS의 페이지로 이동해 보면 경고문과 함께 RDS 인스턴스는 표시되지 않습니다. RDS 보기 권한이 없기 때문입니다.

 

 

RDS를 볼 수 있는 권한이 있으면 다음과 같이 RDS 인스턴스도 제대로 표시할 수 있습니다.

 

(보충 설명 1) AmazonEC2FullAccess에 대해

 

이번 test-user에 부여한 정책(AmazonEC2FullAccess)은 AWS가 준비하고 있는 매니지드 정책입니다. 사실 EC2와 관련이 깊은 AWS 서비스도 허용됩니다.

 

 

엄격하게 권한을 제어하고 싶다면 IAM 페이지에서 IAM 정책을 직접 만들 수도 있습니다.

(보충 설명 2) RDS의 페이지의 경고문에 대해

 

RDS의 페이지의 경고문의 처음 부분만 기계 번역해 보았습니다.

 

사용자: arn:aws:iam::[Account ID]:user/test-user에는 ID 기반이 없으므로 리소스: arn:aws:rds:ap-northeast-3:[Account ID]:db:* 에서 rds:DescribeDBInstances를 실행할 수 있는 권한이 없습니다.
정책은 rds:DescribeDBInstances 작업을 허용합니다.

 

경고문 안에 rds:DescribeDBInstances라는 에러 해소에 필요한 Action 항목이 안내되고 있습니다. 위와 같은 경우에는 필요한 Action을 포함한 IAM 정책을 부여하면 오류가 해결됩니다.

 

AWS의 관리형 정책이어도 좋고, 아래와 같이 Action ‘rds:DescribeDBInstances’를 포함한 정책을 생성해 IAM 유저에 접속하면, RDS 리스트 표시가 가능하게 됩니다.

 

 

AWS 서비스 간에 제대로 작동하지 않는다면 IAM 주변을 고려하면서 확인하는 것이 좋습니다.

결론

 

IAM은 계정 관리자나 사용자 관리자 이외의 담당자라면 접할 기회가 많지 않을지도 모르지만, AWS를 사용 할수록 반드시 벽에 부딪히게 되는 서비스라고 생각합니다.

 

만약 내부에서는 제한되어 있어 IAM 페이지를 표시할 수 없으신 분은 개인적으로 AWS 계정을 생성해 시험 해 볼 수도 있으므로, 꼭 해 보시면 좋을 것 같습니다.

 

*원문(일문) : https://qiita.com/Bibulous/items/8271b029dd1078b3bf60

Written by Kawana Masahiro, Megazone Japan 

Translated by 메가존클라우드 Cloud Technology Center 박지은 매니저