AWS Solutions Architect — Associate certificate Study — 공식 문서 정리 Part 3

SangHyo Han
11 min readAug 22, 2019

--

비공식 AWS Solutions Architect — Associate(2018년 2월 출시) 수험 가이드 (bit.ly/saaguide)를 기반으로 공부하고 있습니다.

이번 Part 는 영역 3 : 안전한 애플리케이션 및 아키텍쳐 나머지 부분을 정리할 예정입니다.

2019/11/11 업데이트

[영역 3 : 안전한 애플리케이션 및 아키텍쳐]

AWS IAM 모범사례

AWS 계정 루트 사용자 액세스 키 잠금

  • AWS 계정 루트 사용자 액세스 키는 사용하면 안된다.
  • 만약 그 계정의 루트 액세스 키가 탈취되면 계정과 연관된 모든 정보, 신용카드, 결제 정보 등 대부분의 정보가 털리기 때문에 보안을 위해 절때 루트 액세스키를 만들면 안된다.

개별 IAM 사용자 만들기

  • 루트 자격 증명을 사용하여 액세스하는 것은 안되며, 관리자 IAM을 생성하여 액세스해야 하는 계정에 별도의 사용자 계정을 만드는 것이 권장된다.
  • 또한 그룹을 사용하여 사용자 그룹에 대한 정의를 만들어 그룹 권한을 설정하는 것이 관리하기 더 편하다.
  • IAM 정책을 개인이나 그룹에 적용할 때는 작업 수행에 필요한 최소한의 권한을 주어 다른 서비스 접근을 못하게 한다.

액세스 레벨을 이용한 IAM 권한 검토

  • AWS은 작업 내용에 따라 각 서비스 작업을 다섯 개의 액세스 레벨, 즉 List, Read, Write, Permissions management, Tagging 중 하나로 분류한다. 이러한 액세스 레벨을 사용하여 어떤 작업을 정책에 포함할지 결정할 수 있다

권한 있는 사용자에 대해 MFA 활성화

  • 보안을 강화하기 위해 중요한 리소스 또는 API 작업에 대해 액세스 권한이 부여된 IAM 사용자에 대해 멀티 팩터 인증(MFA)을 적용
  • 가상 핸드폰이나 실제 디바이스가 코드 생성하면 그 번호를 입력해야 로그인할 수 있다.

AWS 계정의 활동 모니터링

  • AWS의 로깅 기능을 사용하여 사용자가 계정에서 수행한 작업과 사용한 리소스를 확인하여 보안 수준을 올린다.
  • 로그 파일에는 작업 시간 및 날짜, 작업의 소스 IP, 부족한 권한으로 인해 실패한 작업 등이 나와 있다. 이러한 기록을 통해 비 정상적인 접근이 있는지 확인 가능하다.

보안 서비스 - Amazon Virtual Private Cloud(VPC)

Amazon VPC 개념

  • Virtual Private Cloud(VPC)는 사용자의 AWS 계정 전용 가상 네트워크.
  • VPC는 AWS 클라우드에서 다른 가상 네트워크와 논리적으로 분리되어 있으며, Amazon EC2 인스턴스와 같은 AWS 리소스를 VPC에서 실행할 수 있다.
  • 서브넷: VPC의 IP 주소 범위, 지정된 서브넷으로 AWS 리소스를 시작할 수 있다. 인터넷에 연결되어야 하는 리소스에는 퍼블릭 서브넷을, 인터넷에 연결되지 않는 리소스에는 프라이빗 서브넷을 사용한다.

인터넷 액세스

  • 기본적으로 기본이 아닌 서브넷에서 시작한 인스턴스는 프라이빗 IPv4 주소가 있으며, 시작 시 특별히 지정하지 않는 한 퍼블릭 IPv4 주소는 없다.이러한 인스턴스는 서로 통신할 수는 있지만 인터넷에 액세스할 수는 없다.
  • 기본이 아닌 서브넷에서 시작한 인스턴스에 대해 해당 VPC에 인터넷 게이트웨이를 추가하고(해당 VPC가 기본 VPC가 아닐 경우) 인스턴스에 탄력적 IP 주소를 연결하여 인터넷 액세스를 가능하게 할 수 있다.
  • 원할 경우 IPsec AWS Site-to-Site VPN 연결을 사용하여 VPC를 회사의 데이터 센터에 연결함으로써 회사 데이터 센터를 AWS 클라우드로 확장할 수 있다.
  • Site-to-Site VPN 연결은 VPC에 추가된 가상 프라이빗 게이트웨이와, 데이터 센터에 위치하는 고객 게이트웨이로 구성된다.

‘핵심’ Amazon EC2 및 S3 보안 기능 집합

