2017년 8월 1일 화요일

1-1. AWS 보안 모범 사례

[요약]
1. AWS의 데이터 자산 / 확인 / 분류 / 보호
2. 계정, 사용자 및 그룹을 사용한 AWS 리소스 엑세스 관리
3. 데이터, 운영 체제, 애플리케이션 및 전반적인 인프라 보안 조치

[개요]
1. AWS / 고객 보안 책임 분담
2. 고객 자산 정의 및 분류
3. 사용자 액세스 관리 방법
4. 데이터 / 운영 체제 / 네트워크 보안 유지 모범 사례
5. 모니터링 및 알람을 통해 보안 목표 달성

[AWS 보안 글로벌 인프라]
1. IAM 서비스
- 사용자가 어떤 AWS 서비스와 리소스에 액세스할 수 있는지를 제어하는 암호, 액세스 키 및 사용 권한 정책과 같은 보안 자격 증명을 한 곳에서 관리
- AWS 계정 내에 개별 사용자를 만들고 각 사용자에게 사용자 이름, 암호, 액세스 키를 부여함(개별 사용자는 계정별 URL을 사용하여 콘솔 로그인 가능)
2. 리전, 가용 영역 및 엔드 포인트
- 리전은 네트워크 지연 시간과 규제 준수를 관리함, 데이터를 특정 리전에 저장하면 해당 리전 밖으로 복제되지 않음

[보안 책임 분담]
1. 인프라 서비스의 책임 분담 모델(EC2, EBS, VPC)
- 고객 관리 : 고객 데이터 / 플랫폼 및 애플리메이션 / 운영 체제, 네트워크 및 방화벽 / 클라이언트 측 데이터 암호화 및 데이터 무결성 인증
              / 서버 측 암호화 파일 시스템 / 네트워크 트래픽 보호(암호화 / 무결성 / 자격 증명)
- AWS 관리 : 시설 / 하드웨어 물리적 보안 / 네트워크 인프라 / 가상화 인프라

2. 컨테이너 서비스의 책임 분담 모델(RDS, EMR)
- 고객 관리 : 고객 데이터 / 클라이언트 측 데이터 암호화 및 데이터 무결성 인증 / 네트워크 트래픽 보호(암호화 / 무결성 / 자격 증명) / 방화벽 구성
- AWS 관리 : 플랫폼 및 애플리케이션 / 운영체제, 네트워크 / 시설 / 하드웨어 물리적 보안 / 네트워크 인프라 / 가상화 인프라

3. 추상화 서비스 책임 분담 모델(S3)
- 고객 관리 : 고객 데이터 / 클라이언트 측 데이터 암호화 및 데이터 무결성 인증 / 플랫폼에서 제공하는 서버측 암호화 및 네트워크 트래픽 보호(암호화 / 무결성 / 자격 증명)
- AWS 관리 : 플랫폼 및 애플리케이션 / 운영체제, 네트워크 / 시설 / 하드웨어 물리적 보안 / 네트워크 인프라 / 가상화 인프라

[자산 정의 및 분류]
- 모든 정보 자산을 확인한 다음 기술적, 재정적으로 실행가능한 보호 솔루션 고안 / 정성적인 지표 작성
- 자산은 두가지 범주로 구분 : 비즈니스 정보, 프로세스, 활동 등 필수 요소 / 하드웨어, 소프트웨어, 인력, 사이트, 파트너 조직 등 지원 요소

[ISMS 설계]
- 비즈니스 요건과 목표 / 사용하는 프로세스 / 조직의 크기와 구조 ~ 모든 정보를 관리하는 주기적 프로세스 구축 필요

[AWS 계정 / IAM 사용자 / 그룹 / 역할 관리]
- AWS 계정 : AWS 처음 가입할 때 만드는 계정으로서 AWS 리소스와 서비스를 관리, IAM 사용자를 만들 수 있음
- IAM 사용자 : 보안 자격 증명을 보유한 여러 사용자를 만들어 단일 AWS 계정에 따라 제어 가능
- IAM 그룹관리 : IAM 정책을 할당하여 각 IAM 그룹에 AWS 리소스에 액세스할 권할을 제공

[AWS 자격 증명 관리]
- 사용자 이름 / 암호 | 멀티팩터인증 | 액세스 키 | API 호출용 MFA

[IAM 역할 및 임시 보안 자격 증명을 사용하는 권한 위임 이해]
- AWS 리스소에 액세스해야 하는 AMAZON EC2 인스턴스에서 실행하는 애플리케이션
  : AWS 리소스에 대한 액세스 권한이 필요한 애플리케이션은 보안 자격 증명이 있어야 AWS에 프로그래밍 방식의 요청이 가능
    (각 인스턴스에 장기 자격 증명을 배포하는 것은 잠재적으로 보안 위협 가능)
