AWS Compliance Tool에 대해 알아보는 시간을 가져봅시다!
AWS Trusted Advisor는 아래 5가지 영역에 대해서 모범사례를 제공해줍니다
위험: EC2 인스턴스에 지원 종료에 도달한 SQL Server버전이 존재
경고: EC2 인스턴스에 12개월 후에 지원이 종료되는 SQL Server 버전이 존재
🛠️ 대안: SQL Server 업데이트, Amazon Aurora사용, 업데이트 할 수 없는 경우 Windows Server용 EMP(지원종료 마이그레이션 프로그램 고려)
위험: EC2 인스턴스에 지원이 종료된 Windows Server 버전(Windows Server 2003, 2003 R2, 2008 및 2008 R2)가 존재
경고: EC2 인스턴스에 18개월 이내에 지원이 종료되는 Windows Server 버전 존재(Windows Server 2012 및 2012 R2)
🛠️ 대안: Window Server 최신 업데이트, 업데이트 할 수 없는 경우 Windows Server용 EMP(지원종료 마이그레이션 프로그램 고려)
"Public으로 공개된 상태의" EBS 스냅샷이 있다
🛠️ 대안: 의도적으로 Public하게 공개한 것이 아니라면, 특정 AWS 계정의 ID로 제한하여 스냅샷의 권한을 조정한다
"Public으로 공개된 상태의" RDS 스냅샷이 있다
🛠️ 대안: 의도적으로 Public하게 공개한 것이 아니라면, 특정 AWS 계정의 ID로 제한하여 스냅샷의 권한을 조정한다
위험: Any 정책의 RDS SG가 있다
경고: "주요 Port가 Any로 열린 EC2 SG를 참조 or Single IP로 제한X인" RDS SG가 있다
🛠️ 대안: RDS에 매핑된 Security Group에 특정 IP로 접근을 제한하는 룰을 설정한다
MX 리소스 레코드에 "SPF 설정을 포함한 TXT 리소스 레코드"가 등록되어 있지 않다
🛠️ 대안: 해당 레코드를 등록한다
위험: "익명에게-쓰기 권한이 부여된" S3 버킷이 있다
경고: "익명 사용자에게 읽기/리스팅 권한이 부여된" S3 버킷이 있다
🛠️ 대안: open access 설정을 의도한 것이 아니라면 특정 사용자만 접근할 수 있도록 권한 정책을 조정한다
위험: 해당 Region에 Cloudtrail 로깅 설정이 되어있지 않다
경고: 특정 Cloudtrail log를 가져오는데 실패했다
🛠️ 대안: Cloudtrail을 활성화하고, 지정한 S3 Bucket에 로깅 관련 권한이 부여되어 있는지 확인한다
위험: 사용되지 않는 런타임에서 함수가 실행중
경고: 120이내에 중단될 런타임에서 함수가 실행중
🛠️ 대안: 더 이상 사용하지 않는 함수 버전 삭제
AWS Well-Architected의 보안 원칙에서 하나 이상의 위험 발생
🛠️ 대안: 위험 요소 대응
위험: 매핑된 인증서 만료
경고: "부적합(SHA-1/CNAME)하거나 7일내 만료 예정인" Custom SSL 인증서가 CF에 매핑
🛠️ 대안: 만료된 인증서를 갱신하거나 SHA-256 해시 알고리즘 사용 및 Alternative Domain에 매칭되는 인증서를 사용
위험: 오리진 인증서 만료
경고: "부적합(SHA-1/CNAME)하거나 7일내 만료 예정인" 오리진 SSL 인증서가 있다
🛠️ 대안: 만료된 인증서를 갱신하거나 환경에 적합한 인증서를 Cloudfront 원본(Origin)에 등록
위험: 취약한 Cipher/Protocol 적용 ELB
경고: "앞단에 암호화 Protocol 미사용 or 부적절한 Cipher/Protocol을 적용한" ELB
🛠️ 대안: Front-End에는 HTTPS나 SSL 프로토콜을 설정하고 최신(또는 적합한 수준의) SSL Security Policy를 사용한다
위험: ELB에 설정된 SG 객체가 없다
경고: "Listener 설정에 없는 Port로 Inbound Access가 설정된" ELB SG가 있다
🛠️ 대안: ELB의 Listener 설정에 존재하는 Port 정보를 기반으로 Security Group 룰을 설정한다
인터넷 상에(ex: Github) 해당 계정 內 객체의 Access Key쌍이 노출되었다(또는 노출된 정황이 있다)
🛠️ 대안: 해당 키쌍을 즉시 삭제하고, 해당 키쌍을 통해 계정내에 오용된 리소스가 없는지 확인한다
위험: "~ 2년 이상인" 키쌍이 있다
경고: "교체(Rotation) 시점이 최근 90일 이상 2년 미만인" Access Key쌍이 있다
🛠️ 대안: 해당 키쌍을 주기적으로 교체(Rotation)한다
위험: 암호 정책이 비활성화 상태다
경고: IAM 객체의 암호 정책(암호 최소길이 등)이 부분적으로 설정되어 있다
🛠️ 대안: 필요한 항목을 검토한 후 적절한 암호 정책을 설정한다
해당 계정 內에 생성된 IAM User 객체가 하나도 없다
🛠️ 대안: Root Account만 사용하지 말고, 복수의 IAM User 객체를 만들어 사용자별로 권한을 적절히 제어한다
해당 계정의 Root Account에 MFA가 설정되어 있지 않다
🛠️ 대안: Root Account에 MFA를 설정한다
위험: 20/21/1433/1434/3306/3389/4333/5432/5500 Port가 Any로 열려있다
경고: "일부 Port가 Any로 열린" SG가 있다
🛠️ 대안: Source IP가 Any로 설정된 룰을 삭제하거나 특정 IP(또는 Range)로 제한하는 정책을 설정한다
"22/80/443번 외 Port를 대상으로 Source IP가 Any인 룰이 포함된" Security Group이 있다
🛠️ 대안: Source IP가 Any로 설정된 룰을 삭제하거나 특정 IP(또는 Range)로 제한하는 정책을 설정한다