IAM (Identity Access Management)이란 무엇인가?
AWS를 쓰는데 가장 기초적인 서비스중 하나이다.
AWS의 리소스들을 관리하고 권한을 설정하고 각 리소스간의 연계를 위해 필수적인 시스템이다.
가장 기초적으로 세팅해야하는 서비스이고 유저 로그인, 유저 간 권한관리, 패스워드 설정, 리소스 간 연계시 권한 등 세밀한 설정이 가능하다.
아마존에서 말하는 IAM
AWS IAM을 사용한다면 AWS 서비스와 리소스에 대한 액세스를 안전하게 관리할 수 있다. 또한 AWS 사용자 및 그룹을 만들고 관리하며 AWS 리소스에 대한 액세스를 허용 및 거부할 수 있다.(보안적인 요쇼, 방대한 사이즈와 서비스를 관리하는 데 필수적이다.)
IAM 역할
- AWS 어카운트 관리 및 리소스/유저/서비스의 권한제어
- 임시 권한 부여
- 서비스 사용을 위한 인증 정보 부여
- 유저의 생성 및 관리 및 계정의 보안
- Multi-factor Authentication(유저가 로그인 할 때 일반적으로 사용하는 id, pwd 뿐만 아니라 디바이스로부터 토큰형식의 임시 pwd를 받아 로그인 하는 방식으로 은행에서 많이 사용)
- 유저의 패스워드 정책 관리
- 다른 계정과의 리소스 공유
- Identity Federation(Facebook 로그인, 구글 로그인 등 다른 인증수단 설정)
IAM 구성
- 유저: 실제 AWS 서비스를 이용하는 사람
- Access Key/ Secret Access key: 유저가 AWS의 서비스를 사용하기 위한 인증정보(유저명, 패스워드랑은 다른 개념)(Secret Access Key는 발급시 한번 보여주기 때문에 잘 적어둬야 한다.)
- 유저명 / 패스워드: 유저가 AWS 콘솔을 사용하기 위한 인증정보
- 그룹: 유저의 집합. 그룹에 속한 유저는 그룹에 부여된 권한을 행사할 수 있다.
- 정책(policy): JSON 형식으로 정의되며, 유저와 그룹, 자격이 무엇을 할 수 있는지에 나와있는 문서(태그를 통해서 나누는 것도 가능하다)
- 자격(Role): AWS 리소스에 부여하여 AWS 리소스가 무엇을 할 수 있는지 정의(EC2가 S3에 있는 이미지를 가져오고 싶을 때 EC2에 부여하는 것이 자격이다. 자격을 갖추면 S3 파일에 접근 할 권한을 얻는다. 대부분의 문제는 자격 문제로 알맞은 권한이 부여됐는지 확인해야 한다.)
- 다른 자격에 대해서 신뢰관계 구축 가능
- 역할을 바꾸어가며 서비스 사용 가능
IAM 팁
- IAM은 글로벌 서비스(Region별 서비스가 아니다)
- STS(Session Token Service)의 경우 Region별 활성/비활성 처리가 가능하다.
- 계정에 별명 부여 가능 -> 로그인 주소 생성 가능
- 유저의 경우 루트 유저와 생성된 유저로 구분
- 루트 유저의 경우 보안에 신경써야 한다.(Multi-factor Authentication 등)
- 유저의 패스워드 보안 정책 변경 가능(일정시간마다 패스워드 변경 등)
- 최소한의 권한만을 허용하는 습관이 중요하다.(Principle of least privilege)
Reference
https://www.youtube.com/channel/UCpDxKxars7BHR3owaNRctaQ