Amazon S3 리소스에 대한 액세스 권한 관리

  • 기본적으로 버킷, 객체 및 관련 하위 리소스를 비롯한 모든 amazon s3 리소스는 비공개이다. 즉, 리소스를 만든 AWS 계정인 리소스 소유자만 해당 리소스에 액세스 가능하다.
  • 리소스 기반 정책, 사용자 정책 또는 이러한 정책의 조합을 사용하도록 선택하여 Amazon S3 리소스에 대한 권한을 관리할 수 있다.
  • ACL: 각 버킷과 객체마다 연결된 ACL이 존재, ACL로 다른 AWS 계정에 기본적인 읽기/쓰기 권한을 부여한다.
ACL 예시
  • 버켓 정책 : 본인의 버킷에 한해 다른 AWS 계정이나 IAM 사용자에게 버킷과 버킷에 포함된 객체에 대한 권한을 부여하는 버킷 정책을 추가할 수 있다.
  • 버킷 정책은 ACL 기반 액세스 정책을 보완하며 대부분의 경우 액세스 정책을 대신한다.
버켓 정책 예시
  • 사용자 정책: IAM로 Amazon S3 리소스에 대한 액세스를 관리할 수 있다.
  • 내 계정으로 IAM 사용자, 그룹, 역할을 만들고 액세스 정책을 연결하면 Amazon S3 등 AWS 리소스에 액세스 가능하다.
  • 및에 예시로 든 정책은 연결된 사용자가 버킷과 버킷에 포함된 객체에 대해 6개의 Amazon S3 작업을 수행할 수 있도록 허용해 준다. 이 정책을 특정 IAM 사용자, 그룹 및 역할과 연결할 수 있다.
  • 참고로 IAM role base control 을 충분히 숙지하고 보면 이해가 쉬울 것이다.

DDos 완화

DDoS 대응을 위한 AWS 모범사례

  • DDoS 공격: 최종 사용자(End User)가 여러분의 웹 사이트나 어플리케이션을 이용할 수 없도록 만드는 것, 대표적으로 네트워크나 다른 자원들을 고갈시켜 사용자의 정당한 요청을 처리할 수 없게끔 만들어 버림.
  • DDoS 공격은 Open Systems Interconnection (OSI) 모델의 3,4,6,7 계층에서 가장 흔하게 이루어 짐.
  • 인프라 계층 공격: UDP 증폭 공격, SYN flood 공격을 통해 네트웍이나 서버, 방화벽, IPS, 로드 밸런서 등의 시스템 용량을 넘어서는 많은 양의 트래픽을 발생시킨다.
  • 공격자는 요청자의 정보를 임의로 변경하여 서버로부터 더 큰 응답이 돌아가도록 조작할 수 있다.
  • 예시로 , DNS 서버로 64 바이트의 요청 페이로드를 보내는 경우, 공격 대상은 3400 바이트의 원하지 않는 트래픽을 받게 된다.
  • SYN flood 의 경우, ‘Half-Open’ 상태로 연결을 유지하도록 하여 시스템의 가용한 리소스를 고갈시키는 방식을 사용한다. 마지막 ACK를 리턴하지 않게 하여 응답을 지속적으로 고갈시키는 역할을 한다.
  • 응용 계층 공격: 어플리케이션의 특정 기능을 계속해서 호출하는 방식, 예로는 HTTP flood, cache-busting attack, WordPress XML-RPC flood 같은 것들이 있다.

