유저 X를 생성할때 IAM은 X에 대한 액세스 키와 비밀 키를 부여한다.
두 키를 가지고 AWS내의 다양한 서비스를 사용한다. -> API 또는 콘솔에서 키를 가지고 AWS 자원을 사용.
[MFA] 아마존은 다요소 인증(MFA) 활성화를 적극 권장하고 있다.
MFA: 사용자의 다른계정(구글, 페이스북 등)을 통한 2차 인증을 거치는 추가적인 과정.
목적: 특정 리소스에 접근하거나 특정 데이터만 불러오고 수정할 수 있는 제약을 정하는 최소 권한 정책을 적용 하는것.
최소 권한 정책
어떤 회사 A에 데이터 엔지니어팀, S/W엔지니어팀, 데이터 분석팀이 있을때 각 팀마다 고유한 업무가 존재하고 업무 처리를 위한 접근하는 소스와 생산되는 결과물이 모두 다르다.
데이터 엔지니어팀과 S/W엔지니어팀이 필요로하는 리소스는 서로 다르고 이에 따른 접근 권한도 다르다.
만약 모든 팀에게 root권한을 준다면 잘못 건들여 설정이 잘못 되거나 차질이 생길 수 있다.
그렇다면 비용이 더 발생하게 될 수 있기 때문에 각 팀마다 최소 권한 정책을 통해 최소한의 역할만 제공하고 그 이외에 대한 접근은 차단하는 역할을 한다. 보안적으로도 중요하다.
생성 및 관리
* 유저: AWS 리소스를 사용하는 사람들
* 그룹: 유저들의 집합. 개개인에게 같은 접근 권한을 하나하나 주지않고 그룹으로 묶어 그 그룹안에 있는 유저들은 동일한 접근제어를 적용시킴.
* 역할: AWS 리소스에 대한 임시 액세스 권한을 부여하는 도구
역할은 하나 또는 다수의 정책을 포함할 수 있다. 여러 정책을 합쳐서 새로운 역할을 만들어 유저 및 그룹에 적용시킬 수 있다.
* 정책: 액세스할 수 있는 리소스와 각 리소스에 대한 액세스 수준을 정의하는 문서
정책을 만들어 최소 권한 정책을 펼칠 수 있음.
ex) 정책A는 DB읽기 전용, 정책B는 대시보드 생성 후 모든 작업을 진행할 수 있는 admin모드 등.
정책 시뮬레이터
개발 환경: 스테이징, 프로덕션.
1) 스테이징: 개발자가 끊임 없이 개발하고 테스트하고 검증 과정을 거치는 플레이그라운드이며, 모두의 동의하에 스테이징에서 프로덕션으로 프로모션한다.
2) 프로덕션: 실제로 고객에게 보여지는 제품이나 프로그램.
IAM도 마찬가지로 루트 유저가 다른 유저에게 역할과 정책을 적용했을때 실제로 잘 작동하는기 모른다.
역할 및 정책을 유저에게 적용하기 전 IAM 정책 시뮬레이터를 돌려 잘 작동되는지 확인 가능.
1) 프로그래밍 방식 액세스: 액세스 키와 비밀 키를 제공. API를 통해 다양한 AWS 리소스를 사용 가능.
2) AWS Management Console 액세스: 콘솔에서 비밀번호를 통해 AWS 메인 화면에 로그인 가능.
역할생성
Action 내부의 sts:AssumeRole은 일시적 권한을 부여한다.
Service dynamodb.amazonaws.com의 역할을 통해 DynamoDB에 일시적인 권한을 부여하겠다는 의미.
정책 생성
[방법1] 시각적 편집기: 원하는 리소스를 직접 선택하고 리소스 안에서 실행할 수 있는 다양한 행동에 대한 권한을 부여.
[방법2] JSON: JSON형태의 정책 문서를 직접 생성해 추가할 수 있다.
IAM = Identity and Access Management -> 글로벌 서비스
사용자 생성
그룹 배치
루트 계정(root): 계정 생성 시 에만 사용.
-> 사용하거나 공유하면 안됨
그룹(Group): 사용자만 배치 할 수 있고, 다른 그룹을 포함 할 수 없음.
-> 한 사용자가 다수의 그룹에는 포함 할 수 있음.
사용자와 그룹을 생성하는 이유
-> AWS 계정 사용을 허용하기 위해
-> 권한을 부여하기 위해
===> 그룹정책, IAM 정책 이라는 JSON문서를 지정할 수 있음.
-> 비용, 보안문제 발생 가능성이 큼.
===> 최소 권한을 부여해야함.