하이퍼바이저
- 부대설비 > 하드웨어 > 호스트 서버 > 하이퍼바이저 >
- 하이퍼바이저의 영역은 IaaS 보안 운영영역 private 클라우드 내에서만 보안 가능
- 하이퍼바이저 구성 : vcp, vmemory, 저장소, vnetwork,vswitch
- 하이퍼바이저 위에 VMI(Virtual Network Instructure) 위에 VS(Virtual Server) 위에 OS 위에 server 관리 위에 Runtime 위에 빌드(binary code) > 위 구성을 통해서 SaaS형 애플리케이션이 만들어짐
- IaaS 구성 체계를 알아야 보안 자문, CSC관점에서 보안 자문 컨설팅 구분을 할 수 있음
하이퍼바이저 2가지 종류
*하이퍼바이저는 운영체제 없이 동작하지 않음
- 베어메탈 기반: 가장많이 사용, 안전한 방법, 빠른속도, 자체 운영체제, 비쌈
- 호스트 기반 : 별도의 운영체제가 들어감(Host Server), 비용측면 쌈
*성능적인 측면에서 베어메탈 기반이 우수함
클라우드 컴퓨팅
- 물리적 설비 > 하드웨어 > 호스트 서버 > 하이퍼바이저 > VNI > VS
- 주문형, 비용처리, 쌈, 템플릿 기반
- 확장에 용이 (scale-out)
가상화
- 내부망 구축: 부대 설비 > 하드웨어 > 호스트 서버 > 하이퍼바이저(가상화) > VS
- 비쌈, 이미지기반
인스턴스
- 컴퓨팅 리소스에 대한 가상 액세스 제공
- 확장성
- 내결합성
인스턴스 종류
- 범용 목적 인스턴스 (general purpose)
- 컴퓨팅 최적화 인스턴스 (compute optimized) : 빠른 속도를 요구하는 시스템
- 메모리 최적화 인스턴스 (memory optimized) : 데이터베이스
- 가속화된 컴퓨팅 인스턴스 (accelerated computing) : 이미지, 동영상, 게임
- 스토리지 최적화 인스턴스 (storage optimzed) : Iops 입출력 성능 빠른 응답속도/ 데이터 분석
Virtual Server on IaaS
- 부대 설비, 하드웨어, 호스트서버, OS, 하이퍼바이저, VS, VS1,2,3,> VS
- 사이즈 : 수백Mb ~ 수십 Gb
Container Architecture
- 부대설비, 하드웨어, 커널(CPU, 등등), 호스트 서버, OS, 컨테이너 엔진(쿠버네티스, 도커, 아파치 등), 컨테이너 생성
*container : 가상의 컴퓨터기 때문에 바이너리, 라이브러리, 빌드된 어플리케이션, MSA 등 존재
*하이퍼바이저 대신에 컨테이너 엔진이 들어감
- 사이즈 : 수십Mb~ 수십Mb
Container장점
- 동작환경, 환경구축, 전송속도 시간 빠름, vm보다 적은 메모리 소모
컨테이너 솔루션
1. Docker : 국외에서 가장
2. Kubernates : 국내에서 가장
Kubernates
- 레지스트리, 네트워킹, 스토리지, 시큐리티, 전략 > 오케스트레이션
- 관리기능
- 구성도: UI , Master Node, Worker node, regestry
- worker node : kubernates runtime, kublet, kube-proxy
Docker
- Client: docker build, docker pull, docker run
- DockerHost: Containers, Images
- Registry
- docker engine: distribution, orchestration, volumes, containerd, docker build, networking
- 장점: 적은 메모리 공간 필요, 부팅시간 짧음, 단일 도커 엔진으로 성능 발휘, Scale-up, 효율성이 높음, 플랫폼 간에 이동, 데이터 공유, 재사용
*가상화와 비교해서 우수한 면을 보여줌
Container Security
보안이슈
1. 컨테이너의 응용프로그램 접근
- ACL기반으로 접근통제 부여 해주어야 함, 생성, 운영, 삭제: 1. 책임자 2.개발자 3.사용자
2. 컨테이너 이미지 보안
- 안전한 DB(registry)에 저장해야 함 (단, 검증된 저장소 사용)
ex) nginx, docker registry 등
- 취약점 분석 평가 (CCE, CVE 기반으로 해야 함)
https://downloads.cisecurity.org/#/
3. 루트 권한으로 이용하는 컨테이너 동작: 컨테이너 서비스는 Root 권한을 제거해야 함
4. 사용자 권한: Pod(docker: containers)
- Pod View, list 권한 제한: 일반사용자 해당 권한 제거
- 모든 Pod간의 연결은 하면 안되고, 연관된 Pod들만 연결
Cloud Infra
- 프론트앤드와 백앤드로 서비스
- 프론트앤드에서 직접 DB로 접근하게 되면 안됨
5. Pod 통신 구간 암호화
- 2개 이상의 Pod간 통신을 안전하게 하기 위해 TLS 1.2이상 적용
- Pod 간에 연결하는 구간은 평문 전송이 되지 않아야 함
6. 중요 데이터 보안
- 평문 저장 X
- Base64 기반 암호화 적용
- 3rd Party보안 관리 솔루션 사용
7. etcd 보안
- etcd에 저장하는 모든 데이터 보안
- 모든 클러스터 데이터에 대해 kubernates 백업 저장
- API 서버를 우회 할 수 없도록 설정
- 클러스터에 무제한 접속 제한 설정
8. 컨테이너 데이터, 이미지 백업 및 복구
- 취약, 손실 데이터에 대해 데이터 보호 정책
- 신용카드, 개인의료, 개인정보, 식별정보 > 데이터 백업 정책 적용
- 주기적인 백업 및 복구 테스트
9. 컨테이너 보안정책 구성
10. 컨테이너 재해 복구 계획
- 재해복구 계획, 백업 정책
- 이중화: 리전내에 가용영역 안에 있는container를 똑같은 container 생성 (안정성 낮음)
가용영역 내에 workernode 생성
Cloud Native Container Security
Cloud Native 구성요소
1. container
2. DevOps
3. CI/CD
4. MSA
cloud native container security 4c
1. cloud/co-lo/corporate
2. cluster
3.container
4. code
클라우드 관점 보안
클라우드 공급자 보안
- KISA CSAP, CSA STAR, ISO 27001:20, ISO 27017 > 검증서가 있는지 확인
infrastructre 보안: kuberantes 관점
- NACL 설정
클러스터의 컴포넌트
클러스터 내 컴포넌트(애플리케이션)
- 컨테이너는 앞 단에 가상방화벽, DDOS공격에 대한 SaaS솔루션 설계
RBAC 인증
- 일반 사용자, 관리자, 개발자에 맞춰서 인증
인증 송 수신 부문
- 6443번 포트에서 수신을 대기 , 클러스터는 443 포트에서 서비스
>> 6443, 443 포트 사용하지 않고 변경
인증 /권한 부문
- TLS 1.2 버전 사용
인증/인가부문
- OTP 사용
서비스 품질
- 네임스페이스 생성: 컨테이너에 대해 격리되도록
네트워크 정책
- OSI 7계층, TCP/IP 개념 파악
쿠버네티스 인그레스 TLS적용
- namespace 코딩, base64
TLS를 통한 접근
통신 포트 범위 제한
- TCP 포트 제한
타사 종속성 보안
정적 코드 분석
동적 탐지 공격
DevOps
1. 보안 설계 및 아키텍처
2. 보안 코딩
3. 지속적 빌드, 통합 및 테스트
4. 지속적 전달 및 배포
5. 런타임 보호 및 모니터링
실습
CSAP 보안인증컨설팅 템플릿
- 엑셀파일 커버페이지
- lab에 관련된 파일