개요
AWS를 사용하다보면 하나의 IAM 사용자로만 서비스를 이용하는 게 여간 불편함이 아닐 수 없다. TF팀이 꾸려져서 다른 직무로 전환이 되거나 승진하여 권한이 확장되거나 기존에 하던 프로젝트가 종료되어 해당 프로젝트 접근 권한을 반납해야하는 경우가 있다. 이러한 경우에 관리자는 어떻게 권한을 관리해야할까 오늘 그 해답중에 하나인 역할을 활용해서 문제를 해결하는 방법을 소개하고자 한다.
본문
역할 전환
역할전환은 IAM 사용자로서 가지고 있는 권한을 사용하는 게 아니라 임시로(장기 혹은 단기) IAM 역할의 권한을 빌려와서 권한을 행사하는 것을 말한다.
IAM 객체는 역할을 사용할 수 있는 권한이 있어야 하고, 역할에서도 어떤 대상(entity)이 해당 역할을 호출할 수 있는지 확인할 수 있는 체계가 필요하다.
역할을 빌릴 수 있는 권한
assume role
assue role 권한은 사용자가 가지고 있는 권한이 아닌, 이미 정의된 역할의 권한을 빌려올 수 있는 권한을 뜻한다.
잠시만 빌린다는 관점을 생각해주시면 된다..
역할에서는 어떤 설정을 해주어야 할까 ?
역할에서는 trsut relationship이라고 하는 신뢰 관계를 설정할 수 있다.
신뢰 관계는 역할의 권한을 빌릴 수 있는 대상이 누군지 인증(authorize)할 수 있는 대상이라고 생각하면 더 쉬우리라 생각 된다.
결국, 역할을 빌리는 대상도 역할을 빌려주는 대상도 서로 검증하는 이중 잠금장치라고 생각하면 좋을 듯 싶다.
한 번, 실습을 통해서 동일 계정에서 역할 전환, 교차 계정에서 역할 전환을 실습해보겠다.
이 실습을 잘 해야 RBAC 를 잘 적용할 수 있으니 이전 글과 함께, 이번 글을 읽어보시기 바란다.
- 하나의 계정에서 역할 전환
- 설정
이제 실습을 진행해보자.
AWS 계정에서 IAM 계정을 만든다. 계정에 할당되는 정책은 assume-role 정책을 할당한다.
assume role 정책의 리소스는 aws 계정 내 모든 역할에 대해 호출할 수 있도록 설정한다.
역할도 생성해줍니다.
역할의 정책은 EC2Full Access 정책을 할당해주고, Trust Relationships은 다음과 같이 설정해줍니다.
역할 전환을 위한 설정은 완료되었습니다.
- IAM User의 권한 확인
IAM 사용자로 로그인해보면 assume role 외에는 아무런 권한이 없으므로 EC2 서비스나 IAM 서비스에서 어떠한 정보도 확인할 수 없습니다.
- Role Switching
우측 상단에 메뉴를 활용하여, 역할 전환을 한다.
역할전환 이미지
- IAM Role의 권한 확인
역할 전환을 하게 되면 다음과 같이 우측 상단에 표기가 변경된다.
전환된 역할은 EC2 서비스의 모든 기능을 활용할 수 있다.
- CLI
cli에서도 동일하게 활용할 수 있다.
aws cli를 사용할 때는 credentials을 설정해주어야 한다.
aws configure 명령어를 통해 credentials을 설정한 다음,
~/.aws/credentials 파일을 열어보면, default profile에서 입력한 credentials를 확인할 수 있다.
역할을 사용하기 위해서는 다음과 같이 설정하면 된다.
~/.aws/config 파일에서, 다음과 같이 입력한 다음 저장한다.
[profile yeoli]
source_profile = default
region = ap-northeast-2
role_arn = arn:aws:iam::[Account ID]:role/[Role Name]
이제 aws 명령어를 실행할 때마다 --profile [Profile Name] 을 포함하여 역할 전환된 명령을 실행할 수 있다.
정리
역할 전환에 필요한 구성요소
정책
- assume role 권한 (@ IAM User, IAM Group, IAM Role)
신뢰 관계
- trust relationship (@ role)
다음에 할 이야기
IAM 권한 확인 메커니즘