완화 기법들

  • ELB 와 EC2 와 같은 AWS 리전 내부의 서비스들은 해당 리전 내에서 예상치 못한 트래픽의 볼륨을 다룰 수 있게끔, 확장하는 방식으로 DDoS 대응력을 확보할 수 있다.
  • Amazon CloudFront, AWS WAF, Amazon Route 53, Amazon API Gateway 같은 엣지 로케이션에 제공되는 서비스를 이용하면, 글로벌 네트웤 커버리지를 이용하여 장애 대응력을 확보할 수 있다.
  • 인스턴스 사이즈 조절: 필요한 만큼 인스턴스들을 어플리케이션 환경에 추가하는 방식으로 수평적으로 확장하거나,좀더 큰 인스턴스로 수직 확장시키는 방법을 선택할 수 있다.
  • 엣지에서 도메인 이름 변환하기 : Amazon Route 53 은 셔플 샤딩과 애니캐스트 스트라이핑 기능을 사용하여, Route 53 이 DDoS 공격을 받더라도, 사용자가 여러분의 어플리케이션에 접근할 수 있게 해준다.
  • 셔플샤딩: 위임 집합(delegation set) 내의 각 네임 서버들에 대해 엣지 로케이션들과 인터넷 경로들을 묶은 집합을 대응시켜주는 기능
  • 공격 지점 줄이기: 리소스이 전혀 최종 사용자들과 직접적인 상호 작용을 하지 않는다면, 해당 리소스들이 인터넷과의 직접적인 접근을 갖지 않도록 해야함.
  • AWS 리소스 감추기: 대부분의 어플리케이션에서는 AWS 리소스들이 인터넷 상에 완전히 노출될 필요가 없다. 예를 들어, ELB 뒷 단에 있는 Amazon EC2 인스턴스들은 인터넷 상에서 바로 접근할 필요가 없다.
  • 이런 구성은 Amazon Virtual Private Cloud(VPC) 내부의 보안 그룹(Security Group)과 네트웍 접근제어 목록(NCAL)을 설정하면 된다.
  • 보안 그룹: 인터넷으로부터 보안 그룹으로의 모든 트래픽들은 여러분들이 명시적으로 해당 트래픽을 허용해주지 않으면 기본적으로 차단된다.
  • 예를 들어, 하나의 ELB 와 여러 대의 Amazon EC2 인스턴스들로 웹 어플리케이션을 구성했을 때, ELB 에 적용할 단일 보안 그룹(‘ELB 보안 그룹’)을 적용할 지, 인스턴스 별로 여러 개의 서로 다른 보안 그룹(‘웹 어플리케이션 서버 보안 그룹’)을 적용할 지는 결정해야 한다.
  • API 엔드 포인트를 보호하기: Amazon API Gateway 를 이용하게 되면, API 의 앞 단에 별도의 서버를 구성할 필요가 없으며, 어플리케이션 구성 요소들을 외부에서 잘 안보이도록 감출 수 있게 된다.
  • Amazon API Gateway 는 Amazon CloudFront 와 연계되어 있으며, 서비스가 자체적으로 DDoS 대응력을 갖출 수 있게끔 해주는 이점을 줄 수 있다.
  • 운영 기법들- 가시성: Amazon CloudWatch 를 통해, AWS 상에서 운영되고 있는 어플리케이션들을 모니터링 할 수 있다.
  • 어플리케이션에 대한 DDoS 공격을 탐지하는 용도로 Amazon CloudWatch 를 사용하는 방법에 대한 자세한 내용은 Getting Started with Amazon CloudWatch를 참고.
  • VPC Flow logs: VPC Flow Logs 를 이용한다면, VPC 내의 네트웍 인터페이스들을 통해 주고받는 IP 트래픽에 대한 정보를 얻을 수 있다.

암호화 솔루션

AWS에서의 저장 데이터 암호화

  • 암호화에 필요한 3가지 요소: 1.암호화할 데이터, 2.데이터를 암호화하는 방법 (암호화 알고리즘), 3.데이터 및 알고리즘과 함께 사용될 암호화 키
  • AWS 의 암호화 방식 3가지
  • 사용자가 암호화 방법 및 전체 KMS를 제어
  • 사용자가 암호화 방법을 제어하고, AWS가 KMS 스토리지 구성 요소를 제공하고, 사용자가 KMS 관리 계층을 제공
  • AWS가 암호화 방법 및 전체 KMS를 제어

사용자가 암호화 방법 및 전체 KMS 제어

  • Amazon S3 : 사용자가 원하는 모든 암호화 방법을 사용하여 데이터를 암호화한 다음, Amazon Simple Storage Service(S3) API를 사용하여 암호화된 데이터를 업로드
  • AWS SDK에 포함되어 있는 오픈 소스 API 세트를 활용하여 암호화 가능
  • Amazon EBS: 인스턴스에 블록 디바이스로 제공되므로 파일 시스템 수준 또는 블록 수준 암호화를 위해 대부분의 표준 암호화 도구를 활용할 수 있다.

사용자가 암호화 방법 제어, AWS가 KMI 스토리지 구성 요소 제공 및 사용자가 KMS 관리 계층 제공

  • 사용자가 암호화 방법을 관리한다는 점에서 모델 A와 유사하지만, 키를 사용자가 온프레미스에서 관리하는 키 스토리지 시스템이 아닌 AWS CloudHSM 에 저장한다는 점이 모델 A와 다르다.
  • HSM은 키 구성 요소를 생성하고 저장하는 데 사용할 수 있으며, 암호화 및 복호화 작업을 수행하지만, 키 수명 주기 관리 기능(예: 액세스 제어 정책, 키 로테이션)을 수행하지는 않는다.

AWS가 암호화 방법 및 전체 KMS 제어

  • KMS: 관리형 암호화 서비스로, 키를 프로비저닝하고 사용하여 AWS 서비스에서 데이터 및 애플리케이션을 암호화하도록 해준다.
  • AWS KMS 및 데이터를 직접 암호화하는 기타 서비스는 봉투 암호화라는 방법을 사용하여 성능과 보안 간 균형을 유지

--

--