The Security Pillar (보안성 원칙)
AWS Certified Solutions Architect Study Guide - Associate (SAA-C02) EXAM 요약
개요
데이터를 효과적으로 보호하기 위해 다음 세 가지 요소를 준수해야 한다.
- 기밀성 Confidentiality
- 특정 데이터에 대한 권한이 있는 사람, 시스템만이 접근이 가능해야 한다.
- 데이터 암호화
- Access Control Lists
- 무결성 Integrity
- 데이터는 악의적이든 우연히든 변조되어서는 안된다.
- 해싱 및 로그 관리
- 가용성 Availability
- 데이터가 필요로 할 때 접근이 가능해야 한다.
- DDoS 공격으로 접속이 안되는 경우 가용성이 부족한 것
신분 및 접근 권한 관리
AWS에서 보안은 Identity and Access Management (IAM) 에서 제공하는 신분 기준으로 이루어진다.
AWS의 자격인증 (credential)은 각종 리소스에 접근할 수 있는 핵심 정보이다.
- 이들 주요 정보의 노출 혹은 악의적인 이용을 방지하기
- 주어진 임무 수행에 필요한 수준의 권한만 부여하기
AWS 자격인증 정보 보호
리소스에 접근하려는 사람은 누구나 자격인증 정보를 이용해 권한을 확인받는다.
principal 혹은 신분 (identity) 라고 한다.
AWS의 권한 개체는 다음 세 가지이다.
- 루트 유저 root user
- IAM 유저 user
- IAM 롤 role
IAM 유저의 경우 패스워드 정책을 강화해 보안 수준을 높일 수 있다.
또한, 접근을 AWS Management Console 에서 허용할지, 프로그래밍 방식에서 허용할지 설정할 수 있다.
세분화된 권한부여
최소 권한부여 원칙 (principle of least privilege) 가 정보보안의 기본 개념이다.
IAM principals 에 추가되는 정책에는 여러 permission 이 포함되어 있을 수 있으며, permission 의 구성요소는 다음과 같다.
- Effect
- 리소스에 대한 액션의 허용 여부
- allow / deny
- Action (Operation)
- 해당 리소스에 대한 작업 가능 요소
- EC2의 경우 RunInstances 등
- Resource
- 액션을 실행 할 리소스 스코프
- AMI ID 등
- Condition
- 퍼미션 부여를 위한 조건
- 특정 IP로 접속 혹은 MFA 요구 등
AWS 관리형 정책
AWS Managed Policies 는 전형적인 인프라 및 관리자의 역할이 명시된 사전정의된 정책이다.
고객 관리형 정책
customer-managed policy 는 AWS 계정의 권한 개체에 추가할 수 있는 개별적이며 독립적인 정책
인라인 정책
inline policy 는 특정 권한 개체의 일부로만 존재할 수 있고, 독립적으로 존재할 수 없다.
특정 정책응을 매우 구체적인 대상에게 확실히 적용해야 할 때 유용하다.
권한의 경계
permissions boundaries 는 IAM 권한 개체에게 부여되는 최대 권한의 한계를 의미한다.
롤
role은 패스워드나 액세스 키를 사용하지 않는 IAM 권한 개체이다.
EC2 인스턴스에서 실행되는 어플리케이션에게 액세스 키 없이 특정 AWS 리소스에 대한 접근 권한을 부여할 때 편리하다.
인스턴스 프로필
롤은 퍼미션 정책 외에도 트러스트 정책을 통해 어떤 AWS 리소스가 해당 롤을 지니고 있는지 설명한다.
인스턴스와 인스턴스 프로필이 연계되면 해당 인스턴스는 Security Token Service 를 통해 6시간마다 임시 접근 권한을 가지게 된다.
롤 부여하기
롤을 생성한 뒤 어떤 IAM 유저에게든 롤을 부여할 수 있다.
롤을 부여한 경우 해당 롤에만 접근 권한을 제공할 수 있다.
모든 AWS 서비스에 접근 권한이 있는 IAM 유저가 EC2 read-only 롤을 부여받은 경우 EC2를 제외한 서비스에 접근할 수 없다.
서비스 레벨 보안 강화
IAM의 신분 기반 정책 (identy-based policies) 외에도, 일부 AWS 서비스에는 리소스 기반 정책 (resource-based policies)을 정의할 수 있다.
KMS (Key Management Service) 의 경우 사용자로 하여금 키 관리자 및 키 사용자를 지정하기 위한 key policy를 정의하도록 한다.
SNS와 Simple Queue Service (SQS) 의 경우에도 접근 정책을 통해 제어가 가능하다.
탐지 제어
CloudTrail
AWS 계정에서의 각종 활동 로그를 기록
- 관리 이벤트와 데이터 이벤트
- read-only 이벤트와 write-only 이벤트
- 모든 리소스 또는 특정 리소스만 기록
- 모든 리전 또는 특정 리전만 기록
- 글로벌 서비스 기록 여부
CloudTrail은 S3에 로그를 기록하므로 로그의 열람 및 삭제 제어를 위해 버킷 정책을 정의할 필요가 있다.
CloudWatch Logs
다수의 소스로부터 유입되는 로그를 수집해 저장 및 검색이 용이하도록 한다.
- CloudTrail Logs
- CloudTrail 로그의 검색 및 확인의 편의성을 위해 CloudWatch Logs에 수집한다.
- VPC Flow Logs
- VPC로 유입되거나 VPC에서 유출되는 트래픽 정보가 수집된다.
- RDS Logs
- 데이터베이스 엔진의 로그를 수집한다
- Route53 DNS Queries
- Route53 DNS 쿼리 로그를 기록한다.
- Lambda
- Lambda 코드에 로그 명령을 추가할 수 있다.
Athena로 로그 검색하기
Athena는 SQL을 통해 S3에 저장된 로그 데이터를 검색할 수 있도록 해준다.
SQL을 사용할 수 있고, 다양한 데이터 포맷을 지원한다.
- CSV / TSV
- JSON / Apache ORC / Parquet
AWS Config를 이용한 리소스 환경설정 검사
리소스의 환경 설정 상태 모니터링은 AWS Config를 통해 달성할 수 있다.
바람직한 환경설정 상태의 정의를 위해 AWS Config Rules 정의가 가능하다.
환경설정의 이전 상태와 히스토리를 보고 싶은 경우 환경설정 타임라인 을 사용해서 확인할 수 있다.
Amazon GuardDuty
Amazon GuardDuty는 CloudWatch Logs 등의 로그를 분석해 악성 IP주소 및 도메인 네임, 그리고 악의적인 행동을 탐색한다.
위협 탐지는 다음 종류로 분류된다.
- Backdoor : 악성 코드에 감염되어 스팸 발송 및 DDoS 자원으로 활용되고 있을 때
- Behavior : 보통 사용하지 않는 프로토콜이나 포트로 혹은 대량의 트래픽을 전송할 때
- Cryptocurrency : 코인 노드로 활용되어 전송,수신,채굴 작업에 동원되고 있음
- Pentest : 모의 해킹 또는 침투 테스트를 위한 API 호출을 생성하고 있음
- Persistence : 작업 이력이 존재하지 않는 IAM 유저가 환경설정 등을 수정했음을 의미
- Policy : 루트 유저 권한이 사용되거나 S3의 퍼블릭 액세스 차단 기능이 해제됨
- Recon : 정찰 공격, 침투 시도가 진행줌
- ResourceConsumption : 작업 이력이 존재하지 않는 IAM 유저가 EC2 인스턴스 등의 리소스를 생성
- Stealth : 패스워드 정책이 약화, CloudTrail 비활성화, 로그 기록 삭제 등
- Trojan : Trojan 악성코드 설치 가능성, 데이터 전송 및 탈취 정보 저장
- UnauthorizedAccess : 리소스에 대한 비인가 접근 시도, SSH와 RDP에 대한 침입 시도
Amazon Inspector
EC2 인스턴스에 대한 침해 행위를 탐지하는 에이전트 기반 서비스
인스턴스 자체의 네트워크, 파일시스템, 프로세스 활동의 적절성을 분석한다.
다음 다섯 룰 패키지를 제공한다.
- 보편적인 보안 위협 및 기밀 노출 : Common Vulnerabilities and Exposures
- Linux 및 Windows 등, 상업용 및 오픈소스 기반 공개 배포 소프트웨어에서 흔히 발생하는 보안 위협
- 인터넷 보안 벤치마크 센터 : Center for Internet Security Benchmarks
- Linux 및 Windows 운영체제의 환경 설정 베스트 프랙티스를 반영
- 보안성 베스트 프랙티스 : Security Best Practices
- 위 인터넷 보안 벤치마크 센터 룰의 하위 규칙 (SSH 루트접근, 패스워드 보안정책 등)
- Linux 인스턴스 사용과 관련된 간략한 규칙 제공
- 런타임 동작 분석 : Runtime Behavior Analysis
- 안전하지 않은 프로토콜 사용
- 미사용 TCP 포트 개방 등
- Linux 관련 부적절한 파일 접근 권한 및 소유권 관리
- 네트워크 연결의 적절성 : Network Reachability
- VPC 내 리소스에 대한 보안상 부적절한 네트워크 설정 규칙
- High, Medium, Low, Informal 단계로 주의 목록을 생성
Amazon Detective
CloudWatch Logs 등의 로그를 분석하여 정보를 수집해 리소스와 관련된 의심스럽거나 흥미로운 행동을 포착한다
그래프 데이터베이스를 사용하여, 이벤트 간의 관련성이나 영향을 파악할 수 있다.
Security Hub
사용하는 전체 AWS 환경의 보안 상태를 한자리에서 보여주는 서비스이다.
보안 상태와 AWS 보안 베스트 프랙티스 및 Payment Card Industry Data Security Standard 등을 비교할 수 있게 해준다.
네트워크 경계 보호하기
다수의 AWS 서비스는 인터넷으로 접속할 수 있는 엔드포인트를 제공하며, 이 엔드포인트의 보안 책임은 AWS에게 있다.
따라서, 사용자에게는 VPC에 배포한 EC2 인스턴스, RDS 데이터베이스, ELB 등에 대한 보안을 관리하게 된다.
NACL
VPC에서 리소스는 서브넷을 통해 제공되며, NACL은 서브넷으로 유입 또는 유출되는 트래픽을 정의한다.
연결 상태를 추적하지 않는, stateless 속성을 가진다.
전통적 Access Control List의 기능
보안 그룹
EC2 인스턴스와 ELB 리스너 등 개별 리소스에 대한 유입 또는 유출 트래픽을 정의한다.
연결 상태를 추적하는 stateful 속성을 가진다.
방화벽과 같은 기능
AWS WAF
Web Application Firewall은 ALB 또는 CloudFront에 대한 HTTP, HTTPS 요청을 모니터링한다.
cross-site scripting 공격, SQL injection 공격, 장문의 쿼리 문자열 공격 등 어플리케이션 트래픽에 포함된 악의적인 징후를 감지한다.
HTTP flood 공격 등을 일으키는 요청을 막을 수 있고, Lambda 함수를 통해 자동적으로 차단 리스트 갱신 방식도 가능하다.
AWS Shield
DDoS 공격으로부터 어플리케이션을 보호한다.
- AWS Shield Standard
- 모든 고객에게 자동으로 제공되는 기본 서비스이다
- SYN flood, UDP reflection 등 레이어 3, 레이어 4 타입의 DDoS 공격을 방어한다.
- AWS Shield Advanced
- 대량의 HTTP GET 또는 POST 를 통한 HTTP flood 공격 등 레이어 7 공격을 방어한다.
- 해당 인스턴스가 EIP를 지니고 있어야 한다.
데이터 암호화
정확한 키를 이용한 복호화 없이는 데이터를 읽을 수 없도록 하는, 기밀성 보장의 방법
다음 두 종류로 데이터가 분류된다.
- 저장 중인 데이터 : data at rest
- S3 이나 EBS 볼륨 등 저장 장치에 존재하는 데이터
- 이동 중인 데이터 : data at transit
- VPC, 인터넷 등 네트워크를 따라 이동중인 데이터
저장 중인 데이터
AWS에서 데이터는 S3, EBS, EFS, RDS 중 하나에 대부분 속해 있다.
이들 서비스는 암호화 키 관리 서비스인 KMS 와 통합적인 사용이 가능하다.
고객이 관리하거나 AWS 가 관리하는 CMK 중 하나를 키로 적용할 수 있다.
- 고객 관리 CMK
- 키 정책으로 어떤 유저가 키를 이용할 수 있는지 설정
- 키 순회, 비활성화, 삭제 등의 작업 가능 : 최대한의 통제권
- AWS 관리 CMK
- 연 1회 자동으로 순회되는 키
- 직접 키를 순회, 비활성화, 삭제할 필요 없음
S3 데이터 암호화
- SSE-S3 : 서버 측 암호화, S3 관리형 키
- SSE-KMS : 서버 측 암호화, KMS 관리형 키
- SSE-C : 서버 측 암호화, 고객 제공 키
- CSE : 클라이언트 측 암호화
버킷이 아닌 객체 단위로 적용되며, 버킷 레벨에 적용할 경우 새 객체들부터 적용된다.
EBS 볼륨 데이터 암호화
KMS 관리형 키를 이용해 EBS 볼륨의 암호화가 가능하다.
단, 비암호화 스냅샷 또는 비암호화 AMI 생성 볼륨은 바로 암호화가 불가능하다.
비암호화 볼륨으로 스냅샷 생성 후에 해당 스냅샷을 암호화해야 한다.
EFS 암호화
KMS 고객 마스터 키를 사용하여 EFS 파일 암호화가 가능하다.
파일 및 폴더이름과 같은 메타데이터 암호화에는 EFS 관리형 키를 사용한다.
이동중인 데이터
이동 중인 데이터의 암호화에는 TLS 인증서가 사용된다.
TLS 인증서는 ALB 또는 CloudFront 배포에 설치가 가능하다.
Macie
S3버킷에 저장된 저장된 민감한 데이터를 자동으로 분류하고 데이터의 위치를 알려준다.
머신러닝을 이용해 클라우드 보안 수준을 높인다.
- 거래 기밀, 개인 신상 정보 등 민감한 데이터 파악
- 접근 권한 설정 수준이 지나치게 낮은 S3 버킷 경고
- 버킷 정책 ACL 변경 이력 추적
- 커스텀 데이터 식별자 기반의 다른 데이터 타입 분류
코멘트
AWS가 이젠 보안, 방어와 관련된 메이저 영어 단어는 다 쓰지 않았으려나 싶을 정도로, 매우 다양한 종류의 서비스가 있다.
이들 간 차이점을 분명히 알아 두어야 보안 쪽 문제들에서 전반적으로 헷갈리지 않을 것이다.
'공부한 이야기 > 클라우드' 카테고리의 다른 글
AWS SAA - Marked Questions I (0) | 2022.07.31 |
---|---|
AWS SAA - The Operational Excellence Pillar (운영 우수성 원칙) (0) | 2022.07.31 |
AWS SAA - The Cost Optimization Pillar (비용 최적화 원칙) (0) | 2022.07.30 |
AWS SAA - The Performance Efficiency Pillar (성능 효율성 원칙) (0) | 2022.07.28 |
AWS SAA - The Reliability Pillar (안정성 원칙) (0) | 2022.07.27 |