IAM (AWS Identity and Access Management)
- Triple A 에 대한 관리
- Authentication
- Authorization
- Auditing
IAM 소개
- 사용자
- 그룹
- 역할
- 정책
인증 (내가 누구인지 Authorization)
- 사용자 (USER)
- username / password
- AccessKey
→ 로그인 하는 방법에 따라서 필요한 정보가 다를 뿐. 사용자는 로그인을 통해 인증.
→ AccessKey공유하지 말것! CloudTrail에 한 기록이 모두 그 사람의 AccessKey로 남음
- 권한 부여를 받는 대상으로 만약 정책이 없다면 권한이 없다고 생각하면된다.
- 그룹 ( Group)
- 그룹의 정책은 유저에게 상속된다.
- 역할 (Role)
- Role에 정의된 권한만 실행할 수 있다. 기존의 롤을 덮어쓰기를 한다고 보면됨.
- 임시로 권한을 잠깐 부여받기 위해 사용함. AWS IAM은 최소 권한의 원칙!
- 롤의 중복 할당 안됨.
- 리소스에 대해서도 할당이 가능하다.
- EC2에서 코드 실행 → AWS 리소스 호출하는 액션 → 액세스키가
- 액세스키 하드코딩
- OS 환경변수
- aws/credentials
- 1,2,3이 없으면 리소스의 역할을 확인한다. 1,2,3의 우선순위는 3이 가장 높다.
- EC2에서 코드 실행 → AWS 리소스 호출하는 액션 → 액세스키가
인가 (내가 무엇을 할 수 있지 Authenticate)
4. 정책 (Policy)
- Json파일
- permission에 대한 ALLOW, DENY 내용을 담은 문서
- 중복할당 가능
Account와 user는 구분이 되어야 한다.
- Account는 IAM의 가장 큰 단위
- USER가 무엇을 하던지, Account를 기준으로 비용처리가 된다.
-
Account가 루트 계정인데 이 루트 계정으로는 Access/Secret key를 발급하지 말라고 한다. 루트 계정의 권한을 막을 방법이 없기 때문에 유출 시 위험하다. 내가 루트 계정으로 AWS 계정을 만들었어도, admin 유저를 만들어서 admin 유저를 사용하도록 하자.
- ARN : AWS Resource Name
- 리소스의 식별자
- arn.aws:[서비스]:[리전]:[account]:[리소스아이디]
- s3는 리전,account는 생략이 가능하다. 생략 가능한 이유는 버킷 이름을 기준으로 url이 만들어지기 때문에 전 세계에서 같은 이름으로 생성할 수가 없다.
- identity-based policies (=관리형 정책: AWS 관리형 정책 혹은 고객 관리형 정책으로 나뉨)
- resource-based policies (= 인라인 정책)
- 둘중에 충돌이 나는경우 역시 거부 우선
AWS 접근하려고 하면 (API호출을 하면) 방화벽처럼 해당 유저가 권한있는지 물어보는게 IAM!!
- ARN : AWS Resource Name