클라우드
개념과 유래
클라우드 (Cloud) 혹은 클라우드 컴퓨팅 (Cloud Computing) 이란 컴퓨팅 서비스를 사용자가 원할 때 즉시 제공 (On-Demand) 하는 기술
📂 컴퓨팅 서비스
연산 능력, 저장 공간, 네트워크와 같은 기초적인 인프라부터 빅데이터 분석 도구, 인공지능 플랫폼, 협업 도구와 같이 고도화된 서비스들까지 의미
▶ 클라우드 컴퓨팅은 시분할 컴퓨팅에서 유래됨
→ 시분할 컴퓨팅이란 여러명의 사용자가 하나의 컴퓨팅 자원을 동시에 사용하는 기술 의미
→ 이후 클라우드 컴퓨팅은 인터넷과 가상화 기술 발전의 많은 영향을 받음
용어
1. 클라우드 서비스
: 클라우드 기술로 제공되는 모든 서비스를 말하며, 대표적으로 IaaS, PaaS, SaaS가 있다
2. 클라우드 서비스 제공자 (Cloud service provider, CSP)
: 클라우드 서비스를 제공하는 주체를 말하며 대표적으로 아마존, 마이크로소프트, 구글, 알리바바, 오라클 등이 있다. 클라우드 제공자라고도 부른다
3. 클라우드 서비스 사용자
: 클라우드 서비스를 이용하는 모든 주체를 말하며, 클라우드 사용자라고도 부른다.
4. 클라우드 플랫폼
: 하나 이상의 클라우드 서비스를 이용할 수 있는 플랫폼으로, 대표적으로 AWS, Azure, GCP가 있다.
5. 클라우드 애플리케이션
: 클라우드 서비스 사용자가 클라우드 서비스를 이용하여 구축한 애플리케이션을 말하며 보통 하나 이상의 클라우드 서비스로 구성된다.
특징
- 가용성 : 어떤 시스템을 원하는 때에, 장애 없이 이용할 수 있는 성질
- 가용성이 높다는 것은 시스템에 장애가 발생할 확률이 낮고, 장애가 발생해도 회복 능력이 뛰어남을 의미
- 클라우드 플랫폼을 이용하면 온프레미스 환경에서는 적용하기 어려운 고가용성 설계도 적용할 수 있음
- 확장성 : 시스템의 성능을 얼마나 쉽게 조절할 수 있는지를 나타냄
- 스케일 업 (Scale up) : 시스템 자원의 성능을 높이는 것
- 스케일 아웃 (Scale out) : 시스템 자원의 수를 늘리는 것
- 탄력성 : 변화하는 시스템 부하에 맞춰 얼마나 빠르게 성능을 조절할 수 있는지를 나타냄
- 확장성이 장기적 관점에서의 자원 관리와 관련된 성질이라면, 탄력성은 순간적 변화에 대한 반응성과 관련 있음
- 높은 탄력성은 높은 확장성과 정확한 모니터링을 요구한다. AWS를 비롯한 대부분의 클라우드 플랫폼은 클라우드 애플리케이션에 대한 정밀한 모니터링 도구를 제공한다.
배포형태
프라이빗 클라우드 (Private Cloud) | 퍼블릭 클라우드 (Public Cloud) | |
개념 | 클라우드를 온프레미스로 구축하고 이용하는 것 | 일반적인 클라우드 서비스를 의미 |
장점 | 데이터를 외부에 보관하는 데서 오는 불안 해소 가능 | - 높은 가용성, 확장성, 탄력성을 가짐 - 클라우드 플랫폼의 주장에 따르면, 잘 설계된 클라우드 애플리케이션은 비용을 절감해주는 효과가 있음 |
단점 | - 온프레미스 구축 비용 추가 - 높은 가용성과 보안성을 유지하려면 IT 인력을 운용하는데 큰 비용이 들 수 있음 - 확장성과 탄력성이 둘어듦 |
- 클라우드 플랫폼에 의존하게 됨 - 클라우드 플랫폼의 잘못으로 사고가 발생하더라도, 사용자는 손해를 봄 |
클라우드 서비스의 종류
클라우드 서비스는 무엇을 제공하느냐에 따라 크게 IaaS, PaaS, SaaS로 분류된다.
Infrastructure as a Service (IaaS)
서버, 스토리지, 네트워크와 같이 가장 기본적인 컴퓨팅 자원을 제공하는 서비스이다. 사용자는 할당받은 자원을 이용하여 기초부터 애플리케이션을 구성할 수 있다.
Ex) AWS의 EC2, GCP의 GCE, Azure의 VM
→ 사용자는 IaaS로 받은 클라우드 자원을 높은 자유도로 이용할 수 있는 한편, 이용에 따른 책임도 지게 된다.
Platform as a Service (PaaS)
애플리케이션 구현에 도움이 되는 플랫폼을 제공해주는 서비스이다. PaaS의 “플랫폼”은 데이터베이스, 파일 시스템, 인공 지능과 빅데이터 처리 도구, 서버리스 개발 도구 등 매우 많은 대상이 모두 포함된다.
Ex) AWS의 Elastic Beanstalk, GCP의 App Engine, Azure의 App Service, Heroku 등
→ 개발 효율을 높일 수 있지만, IaaS 보다 많은 비용이 청구된다.
Software as a Service (SaaS)
사용자가 사용할 소프트웨어를 제공한다. PaaS는 애플리케이션 구축을 위한 수단으로서의 소프트웨어를, SaaS는 이용 자체가 목적인 소프트웨어를 제공한다는 데 차이가 있다.
Ex) Google G Suite, Microsoft Office 365 등
클라우드 보안
공동 책임 모델 (Shared Responsibility Model, SRM)
클라우드 애플리케이션의 보안 책임은 클라우드 사용자와 클라우드 제공자 모두에게 있다. 공동 책임 모델은 서비스에 따라 사용자와 제공자가 각각 어떤 책임을 갖는지 나타내는 모델이다. 공동 책임 모델은 “클라우드의 보안은 클라우드 제공자가, 클라우드에서의 보안은 사용자가 책임진다.”로 표현된다.
▶ 클라우드 제공자는 사용자에게 안전한 도구를 제공할 책임이 있고, 사용자는 그 도구를 안전하게 사용할 책임이 있다.
Ex) AWS의 EC2 인스턴스는 매우 안전한 서버이나, 사용자가 EC2로 취약한 바이너리를 서비스할 경우 언제든 공격의 표적이 될 수 있으며 이는 AWS의 책임이 아니다.
📌 클라우드 플랫폼에 따른 공동 책임 모델
- 아마존 AWS : https://aws.amazon.com/ko/compliance/shared-responsibility-model/
- 구글 GCP : https://services.google.com/fh/files/misc/gcp_pci_srm__apr_2019.pdf
- 마이크로소프트 Azure : https://docs.microsoft.com/ko-kr/azure/security/fundamentals/shared-responsibility
클라우드 보안의 중요 요소
- 자격증명
- AWS, Azure, GCP는 플랫폼에 대한 역할 기반 접근 제어 (Role Based Access Control, RBAC) 서비스를 제공
- RBAC을 설정할 때는 최소 권한의 원칙 (Least Privilege Policy) 에 따라 불필요한 권한 부여를 최소화해야 함
- 네트워크
- 클라우드 애플리케이션은 다양한 클라우드 서비스로 구성되며, 각 서비스는 플랫폼이 제공하는 SDN으로 연결된다.
- 사용자는 각 서비스가 유기적으로 통신할 수 있도록 네트워크를 설계는 동시에, 보안을 고려하여 외부로의 서비스 노출을 최소화해야 한다.
- 데이터 보안
- 클라우드 스토리지와 관련된 보안 설정이 잘못되면 중요한 데이터가 유출되거나 조작되는 피해를 볼 수 있다.
- 데이터를 안전하게 보호하려면 스토리지에 대한 적절한 접근 제어, 주기적인 데이터 백업, 암호화 등이 이뤄져야 한다.
- 모니터링 및 보안 검사
- 클라우드 플랫폼은 사용자가 이용하는 서비스들에 대해 상세한 모니터링 도구를 제공을 통해 각 서비스에 가해지는 부하를 측정하거나, 부분적으로 장애가 발생하지 않았는지 점검할 수 있다.
- 사용자가 구현한 클라우드 애플리케이션의 설정에 취약점이 있지 않은 지 검사할 수도 있다.
'Cloud' 카테고리의 다른 글
[Dreamhack] GCP 보안 설정 (0) | 2024.09.23 |
---|---|
클라우드 용어 정리 (2) | 2024.09.18 |
[Dreamhack] Azure 보안 설정 (0) | 2024.09.15 |