- 교차 계정 액세스
  : 프로덕션 환경에서 개발 환경을 격리하는 목적 등을 위해 여러 개의 AWS 계정을 보유할 수 있음
- ID 페더레이션 : 사용자의 기존 보유한 AWS ID에 대해 AWS 보안 자격 증명을 드림
- IAM 역할과 임시 보안 자격 증명 : IAM 역할을 통해 사용자 또는 서비스에 필요한 리소스에 액세스할 수 있는 권한 집합을 정의할 수 있지만,
  해당 권한이 특정 IAM 사용자 또는 그룹에 연결되지는 않음. 대신 IAM 사용자, 모바일 및 EC2 기반 애플리케이션 또는 AWS 서비스는 프로그래밍 방식으로 역할 부여함
  이러한 임시 보안 자격 증명은 만료를 구성할 수 있고 자동으로 교체됨
- AWS EC2의 IAM 역할 : 관리자의 권한 -> 인스턴스 생성 -> 인스턴스 역할 자격 증명 획득
- ID 페더레이션 : IAM 역할을 이용해 기업 사용자와 AWS 리소스 사이에 위치하는 자격 증명 브로커를 만들어 AWS에서 모든 사용자를 IAM 사용자로 다시 만들지 않고 인증과
  권한 부여 프로세스를 관리함

[EC2 인스턴스에 대한 OS 수준 액세스 관리]
- 고객이 운영 체제 자격 증명을 소유하지만 AWS가 운영 체제에 대한 초기 액세스의 부트스트랩 지원
- 표준 AMI에서 EC2 인스턴스에 SSH 또는 RDP 등의 보안 원격 시스템 액세스 프로토콜을 사용하여 해당 인스턴스에 액세스 가능
- EC2 인스턴스 인증을 활성화할 수 있도록 아마존 EC2 키 페어라고 하는 비대칭 키 페어를 제공함
  (업계 표준 RSA 키 페어, 키 페어의 퍼블릭 키는 초기 운영 체제 사용자의 ~/.ssh/authorized_keys 파일에 추가)

[데이터 보호]
- 리소스 액세스 권한 부여
  ~ 리소스 정책 : 사용자가 리소스를 만든 다음 다른 사용자들에게 리소스에 대한 액세스 권한을 부여하는 경우에 적합
  ~ 기능 정책 : 사용자에게 어떤 기능(작업)이 허용 또는 거부되는지 정의합니다.
  ~ IAM 정책을 사용하여 액세스 권한을 특정 소스 IP 주소 범위로 또는 특정 날짜 및 시간 중에 조건에 따라 제한 가능
  ~ 리소스 정책 및 기능 정책은 누적됨
- 클라우드 상의 암호화키 저장 및 관리
  ~ HSM 등 부정 조작 방지 스토리지에 키를 저장 가능 => AWS CloudHSM 지원 가능

[유휴 데이터 보호]
- RISK : 실수로 인한 정보 노출 / 데이터 무결성 위반 검사 / 실수로 인한 삭제 / 시스템 가용성 장애
- RDS에서 유휴 데이터 보호
  ~ 민감한 모든 데이터베이스 필드를 암호화하여 데이터 저장

[전송 중 데이터 보호]
- 클라이언트와 서버 간 네트워크 트래픽과 서버 간 네트워크 트래픽을 보호하는 일이 필요
- RISK : 실수로 인한 정보 노출 / 데이터 무결성 위반 / 피어 자격 증명 위반, 자격 증명 스푸핑, 중간자 공격
  => 서버 인증서 인증 및 HTTPS 사용, ELB에서 HTTP 처리를 오프로드하여 전송 중 데이터 보호 중에 웹서버에 대한 영향을 최소화함,
     RDP 사용안함, 권한이 없는 사용자 게정을 사용하여 SSH 버젼 2를 사용, 데이터베이스서버 트래픽 - 외부서버에서 DB 접근 불가
- AWS Management Console은 클라이언트 브라우저와 콘솔 서비스 엔드포인트 사이에 SSL/TLS를 사용하여 AWS 서비스 관리 트래픽 보호, 트래픽이 암호화되고 데이터 무결성 인증 후
  클라이언트 브라우저가 X.509 인증서를 사용하여 콘솔 서비스 엔드포인트의 자격 증명을 인증함 이후 SSL/TLS 세션 설정 후 HTTP 트래픽이 보호
- 동일하지 않는 리전의 인스턴스에서 RDS로 연결하는 경우 SSL/TLS 사용 권장