IAM 기초
IAM(Identity and Access Management)을 사용하면 AWS 서비스와 리소스에 대한 액세스를 안전하게 관리할 수 있다. 또한 AWS 사용자 및 그룹을 만들고 관리하며 AWS 리소스에 대한 액세스를 허용 및 거부할 수 있다.
- AWS의 보안 및 관리를 담당하는 글로벌 서비스
- 주요 기능
- AWS 어카운트 관리 및 리소스/사용자/서비스의 권한 제어
- 임시 권한 부여
- 서비스 사용을 위한 인증 정보 부여
- 사용자의 생성, 관리, 계정의 보안
- Multi-factor Authentication
- 사용자의 패스워드 정책 관리
- 다른 계정과의 리소스 공유
IAM 구성
사용자
실제 AWS를 사용하는 사람/어플리케이션을 의미
Root 사용자
- 계정을 생성할 때 같이 생성되는 사용자
- 계정의 모든 권한을 가지고 있으며 계정 권한을 제한할 방법이 없음
- 탈취 당했을 때 복구가 매우 어려움 (MFA 필수)
- 자격증명 부여 가능
- Root 사용자만 가능한 작업
- AWS 계정 설정 변경 (메인 이메일 주소, 계정 이름, 연락처 정보 등)
- 요금 관련 설정 (IAM 유저에게 위임 가능)
- AWS Support Plan 구독, 변경, 취소
- AWS 계정 삭제
IAM 사용자
-
IAM을 통해 생성한 사용자
-
생성 시 권한이 따로 부여되어 있지 않으며 정책 혹은 그룹을 통해 권한을 부여받아 활동
-
자격증명 부여 가능, 콘솔 로그인 가능 (Optional)
-
사람 뿐만 아니라 어플리케이션 같은 다른 주체도 대표 가능
- ex. app이 AWS 서비스를 사용하기 위해서 IAM 사용자의 자격 증명을 보관 후 사용
그룹
정책
구성 요소
- Resource : 어떤 AWS 리소스에 대해서
- Action : 어떤 행동을
- Effect: 허용/거부
- Condition : 정책이 적용되는 조건 (ex. IP주소, 시간, 태그 등)
{
"Version" : "2012-10-17",
"Statement": [
{
"Action":["s3.ListBucket"],
"Effect":["Allow"],
"Resource":["arn:aws:s3:::spark-test-rubywave1"],
"Condition":{
"DateGreaterThan" : {"aws:CurrentTIme":"2021-04-01T00:00:00Z"},
"DateLessThan" : {"aws:CurrentTime":"2022-06-30T23:59:59Z"}
}
}
]
}
역할
권한 검증 과정
사용자가 EC2 이용할 때
- 사용자 권한 확인 (사용자에게 EC2를 이용할 수 있는 정책이 부여되었는가)
- 사용자 권한이 없다면 그룹 권한을 확인 (속한 그룹에 EC2 이용할 수 있는 정책이 부여되었는가)
- 1,2 둘 다 해당이 없다면 권한없음. 1, 2 순서로 체크하다가 권한이 보인다면 권한있음.
EC2가 S3 서비스를 이용하고 싶을 경우
- EC2가 부여받은 역할이 S3를 이용할 수 있는가?
- 있다면 S3 서비스 접근 가능. 아니라면 권한 없음
AWS 자격 증명
콘솔 액세스 자격 증명
- 콘솔 로그인을 위해 필요
- Root Email/Password : 루트 로그인을 위해 사용
- IAM 유저 이름/Password : IAM 유저가 로그인 하기 위해 사용
- Multi-Factor authentication(MFA) : 다른 자격 증명에 보안을 강화하기 위한 임시 비밀번호
프로그램 방식 액세스 자격 증명
- AWS의 CLI 혹은 SDK를 사용할 때 필요한 자격 증명
- 장기 자격 증명(Long-Term Credential)과 임시 자격 증명(Temporary Credential)로 구성
- 구성
- Access Key ID : 유저 이름에 해당하는 키. 일반적으로 공개되어도 무방
- Secret Access Key : 패스워드에 해당하는 키. 공개되면 안됨
- Token : 임시 자격 증명에만 사용. 임시 자격 증명이 유효한지 검증하기 위해 사용
- 하나의 IAM 사용자 당 2개의 Access Key 발급 가능
- 키를 바꿀 때 새로운 키를 발급받고 이전 키를 삭제하기 위해 2개 가능
- 활성/비활성화 가능
- Secret Access Key의 경우 발급 시점 이외에 다시 확인이 불가능
- 생성한 IAM 사용자의 권한을 행사 가능
IAM 자격 증명 보고서
계정의 모든 사용자와 암호, 액세스 키, MFA 장치등의 증명 상태를 나열하는 보고서
- 생성하고 다운로드 가능
- 4시간에 한번 씩 생성 가능
- AWS 콘솔, CLI, API에서 생성 요청 및 다운로드 가능
- 포함되는 정보
- 암호 : 활성화 여부, 마지막 사용 시간, 마지막 변경 시간, 변경 주기
- 액세스 키 : 활성화 여부, 마지막 사용 시간, 마지막 변경 시간, 마지막으로 사용한 서비스
- 기타 : MFA 사용 여부, 사용자 생성 시간
AWS 사용과 인증
AWS 이용 방법
AWS 웹 콘솔
- 웹 기반의 콘솔에 로그인하여 AWS 사용
- 콘솔 액세스 자격 증명을 사용하여 인증
프로그래밍 액세스 방식
- CLI (Command Line Interface): 명령줄 기반으로 AWS 서비스를 관리하는 통합 도구
- SDK (Software Development Kit) : 다양한 프로그래밍 언어로 만들어진 AWS 서비스를 관리하는 패키지. 프로그래밍 언어에 맞는 SDK를 사용해 개발에 이용
- 프로그램 방식 액세스 자격 증명을 사용하여 인증
프로그램 방식 액세스 자격 증명 활용
- IAM 사용자를 서버/프로그램 별로 생성하여 Access Key를 전달하여 CLI/SDK 사용
- AWS CLI의 경우 서버의 별도 파일에 자격 증명을 저장하여 인증
- AWS SDK의 경우 별도 파일에 자격 증명을 저장하거나 런타임에 자격 증명을 명시해서 인증