작성 이유
AWS를 사용하는데 권한 관련에 있어 개발하는데 지연되는 부분이 생각보다 많았다. 그래서 권한 관련 개념에 대해 간단하게 정리해보았다.
IAM 구성
- 사용자(User)
- 실제 AWS를 사용하는 사람 혹은 애플리케이션
- 그룹(Group)
- 사용자의 집합
- 그룹에 속한 사용자는 그룹에 부여된 권한을 행사
- 정책(Policy)
- 사용자와 그룹, 역할이 무엇을 할 수 있는지 관한 문서
- JSON형식으로 정의
- 역할(Role)
- AWS 리소스에 부여하여 해당 리소스가 무엇을 할 수 있는지 정의
- 혹은 다른 사용자가 역할을 부여 받아 사용
- 다른 자격에 대해서 신뢰 관계를 구축 가능
- 역할을 바꾸어 가며 서비스를 사용 가능
권한 검증
-
사용자가 서비스를 사용하고 싶을 경우
사용자 → 그룹 → 역할 순으로 권한 검증 한다.
- 나에게 해당 서비스를 이용할 수 있는 정책이 부여되었는가?
- 내가 속한 그룹에 서비스를 이용할 수 있는 정책이 부여되어 있는가?
- 내게 위임 받은 역할에 서비스를 이용할 수 있는 정책이 부여되어 있는가?
-
서비스에서 다른 서비스를 사용하고 싶을 경우
A서비스가 부여 받은 역할이 B서비스를 이용할 수 있는 정책이 붙어있는가?
사용자(User)의 종류
- 루트 사용자: Billing 관리를 포함한 계정의 모든 권한을 가지고 있다.
- 관리 목적 이외에 다른 용도로 사용하지 않을 것을 권장
- 탈취 되면 복구가 어려움
- IAM 사용자: IAM을 통해 생성해서 사용하는 사용자
- 한 사람 혹은 하나의 애플리케이션을 의미
- 설정 시 콘솔 로그인 권한 부여 가능
- 설정 시 AWS 서비스를 이용할 수 있음
- AdminAccess를 부여하더라도 루트 사용자로 별도의 설정을 하지 않으면 Billing 기능을 사용할 수 없음
IAM 자격 증명 보고서
-
계정의 모든 사용자와 암호, 액세스 키, MFA 장치등의 증명 상태를 나열하는 보고서를 생성하고 다운로드 가능
-
4시간에 1번씩 생성 가능(csv)
-
AWS Console, CLI, API에서 생성 요청 및 다운로드 가능
-
포함되는 정보
모범 사례
- 루트 사용자는 사용하지 않기
- 불필요한 사용자는 만들지 않기
- 가능하면 그룹과 정책을 사용하기
- 최소한의 권한만 허용하는 습관을 들이기
- MFA 활성화 권장
- AccessKey 대신 역할을 활용하기