보안교과서
[SeSac]클라우드 컴퓨팅 개념(3) 본문
Hypervisor(하이퍼바이저) 개념 및 주요 특징
개념
- 단일 물리적 머신에서 여러 가상 머신을 실행하는 데 사용할 수 있는 소프트웨어입니다. 하이퍼바이저는 필요에 따라 CPU 및 메모리와 같은 기본 물리적 컴퓨팅 리소스를 개별 가상 머신에 할당합니다. 그렇기 때문에 물리적 IT 인프라의 최적 사용을 지원합니다.
- 또한 가상화 , 하드웨어와 소프트웨어의 분리를 지원하는 기반 기술입니다. 관리자는 단일 호스트 시스템에 여러 가상 머신을 생성할 수 있습니다.
- 가상머신 VM(Virtual Machine)마다 자체 운영 체제와 cpu, 그래픽 가속기, 스토리지 등의 하드웨어 리소스가 있습니다.
- 하드웨어를 가상화하기 위해서는 하드웨어들을 관장할 뿐만 아니라 각각의 가상머신들을 관리할 가상머신모니터(VMM : virtual Machine Monitor)와 같은 중간관리자가 필요합니다. 이 중간관리자를 하이퍼바이저라고하며, VM이 동작할 수 있는 환경을 제공한다.
특징
- HOST SYSTEM 에서 다수의 게스트 OS 를 구동 할 수 있는 소프트웨어
- 하드웨어를 가상화하면서 하드웨어와 각각의 VM을 모니터링하는 중간관리자 VMM
- VM은 가본적으로 컴퓨터의 에뮬레이션으로, 프로그램을 실제 컴퓨터처럼 실행한다. VM들은 "하이퍼바이저" 를 통해 물리적 기계 위에서 돌아간다.
Hypervisor는 CSP 중에 IaaS를 제공
베어메탈 기반 | 호스트 기반 |
하이퍼바이저가 하드웨어 바로 위에서 실행되는 방식이다. 하이퍼바이저가 하드웨어를 직접 제어하기 때문에 자원을 효율적으로 사용할 수 있고, 별도의 호스트os가 없으므로 오버헤드는 적지만 여러 하드웨어 드라이브를 세팅해야하므로 설치가 어렵다 |
하드웨어 위에 호스트 운영체제가 있고, 그 위에서 하이퍼바이저가 다른 응용프로그램과 유사한 형태로 동작한다. 이 타입의 하이퍼바이저에 의해서 관장되는 가상머신의 게스트 os는 하드웨어 위에서 3번째 수준으로 구동된다. 기존의 컴퓨터 환경에서 하는 것 이기 때문에 설치 용이 하지만 성능이 떨어진다. vm ware |
page 143
구분 | 가상화 | 클라우딩컴퓨팅 |
정의 | 기술 | 방법 |
목적 | 1개의 물리적 하드웨어 시스템에서 다수의 시뮬레이션 환경 생성 | 다양한 용도의 다양한 리소스를 사용자 그룹에 제공 |
설정 | 이미지 기반 | 템플릿 기반 |
용도 | 특정 용도의 패키징 된 리소스를 특정 사용자에게 제공 | 다양한 용도의 다양한 리소스를 사용자 그룹에 제공 |
평균 수명 | 연 단위(장기) | 시간/월 단위(단기) |
비용 | 높은 CAPEX(자본 지출), 낮은 OPEX(운영 비용) ※ CAPEX : 고정자산 투자, OPEX : 운영비용 ※ CAPEX(Capital Expenditure), OPEX: Operation Expenditure) | 프라이빗 클라우드: 높은 CAPEX, 낮은 OPEX • 퍼블릭 클라우드: 낮은 CAPEX, 높은 OPEX ※ CAPEX : 고정자산 투자, OPEX : 운영비용 |
확장성 | scale-Up | Scale-Out |
워크로드 | 스테이트풀(stateful) : 애플리케이션과 프로세스는 온라인 뱅킹이나 이메일처럼 여러 번 반환됨 | 스테이트리스(stateless) : 프로세스 또는 애플리케이션 격리. 예) 콘텐츠 전달 네트워크 |
테넌시 | 싱글 테넌트 | 멀티 테넌트 |
CAPEX(Capital expenditures) : 미래 이윤을 창출하기 위해 지출한 비용
OPEX(Operating Expenditure) : 운영 비용 ,업무 지출
가상화 (virtualization) | cloud computing |
Application | |
api, gateway | |
application binaries , code | |
SYSTEM S/W,응용 SW ex) db security was | vm1 ,vm2 vm3 |
GUEST OS | virtual network infra |
Virtualizaion S/W H/W | HYPERVISOR |
Host OS | HOST OS |
H/W (가상화) l3 l4 | H/W |
부대설비 (건물,전력,설비,소방) | 부대설비 (건물,전력,설비,소방) |
목적 : 물리적 정보를 가상 정보 시스템으로 바꾸는 것이 single tenant (one user) scale- up 성능 |
공급자,csp :supplier를 통해서 받아야한다 multi tenant scale - out 물량 |
구분 | 설명 |
인스턴스(instance) 개념 | 클라우드 컴퓨팅에서 인스턴스는 타사 클라우드 서비스에서 제공하는 서버 리소스입니다. 온프레미스에서 물리적 서버 리소스를 관리하고 유지할 수도 있지만, 그럴 경우 비용이 많이 들고 비효율적입니다. 클라우드 제공업체는 데이터 센터에서 하드웨어를 유지 관리하고 인스턴스라는 형태로 컴퓨팅 리소스에 대한 가상 액세스를 제공합니다. 클라우드 인스턴스를 사용하여 컨테이너, 데이터베이스, 마이크로서비스, 가상 머신 등의 컴퓨팅 집약적인 워크로드를 실행할 수 있습니다. |
클라우드 인스턴스가 중요한 이유 1. 확장성 |
개발자는 워크로드 요구 사항에 따라 클라우드 인스턴스의 컴퓨팅 리소스를 조정합니다. 예를 들어, 소프트웨어 개발자는 인스턴스에 애플리케이션을 배포합니다. 앱이 더 많은 사용자를 확보할수록 엄청난 트래픽이 발생하여 응답 시간이 느려집니다. 개발자는 CPU, 메모리, 스토리지 및 네트워크 리소스를 특정 인스턴스로 늘려 클라우드 리소스를 수평적으로 조정할 수 있습니다. |
클라우드 인스턴스가 중요한 이유 2. 내결합성 |
조직에서는 백업을 위해 여러 중복 인스턴스를 사용하여 중복성을 만듭니다. 이들은 특히 데이터 처리와 같이 메모리 집약적인 워크로드를 관리하는 데 유용합니다. 예를 들어, 유럽에서 호스팅되는 클라우드 인스턴스에 장애가 발생하더라도 애플리케이션은 미국과 아시아의 다른 인스턴스에서 계속 실행될 수 있습니다. |
aws instance types general Purpose instance |
|
compute optimized instances | 고성능 cpu의 instance 안 적혀있으면 intel |
memory- optimized instances | 메모리에 대한 사이즈가 중요하다 . XRting |
accelerated computing instances | GP 가 들어간다 가속화된 FPGA GPU 엔비디아 계열로 들어간다. |
storage optimized instnaces | 순차적 읽기 및 쓰기 엑세슷가 많이 필요한 작업에 적합 |
컴퓨팅 최적화 인스턴스
https://docs.aws.amazon.com/ko_kr/AWSEC2/latest/UserGuide/compute-optimized-instances.html
메모리 최적화 인스턴스
https://docs.aws.amazon.com/ko_kr/AWSEC2/latest/UserGuide/memory-optimized-instances.html
가속화된 컴퓨팅 인스턴스
윈도우
https://docs.aws.amazon.com/ko_kr/AWSEC2/latest/WindowsGuide/accelerated-computing-instances.html
리눅스
https://docs.aws.amazon.com/ko_kr/AWSEC2/latest/UserGuide/accelerated-computing-instances.html
스토리지 최적화 인스턴스
https://docs.aws.amazon.com/ko_kr/AWSEC2/latest/UserGuide/storage-optimized-instances.html
quiz
1. 고성능 데이터베이스에 적합 : 메모리
2. 데이터 웨어하우징 애플리케이션에 적합 : 스토리지
3.컴퓨팅 메모리 네트워킹 리소스를 균형있게 제공 :범용
4. 고성능 프로세서 제공 : 컴퓨팅
page 149 Cloud Compute Optimized Instances Type (정리 다시하기)
M5 instance가 제일 많이 쓰인다.
T3(intel)/T3a(amd) instance
AWS Graviton2 : aws 자체 cpu 고성능
[INSTANCE 구성방식]
C . NUM . AG
C [instance type] 5가지 있는데 {general 범용 instance, computing(C), memory (R) , accelerated , storage}
메모리는 R로 시작
NUM : 숫자 올라갈 수록 성능 업
내려갈 수록 성능 다운
AG : 제조사의 VENDER EX) AMD(A) GRAVITON(G)
X 는 인텔 계열
X1e(긱멜? 높은 메모리 대 사 )
HIGH MEMORY INSTANCE ( HIGH MEMORY영역 TB 단위 )
Accelerated
p 계열은 글카는 엔비디아 시피유는 제온
Inf1 (대기 시간이 짧다)
가상 머신 vs container 중요중요
Iaas
VM 가상머신 | container 컨테이너 | CSC | |
클라우드 서비스 파티 모델 | iaas | paas | |
csc | APPLICATION(쪼개면 각각의 컨테이너 C1 ,C2) 하드 리소스 만큼 쪼갤 수 있다. | ||
API BUILD , BINARY CODE | |||
vm1 vm2 | API , PROGRAMING STACK(JAVA, PYTHON) | ||
virtual network | container engine => container os | CSP |
|
ssrm(... responsibility model) 위에꺼 경계/ csp or 공급자 |
hypervisor | 물리적인 운영 체제 | |
리눅스를 쓴다 os (operating system) | host os | ||
host server | kernel (cpu처리 ,메모리처리 ,그래픽처리 ,스토리지처리, 네트워킹처리) | ||
하드웨어 | 하드웨어 | ||
부대설비 (data center , power supply, 소방설비, 출입 통제 설비,시스템) | 부대설비 (data center , power supply, 소방설비, 출입 통제 설비) |
linux 가볍고 안정적이다.
서버리스 커널(kernel)
zero Trust (제로 트러스트 보안)
On-premise(기존 보안 관제 방식 )
관제는 네트워크
윗 단이 아랫단을 포함하는 구조
On-premise(기존 보안 관제 방식 ) | off-premise (cloud) |
user id : authorication(인증) | |
network | cloud reserach (서버나 데이타 베이스 총칭) |
여러가지의 서버 | application |
응용프로그램 application | 단말기 end point |
어플리케이션을 사용하기 위한 단말기 (client pc), database , | data |
data | |
권한을 서버 네트워크 어플리케이션 여러가지 단에 부여할 수 있는데 |
SDP (소프트웨어 정의 경계) : software defined paremeter 인터넷에 연결된 인프라(서버 라우터)등을 숨기는 방법
외부 당사자와 공격자가 이를 볼 수 없습니다. 목적은 하드웨어 대신 소프트웨어를 기반으로 네트워크 경계를 설정하는 것
접근하려면 권한이 부여되어야한다
사용자와 장치가 인증되면 SDP는 장치와 엑세스 하려는 서버 간에 개별 네트워크 연결을 설정 합니다.
IAM (identity access management) aws 리소스에 대한 액세스를 안전하게 제어할 수 있는 웹 서비스 입니다.
IAM을 사용하면 사용자가 엑세스 할 수 있는 AWS RESOURCE를 제어하는 권한을 중앙에서 관리가 가능합니다.
약간 ROOT 계정 느낌..?
단말기에서 데이터 접근할 떄도 물어봄 (읽기 전용 권한)
https://docs.aws.amazon.com/ko_kr/IAM/latest/UserGuide/introduction.html
Policy decision point (PDP)
MCRA
https://learn.microsoft.com/ko-kr/security/cybersecurity-reference-architecture/mcra
zero trust defined
https://www.microsoft.com/en-us/security/business/zero-trust
IAM = Identities
Endpoint as a desktop
(Container) 컨테이너의 장점
응용프로그램 동작환경 | 애플리케이션 레벨 고립 |
환경구축 시간 | 하이퍼바이저 기반의 가상머신 보다 빠른 셋업 |
메모리 사용 | 하이퍼바이저 기반의 가상머신보다 메모리 덜 소모 |
응용프로그램 마이그레이션 및 전송속도 | 마이그레이션, 백업, 전송이 쉬움, 가상머신과 비교해 크기가 작기 때문 |
성능 | 하드웨어와의 빠른 커뮤니케이션은 따라 성능에 효과적일 수 있음 |
응용프로그램 배치 및 유지 보수 | 애플리케이션 배치와 유지보수를 항상 효과가 있음 |
데이터 전달 속도 | 애플리케이션 전달 시간 감소 |
컨테이너인 docker 와 kubernetes 양대 산맥
쿠버네티스의 개념
리눅스 컨테이너 작업을 자동화하는 오픈소스 플랫폼을 의미한다.
이 플랫폼에서는 컨테이너화된 애플리케이션을 배포하고 확장하는 데 수동 프로세스가 필요하지 않는다.
리눅스 컨테이너를 실행하는 호스트 그룹을 함께 클러스터링할 수 있으며 쿠버네티스를 통해 이러한 클러스터를 쉽고 효율적으로 관리할 수 있다.
클러스터는 퍼블릭 클라우드, 프라이빗 클라우드 또한 하이브리드 클라우드 전체로 호스트를 확장 가능하다.
docker | 쿠버네티스 | ||
hosts | binary code | binary code | worker nod |
c1 c2 c3 container (컨테이너를 그룹화한 것이 컨테이너스) | c1 c2 c3 container (그룹화한 것을 pod) | ||
container engine | 쿠버네티스 엔진 | ||
데몬 | 데몬 | ||
master nod -> control plane |
api server : 수많은 language 제공
kublet : demon service 죽으면 큰 일
kube proxy : 코드와 코드끼리 네트워킹을 하는 역할
container 가 하나의 tenant 업무시스템으로 되는 것이다.
container 와 pod 는 아파트 worker nod 1동 2동
persistent storage : 쿠버네티스는 애플리케이션을 실행하는 컨테이너를 관리할 뿐만 아니라 클러스터에 연결된 애플리케이션 데이터도 관리할 수 있습니다. 쿠버네티스를 사용하면 사용자가 기본 스토리지 인프라에 관한 상세 정보를 알지 못해도 스토리지 리소스를 요청할 수 있습니다. 퍼시스턴트 볼륨은 pod가 아닌 cluster애 따라 다르므로 pod 보다 수명이 오래 지속됩니다.
container registry : 컨테이너 이미지는 컨테이너 레지스트리에 저장됩니다. 이러한 레지스트리를 직접 구성하거나 제 3사가 구성할 수 있습니다.
docker 는 컨테이너 기반의 오픈소스 가상화 플랫폼 중 하나
docker 사용하면 인프라에서 애플리케이션을 분리하여 컨테이너로 추상화시켜 소프트웨어를 빠르게 제공 할 수 있으며, 이는 주어진 하나의 호스트 os 안에서 여러 컨테이너를 동시에 실행 할 수 있음
docker는 컨테이너의 라이프 사이클을 관리하고 어플리케이션을 오케스트레이션된 서비스로 배포할 수 있음 예를 들어 백엔드 프로그램 데이터베이스 서버 메시지 큐 등 어떤 프로그램도 컨테이너로 추상화 할 수 있고 조립 pc,aws,azure, nbp 등 어디에 서든 실행할 수 있음
image : 메모리에 올라간 images
nginx
Cloud Native Container Security
보안은 걔층으로 생각해라
cloud ,cluster(dlient나 유저 인터페이스) ,container (운영자가 생성한 ) ,code (식별 코드)
이 계층화 된 접근 방식은 보안에 대한 심층 방어 컴퓨팅 접근 방식을 강화
클라우드 네이티브 보안 모델의 각 계층은 다음의 가장 바깥쪽 계층을 기반으로 한다.
코드(code) 수준에서 보안을 처리하여 기본 계층의 열악한 보안 표준을 보호할 수 없다.
container < [암호화 데이터 로 전송 ]>container
DevSecOps 프로세스 및 관련 솔루션 181page
STEP1 보안 설계 및 아키텍처
솔루션 아키텍트
보안 아키텍트 : 설계 단계에서 advior해주시는 분
네비게이터 : 가이드 안내 해주시는 분 자료 확보
보안 전문가 : 클라우드 보안 컨설턴트 , 값 스트림 (입력값, 출력)
아티팩트 : 관련된 자료 준비
step 2 보안 코딩
CSD 클라우드 개발자 , 운영 엔지니어(Operations Emgineer) (STEP1 CSC가 팀에 포함되어야한다. )
소프트웨어 개발자 (코드를 식별 설계 및 작성하는데 보안 아키텍트와 협력합니다.(보안 아키텍트는 1단계에 포함) 모든 보안, 성능 및 기능 문제가 해결되었는지 확인하기 위해 제품을 테스트, 유지 관리 및 업데이트 하는데 도움을 준다.)
보안 운영 엔지니어
응용프로그램 보안 엔지니어
DevSecOps는 개발, 보안 및 운영을 의미합니다.