AWS Identity Access Management 란?
AWS IAM을 사용하면 AWS 리소스에 대한 개별 액세스 및 그룹 액세스를 안전하게 제어할 수 있다. 사용자 자격증명을 생성 및 관리하고, 이러한 IAM 사용자에게 리소스에 액세스할 수 있는 권한을 부여할 수 있다.
IAM
- AWS 계정의 중앙 집중식 제어
- AWS 계정에 대한 공유 액세스
- 세분화된 권한
- ID 연합
- 다중 인증
- 필요한 경우 사용자 / 장치 및 서비스에 대한 임시 액세스를 제공한다
- 고유한 비밀번호 교체 정책을 설정할 수 있다
- 다양한 AWS 서비스와 통합
- PCI DSS 준수 지원
주요 단어
Users - 최종 사용자
Groups - 하나의 권한 집합 아래있는 사용자 모음
Roles - 역할을 생성하고 이를 AWS 리소스에 할당할 수 있다
Policies - user/group/role에 대한 허가들을 정의해놓은 문서
IAM 만드는 순서
set user detail
access type : programmatic access / aws management console access
- programmatic access는 access key ID, Secret access key를 생성해줌
- aws management console access 는 콘솔에서 접근할 수 있게 아이디랑 비밀번호 넣는거
set permission
add users to group / copy permissions from existing user / attach existing policies directly
group은 developer, administrator 등등으로 관리할 수 있다.
policy는 그 그룹이 접근할 수 있는 document이다. group을 생성할 때 policy를 선택해서 생성해준다. policy는 키 밸류 형식으로 되어있는 document이다.
IAM 요약
- IAM은 global로 되어있다. users, groups, roles, policies들을 생성하는데 지역이 상관없기 때문이다
- “root account”는 처음 계정을 만들 때 생성되는 계정이다. Admin 계정
- 새로운 user를 만들때 처음에는 permission이 정해져있지 않는다. 권한이 아무것도 없다. 지정해줘야한다.
- 새로운 user에는 access key ID와 secret access key가 부여된다.
- ID와 password는 console에 접근할 때 사용하는 것이고, access key ID와 secret access key는 programmatic 접근을 할 때 (command 창이나 개발에서나 API에서 접근할 때) 사용한다.
- access key ID와 secret access key는 한번만 보여주는데 csv 형식으로 다운 받아서 로컬에 저장할 수 있고, 잃어버리면 다시 재발급 받을 수 있다.
- Multifactor Authentication (다중인증)을 루트계정에 설정해야한다.
- 설정에서 비밀번호 교체 정책을 만들 수 있다.
IAM Policies - IAM 정책
- 허가를 정의하는 JSON 문서
- Identity 정책
- Resource 정책
- 첨부된 정책만 적용됨
- statements 목록
- 명시적으로 허용되지 않음 == 암묵적으로 거부됨
Statement 설명
- 각 statement가 AWS API 요청과 매칭된다.
- Effect는 Allow 아니면 Deny이다
- Action에 있는 것들과 매칭된다
- Resource는 Action이 상대한다
Permission Boundaries - 권한경계
- 다른 사용자에게 관리를 위임하는데 사용된다
- 권한 상승 또는 불필요하게 광범위한 권한을 방지한다.
- IAM 정책이 부여할 수 있는 최대 권한제어
- 사용 케이스
- 람다 함수에 대한 역할을 생성하는 개발자
- EC2 인스턴스에 대한 역항르 생성하는 애플리케이션 소유자
- 임시 사용자를 만드는 관리자.
Resource Access Manager (RAM)
AWS Resource Access Manager (RAM)을 통해 계정 간 리소스 공유 가능
예시)
계정 2에서 계정 1에 private subnet에 있는 인스턴스를 접근하고 사용하고 싶을 때 RAM을 사용한다. RAM에서 리소스를 계정끼리 공유할 수 있다. 계정 1에서 리소스를 공유해주고 계정 2에서 공유된 리소스를 허용하면 공유 가능하다.
AWS Single Sign-On (AWS SSO)
AWS SSO는 여러 AWS 계정 및 비즈니스 애플리케이션에 대한 액세스를 중앙에서 손쉽게 관리하고 사용자에게 Single Sign-On 액세스를 제공하여 할당된 모든 계정 및 애플리케이션을 한 곳에서 액세스하도록 할 수 있는 AWS 서비스
AWS Organizations
AWS Organizations는 여러 AWS 계정을 생성하고 중앙에서 관리하는 조직으로 통합할 수 있는 계정 관리 서비스이다.
AWS Organizations의 모범 사례
- 항상 루트 계정에서 다단계 인증을 활성화한다
- 항상 루트 계정은 강하고 복잡한 비밀번호를 사용한다
- 지불 계정은 청구 목적으로만 사용해야한다. 지불 계정에 리소스를 배포하지 마시오.
- OU(Organizaion Unit?) 또는 개별 계정에서 서비스 제어 정책을 사용하여 AWS 서비스를 활성화/비활성화한다.
재무팀이 EC2를 접근하지 못하게 하려면 Policies에 가서 Service control policies에서 바꿔주면 된다.