본자료는 AWS 보안 점검 및 보안 설정 가이드의 내용을 기반으로 실습하였습니다.
https://rogue-gouda-f87.notion.site/AWS-de0b5749d03b464ea2e555cba3974d0b
또한 CIS Amazon Web Services Foundations Benchmark V2.0.0(23.6.28) 을 참조하였습니다.
1. 관련 법령
-정리중
2. 개요
- root 계정은 AWS 리소스에 대한 모든 권한을 보유한 계정이지만, IAM 등을 통한 권한 제어가 불가능
- 따라서 root 계정에 Access key ID / Secret access key를 발급해 사용하는 경우 과도한 권한으로 인한 휴먼 에러 또는 secret 유출에 대한 리스크가 존재하여 적절한 조치 필요
- [참고] 해당 설정을 적용하지 않아 사고가 발생한 사례
개인정보위, 개인정보 유출 16개 사업자에 과징금·과태료 처분
3.취약점 판단 기준
- root 계정에 Access key ID / Secret access key를 발급한 경우 취약
- root 계정에 Access key ID / Secret access key를 발급하지 않은 경우 취약하지 않음
4.취약점 확인 방법 - (1) 관리 콘솔에서 확인
- root 계정으로 관리 콘솔 로그인 후 오른쪽 상단의 계정명 클릭
- [보안 자격 증명] 클릭
- [액세스 키] 탭에서 Access key ID / Secret access key 발급 여부 확인
- 취약점 확인 방법 - (2) AWS CLI에서 확인
aws iam get-account-summary | grep "AccountAccessKeysPresent"
AccountAccessKeysPresent 0 여부 확인
5.취약점 조치 방법
- 생성된 액세스 키를 비활성화
- 생성된 액세스 키를 비활성
1.관련 법령
- 정리중
2.개요
- root 계정은 AWS 리소스에 대한 모든 권한을 보유한 계정이지만 권한 제어가 불가능하기 때문에 명확한 목적 이외에는 사용 제한 필요
3.취약점 판단 기준
- root 계정 사용 이력이 존재하고, 사용에 따른 목적이 불분명한 경우 취약
- root 계정 사용 이력이 존재하지 않거나, 사용에 따른 목적을 증명할 수 있는 경우 취약하지 않음
4.취약점 확인 방법 - (1) 관리 콘솔에서 확인
- 관리 콘솔에서 [IAM] 검색 → [자격 증명 보고서] 메뉴 클릭 → [보고서 다운로드] 클릭
- password_last_used / access_key_1_active / access_key_1_last_used_date / access_key_2_active / access_key_2_last_used_date 컬럼을 통해 root 계정 사용 기록 확인
5.취약점 확인 방법 -(2)AWS CLI에서 확인
- IAM 권한을 보유한 계정의 Access key를 활용해 AWS CLI에서 Command 실행
aws iam generate-credential-report
aws iam get-credential-report --query 'Content' --output text | base64 -d | cut -d, -f1,5,9,11,14,16 | grep -B1 '<root_account>
6.취약점조치방법
- root 계정 사용이 필요한 경우를 내부적으로 정의하여 정책을 수립하고 주기적으로 root 계정 사용 여부를 점검하여 의도하지 않은 사용을 탐지
1. 관련 법령
- 정리중
2.개요
- IAM 계정에 발급한 Access key의 이용 여부를 주기적으로 점검하여 일정 기간 이상 사용하지 않은 Access key 삭제 필요
3.취약점 판단 기준
- 기적으로 Access key 이용 현황을 점검하여 일정 기간 이상 사용하지 않은 Access key를 삭제하지 않는 경우 취약
- 주기적으로 Access key 이용 현황을 점검하여 일정 기간 이상 사용하지 않은 Access key를 삭제하는 경우 취약하지 않음
4.취약한 확인 방법- (1) 관리 콘솔에서 확인
- 관리 콘솔에서 [IAM] 검색 → [사용자] 메뉴 클릭
- 마지막으로 사용한 액세스 키]가 내부적으로 정의한 미사용 기간을 초과하는지 여부 확인
4.취약점 확인 방법- (2) AWS CLI에서 확인
- IAM 권한을 보유한 계정의 Access key를 활용해 AWS CLI에서 Command 실행
aws iam get-credential-report --query 'Content' --output text | base64 -d | cut -d, -f1,9,10,11,14,15,16
5.취약점 조치 방법- (1) 관리 콘솔에서 조치
- [사용자] → IAM 계정 클릭 → [보안 자격 증명] 탭 → [비활성화] 클릭
-비활성화 확인
5.취약점 조치방법 - (2) AWS CLI에서 조치
aws iam list-access-keys --user-name <iam_account>
aws iam delete-access-key --access-key-id <access_key_id> --user-name <iam_account>
1.관련법령
- 전자금융감독규정 제13호 제1항 제1호
- 전자금융감독규정 제32조 제2호 가목
- 개인정보의 기술적·관리적 보호조치 기준 제4조 제8항 제3호
2.개요
- AWS 리소스 핸들링을 위해 IAM 계정에 Access key(Access key ID/Secret access key)를 발급한 경우 주기적으로 변경 필요
3.취약점 판단 기준
- Access key 변경 주기를 지정하지 않고, 주기적으로 Access key를 변경하지 않은 경우 취약
- Access key 변경 주기를 지정하고, 주기적으로 Access key를 변경한 경우 취약하지 않음
4.취약점 확인 방법 - (1) 관리 콘솔에서 확인
- 관리 콘솔에서 [IAM] 검색 → [사용자] 메뉴 클릭
- [활성 키 수명(Active key age)]이 내부 정책에서 정의한 Access key 변경 주기를 초과하는지 여부 확인
4.취약한 확인 방법 - (2) AWS CLI에서 확인
- IAM 권한을 보유한 계정의 Access key를 활용해 AWS CLI에서 Command(1) 실행
aws iam generate-credential-report
aws iam get-credential-report --query 'Content' --output text | base64 -d | cut -d, -f1,9,10,11,14,15,16
- access_key_active, access_key_last_lotated 컬럼 값을 확인하여 주기적 변경 여부 확인
5.취약점 조치 방법
- [알림] 다양한 방법이 있을 수 있으나 본 항목에서는 Secret Manager와 Lambda를 활용한 방법을 안내
Secrets Manager를 사용하여 주기적으로 Access Key 교체 참조
1.관련 법령
-정리중
2.개요
- 권한 관리의 효율성과 편의를 위해 그룹에 권한을 할당하고, 권한이 필요한 IAM 계정을 해당 그룹에 연결 필요
3.취약점 판단 기준
- IAM 계정에 직접 권한을 부여한 경우 취약
- 권한을 부여한 그룹에 IAM 계정을 연결시킨 경우 취약하지 않음
4.취약점 확인 방법 - (1) 관리 콘솔에서 확인
- 관리 콘솔에서 [IAM] 검색 → [사용자] 메뉴 클릭 → IAM 계정 클릭 → [권한] 탭
- 권한 직접 할당 여부 확인
4.취약점 확인방법 - (2) AWS CLI 에서 확인
- IAM 권한을 보유한 계정의 Access key를 활용해 AWS CLI에서 Command 실행
aws iam list-users --query 'Users[*].UserName' --output text
aws iam list-attached-user-policies --user-name <iam_user>
aws iam list-user-policies --user-name <iam_user>
5.조치방법
- [사용자 그룹] 메뉴 → [그룹 생성] 클릭
-권한 할당 및 IAM 계정 연결
1.관련 법령
- 정리중
2.개요
- 관리 콘솔에 접근 가능한 IAM 계정의 비밀번호 복잡도 및 변경 주기 정책을 설정하여 brute force 등 계정 탈취 공격에
대한 보호 필요
- [알림] 해당 설정을 적용하지 않아 사고가 발생한 사례
"관리자 비번 알아내 클라우드 접근…보안사고 대책 시급"
3.취약점 판단 기준
-영문ㆍ숫자ㆍ특수문자 중 2종류를 조합하여 10자리 이상 또는 3종류를 조합하여 8자리 이상의 길이로 비밀번호를 구성
하지 않거나, 분기별 1회 이상 비밀번호를 변경하지 않는 경우 취약
- 영문ㆍ숫자ㆍ특수문자 중 2종류를 조합하여 10자리 이상 또는 3종류를 조합하여 8자리 이상의 길이로 비밀번호를 구성 하고, 분기별 1회 이상 비밀번호를 변경하는 경우 취약하지 않음
4.취약점 확인 방법 - (1) 관리 콘솔에서 확인
- IAM 서비스 권한을 보유한 IAM 계정으로 로그인
- 서비스에서 [IAM] 검색→ [계정 설정] 메뉴 클릭
- [비밀번호 정책] 항목에서 비밀번호 복잡도 적용 여부 확인
4.취약점 확인 방법 - (2) AWS CLI에서 확인
- IAM 권한을 보유한 계정의 Access key를 활용해 AWS CLI에서 Command 실행
aws iam get-account-password-policy
5.취약점 조치 방법 - (1) 관리 콘솔에서 조치
- IAM [암호 정책] 항목에서 [암호 정책 변경] 클릭
-암호 정책 설정
5.취약점 조치 방법 - (1) 관리 콘솔에서 조치
-AWS CLI에서 Command(2) 실행
aws iam update-account-password-policy --minimum-password-length 8 --require-symbols --require-numbers --require-uppercase-characters --require-lowercase-characters --max-password-age 90 --allow-users-to-change-password
1.관련법령
- 정리중
2.개요
- IAM 계정을 관리하는 방법은 수동으로 관리하는 방식부터 오픈소스ㆍ3rd party 솔루션을 활용하는 방식까지 다양한 방법이 존재하지만, 목적론적으로는 IAM 계정 및 역할의 신청ㆍ할당ㆍ관리ㆍ회수에 대한 Life-Cycle 수립을 지향 해야함
- Life-Cycle 수립 시 AWS 도큐먼트와 다양한 오픈소스를 참고하여 구성 필요
3.취약점 판단 기준
- IAM 계정 관리 Life-Cycle을 수립하지 않은 경우 취약
- IAM 계정 관리 Life-Cycle을 수립한 경우 취약하지 않음
4. 취약점 확인 방법
- 담당자 인터뷰 및 IAM 계정 현황 파악 후 적절한 IAM 계정 관리 Life-Cycle 수립 여부 확인
* 권한(역할) 신청 절차를 수립하고 관련 이력을 보존해야함
* 담당자 역할별로 IAM 계정을 생성하고 필요 최소한의 권한만을 부여해야함
* IAM 계정에 직접적인 권한 부여를 지양하고, 그룹에 권한 부여 후 IAM 유저를 연결해야 함
* 정기적으로 IAM 권한 부여 현황을 파악하고 미사용ㆍ과도하게 부여된 권한을 수정해야함(IAM의 [자격 증명 보고서] 및 [액세스 관리자] 등 활용)
5.취약점 조치 방법
- 담당자 인터뷰 및 서비스 운영 현황 분석을 통해 최대한 적합한 IAM 계정 관리 Life-Cycle 수립 필요