[ 2023.01.03 TIL-AWS IAM ]

AWS IAM
✏️ IAM이란?
- Identity and Access Management의 약자이고, Glocal 서비스
- 사용자 생성
- 가입한 계정이 루트 계정
- 루트 계정에서 계정을 생성하면 다른 팀원이 사용 가능
- 루트 계정은 공유/사용 하지 않아야함, 계정 생성에만 사용
- 그룹에 배치
- 루트 계정에서 생성한 계정을 그룹으로 묶을 수 잇음
- 그룹에는 사용자만 배치
- 다른 그룹을 포함 시킬 수 없음
- 한 사용자가 여러 그룹에 배치 가능
✏️ IAM을 사용하는 이유
- AWS 계정을 사용하도록 권한 부여 및 허용하기 위해 사용자/그룹에게 IAM 정책 JSON 문서를 지정가능
- IAM 정책을 통해 사용자의 권한을 정의
- 서비스 비용 발생, 보안 문제 야기를 방지하기 위해
- 사용자에게 꼭 필요로 하는 것 이상의 권한을 주지 않기 위해
- IAM정책 JSON 문서 예제

✏️ IAM 사용자 및 그룹 실습
- IAM -> Access management -> Users -> Add User클릭
- 유저 이름 및 비밀번호 설정

- 그룹 생성 및 설정
2-1. 그룹 생성할 때 그룹에 연결할 정책 선택

2-2. 그룹 선택

2-3. 태그 설정(사용자의 접근을 추적, 조직, 제어할 수 있는 정보)

2-4. 설정한 정보 프리뷰 및 계정 생성

✏️ IAM 정책

- 그룹에 설정된 정책이 있으면 사용자 전체에게 권한을 얻고, 정책을 상속
- 인라인 정책을 통해 개인 사용자에게 정책을 적용 가능
- 여러 그룹에 속한 사용자는 모든 그룹의 정책을 상속
✏️ IAM 정책 구조와 정책 명명법

- Version : 정책 언어 버전
- Id : 정책을 식별하는 ID, 선택사항
- Statement : 문장들, 하나/여러개 일 수 있음
- Sid : 문장의 식별자, 선택사항
- Effect : 문장이 특정 API 접근 허용여부
- Principal : 특정 정책이 적용될 사용자, 계정, 역할로 구성
- Action : Effect에 기반해 허용 및 거부되는 API 호출 목록
- Resource : 적용될 Action의 리소스의 목록
- Condition : Statement가 언제 적용될지를 결정
✏️ IAM 보안 종류
- 비밀번호 정책 정의
- 비밀번호가 강력할수록 계정의 보안이 철저
- 다양한 옵션을 이용해 비밀번호 정책 생성 가능
- 비밀번호 최소 길이
- 특정 유형의 글자 사용 요구
- 비밀번호 변경 혀용여부 설정가능
- 동일한 비밀번호, 이전에 사용한 비밀번호 사용불가 기능 설정가능
- 위 4가지 설정을 통해 비밀번호를 이용한 치명적인 공격을 막는데 큰 도움이됨.
- 다요소 인증(MFA, Multi Factor Authentication)
- 사용자는 계정에 접근 권한이 있음
- 관리자는 구성 변경, 리소스 삭제 등 작업 가능
- 루트 계정과 IAM계정은 무슨일 이 있어도 반드시 보호
- 위 사항을 보호하기 위해서 MFA를 이용
✏️ IAM MFA
- IAM MFA란?
- 비밀번호와 보안 기기를 이용하여 인증을 진행
- 비밀번호가 해킹되어도 사용자 소유의 물리적 장치가 추가로 필요하여 보안에 좋음
- MFA 장치 종류
- 가상 MFA 장치
- Google Authenticator, Authy
- 원하는 수만큼 계정 및 사용자를 등록하여 사용 가능
- U2F 보안 키
- 다른 회사의 장치로 하나의 보안키에서 여러 루트 계정과 IAM 사용자를 지원하여 하나의 키로 충분
- 하드웨어 키 팝 MFA 장치
✏️ AWS 액세스 방법
- AWS 콘솔
- AWS CLI
- AWS 서비스의 공용 API로 직접 액세스 가능
- 리소스 관리하는 스크립트를 통해 일부 작업을 자동화 가능
- 오픈 소스
- 액세스 키로 보호
- AWS SDK
- 소프트웨어 개발 키트, 라이브러리의 집합
- AWS 서비스나 API를 통해 프로그래밍 가능
- 어플리케이션 코드 내에서 API를 호출할 때 사용
- 많은 언어 지원(Java, 파이썬 등 프로그래밍 언어, 모바일, IoT)
- 액세스 키로 보호
- 액세스 키란?
- AWS 콘솔에서 생성 가능하며 사용자가 자기 액세스 키를 직접 관리
- 액세스 키 ID는 유저이름, 액세스 키는 비밀번호
- CLI에 액세스 키를 적용하면 AWS API를 사용가능
- 절대로 공유하면 안됨.
✏️ IAM Roles

- AWS 서비스에 대한 권한을 부여할 때 사용
- AWS 서비스마다 권한을 부여 가능
- 서비스에 접근할 때 해당 룰을 체크
✏️ IAM 보안도구
- IAM 자격 증명 보고서
- 계정에 있는 사용자와 다양한 자격 증명의 상태 포함
- IAM 액세스 관리자
- 사용자에게 부여된 서비스의 권한과 서비스에 마지막으로 액세스한 시간을 통해 최소권한의 원칙을 지킬 수 있음
✏️ IAM 요약

- Users/Groups
- 실제 사용자와 IAM 사용자가 매핑
- 사용자를 그룹별로 분리
- 사용자나 그룹에 대한 권한 부여
- Policies
- Json형태의 문서로 사용자나 그룹이 할 수 있는 권한을 알려주는 문서
- Roles
- Security
- MFA와 강한 비밀번호 정책으로 안전하게 사용
- Access Keys
- CLI와 SDK를 사용하여 AWS에 접근할 시 액세스 키 이용
- Audit
- 자격 증명 보고서와 사용자의 최근 권한 사용 내용 확인
✏️ IAM 퀴즈








