상세 컨텐츠

본문 제목

[AHSS1기 2주차]IAM 보안 점검 및 보안 설정 가이드

카테고리 없음

by jongil 2023. 9. 4. 23:20

본문

들어가며 

본자료는 AWS 보안 점검 및 보안 설정 가이드의 내용을 기반으로  실습하였습니다.

https://rogue-gouda-f87.notion.site/AWS-de0b5749d03b464ea2e555cba3974d0b

 

또한 CIS Amazon Web Services Foundations Benchmark V2.0.0(23.6.28) 을 참조하였습니다.

 

root 계정의 Access key ID / Secret access key 삭제

 

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.취약점 조치 방법

- 생성된 액세스 키를 비활성화

 

- 생성된 액세스 키를 비활성

 

root 계정 사용 여부 확인

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 계정 사용 여부를 점검하여 의도하지 않은 사용을 탐지 

 

Access key 이용 현황 관리

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>

Access key 주기적 변경

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를 활용한 방법을 안내

 

AWS Secrets Manager 참조

 

AWS Secrets Manager란?(OAuth, SSO)

Overview AWS Secrets Manager에 대해서 공부해보려고 한다. AWS Secrets Manager란? AWS Secrets Manager는 AWS(Amazon Web Services)에서 제공하는 비밀 관리 서비스로, 자체 인프라 운영에 대한 선행 투자 및 지속적인 유

somaz.tistory.com

Secrets Manager를 사용하여 주기적으로 Access Key 교체 참조

 

Secrets Manager를 사용하여 주기적으로 Access Key 교체

안녕하세요 ^^ 오늘은 지난번 포스팅인 '자신의 패스워드 및 Access Key 교체' 포스팅의 조금 업그레이드 버전인, 지정한 날짜마다 주기적으로 Access Key를 사용자에 자동으로 생성해주고, 애플리케

junhyeong-jang.tistory.com

 

IAM 계정에 권한 직접 할당 여부 확인

1.관련 법령

-정리중

 

2.개요

- 권한 관리의 효율성과 편의를 위해 그룹에 권한을 할당하고, 권한이 필요한 IAM 계정을 해당 그룹에 연결 필요

 

3.취약점 판단 기준

- IAM 계정에 직접 권한을 부여한 경우 취약 

- 권한을 부여한 그룹에 IAM 계정을 연결시킨 경우 취약하지 않음

 

4.취약점 확인 방법 - (1) 관리 콘솔에서 확인

- 관리 콘솔에서 [IAM] 검색 → [사용자] 메뉴 클릭 → 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 계정 연결

 

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

 

IAM 계정 및 역할 관리 Life-Cycle 수립 및 이행

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 수립 필요