loading...

‘성능과 보안의 양립점 찾기’ 성능 향상을 위한 클라우드 보안 아키텍처

클라우드의 가장 큰 장점 중의 하나는 빠르게 자원을 늘리고 줄일 수 있는 유연성입니다. 이러한 유연성을 이용하여 고성능이 필요한 서비스를 만들어낼 수 있는데요. 고성능 서비스를 사용할 때 어떤 보안이 필요할까요? 일반적으로 서비스 성능과 보안은 반비례 관계에 있습니다. 따라서 성능과 보안의 양립점을 찾는 일이 중요합니다. 지금부터 성능에 초점을 두고 수용 가능한 수준으로 적정 보안을 유지하는 아키텍처에 대해 알아보겠습니다.

# 자동으로 자원을 늘리고 줄이는 오토 스케일 업/아웃

클라우드 서비스에 구성된 자원(가상 서버 등)에 오토 스케일을 설정하면 최대로 동작할 수 있는 자원의 크기와 수를 적용할 수 있습니다. 자원의 허용 범위(임계치)를 설정해서 이를 초과할 때, CPU나 메모리 등 자원 사양을 추가하여 스케일 업(고성능으로 업그레이드) 하거나, 추가 장비를 통해 스케일 아웃(병렬 처리하여 부하를 분산) 하는 형태로 자원의 활용성을 극대화할 수 있습니다.

서비스 요청 클라우드 환경 퍼블릭 서브넷 이벤트 트리거 프라이빗 서브넷1 자원 1 자원 2 AutoScale-UP 설정 프라이빗 서브넷2 자원 1 자원2 AutoScale-Out 설정 과부하 클라우드 환경 퍼블릭 서브넷 이벤트 트리거 자원 과정 프라이빗 서브넷1 자원 1 자원 2 AutoScale-UP 설정 프라이빗 서브넷2 자원 1 자원2 자원3 AutoScale-Out 설정
스케일 업/아웃 설정

스케일 업/아웃 기능을 사용하는 아키텍처에서 보안 고려 사항은 권한 관리와 서비스 범위 제한입니다.

스케일 설정은 리소스를 자동으로 생성할 수 있는 강력한 권한입니다. 이 때문에 사용 권한에 대한 정밀한 제어와 서비스의 특성에 맞는 최소한의 권한 적용이 필요합니다. 스케일 설정 오류로 인해 불필요한 자원이 생성될 수 있으므로 중요한 설정 작업에 대해서는 강화된 인증 방식을 적용해야 합니다.

두 번째는 서비스 범위 제한입니다. 오토 스케일 기능을 악용하여 공격 도구로 활용하거나 자원 사용량을 고의로 늘려서 많은 비용을 발생시키는 피해를 입힐 수 있습니다. 따라서 접근 가능한 조건과 권한을 통제하여 보안을 강화할 수 있습니다. 예를 들어 IP 주소가 동일할 경우 서비스 호출 횟수를 제한하거나 지정된 시간 또는 강화된 인증만으로 서비스를 요청하도록 제한하여 오토 스케일 업/아웃을 타깃으로 하는 공격을 방어할 수 있습니다. 특히 오토 스케일에는 자동으로 늘어나는 최대 범위를 지정할 수 있는 기능이 있어, 고성능을 제공하기 위한 가장 적합한 사이즈를 분석하여 지속적으로 관리하는 노력이 필요합니다.

# 서버 없이 함수(Function)로 서비스를 구현하는 FaaS(Function as a Service)

FaaS(Function as a Service)는 클라우드 환경에서 사용자의 함수 호출만으로 성능을 보장하는 서비스로, 업무를 여러 개의 함수 단위로 분할하여 개발하고 클라우드에 등록된 함수가 실행된 횟수나 시간에 따라 비용을 지불하는 서비스입니다. FaaS는 주기적으로 실행되는 기능을 함수로 구현하거나 웹 요청을 처리할 수 있습니다.

서버에서 처리하는 기능은 클라우드 기반 서비스로 처리하기 때문에 서버 기능에 대한 별도 개발 없이도 개발자는 애플리케이션 개발에만 집중할 수 있어 개발 생산성을 향상시킬 수 있습니다. 서버 운영과 관리에 대한 책임을 클라우드 서비스 제공자가 담당하기 때문에 서버리스(Serverless)라고도 부릅니다.

사용자 TLS 클라우드 환경 퍼블릭 서브넷 이벤트 트리거 API Gateway 보호 보안테스트 사용자 관랴 미대상 FaaS(Function as a Service) 구간 함수 등록 개발자 시큐어 코딩
안전한 함수기반 서비스 구성

FaaS는 필요한 시점에만 이벤트에 따라 실행되는 용도로 사용되기 때문에 비용 효율적입니다. FaaS(Function as a Service)를 통해 성능이 보장된 아키텍처에서 보안 고려 사항은 함수에 대한 시큐어코딩과 API Gateway에 대한 모니터링입니다.
FaaS에서는 해당 서비스가 항상 실행 중인 것이 아니라 호출할 때만 실행되기 때문에, 충분한 테스트 과정이 없다면 소스코드 상 취약점(인증 누락, 취약한 소스코드 사용, API 인증 키나 인증서 등을 코드 저장소에 평문으로 저장 등)이 포함될 수 있습니다. 보안 요건을 정의할 때 중요한 기능을 수행하는 함수의 경우에는 호출 시 허가된 사용자인지 인증하는 로직과 민감한 정보를 호출할 때 암호화 또는 복호화에 대한 권한 관리 기능이 포함되어야 합니다.

또한 API Gateway를 통해 사용자의 요청을 처리하기 때문에 API Gateway를 외부 공격으로부터 보호하기 위한 관제나 모니터링도 필요합니다. 함수 호출 URL로 DDoS와 같은 공격이 발생할 때, 많은 비용이 발생할 수 있으므로 함수를 호출할 수 있는 IP 대역을 제한하는 방법도 고려해야 합니다. 특히 클라우드 서비스 제공자에 따라 함수에서 접근 가능한 클라우드 자원이나 함수로 구현할 수 있는 기능이 다르기 때문에 여러 가지 제약 사항도 검토해야 합니다.

클라우드 서비스는 자원 증설이나 개발 시간 단축 등을 통해 유연성을 확보하고 성능을 향상시킬 수 있습니다. 편리한 기능을 제공하는 만큼 악용될 경우 비용이나 서비스에 큰 피해가 발생될 수 있습니다. 따라서 설정 오류를 방지하기 위한 권한 관리와 자원 사용에 대한 모니터링 등의 보안 요소가 필수입니다.

다음 시간에는 데이터 안전성이 고려된 클라우드 보안 아키텍처에 대해서 살펴보겠습니다.

+ 클라우드 보안 입문서를 소개합니다! <클라우드 x 보안 실무 가이드> 저자 인터뷰
+ 언제 어디서나 마음대로 사용하는 클라우드
+ 클라우드 서비스를 선택하는 방법 ‘클라우드의 유형과 서비스 종류 알아보기’
+ 클라우드 서비스의 장·단점과 국내외 시장 동향
+ 클라우드 환경의 속성과 보안 특수성
+ 클라우드 환경의 공통 보안 서비스와 네트워크 보안 서비스
+ 클라우드 환경 내 컴퓨팅 자원과 애플리케이션 자원의 보안 서비스
+ 콘텐츠 보안과 클라우드 보안운영 서비스
+ 가용성 측면의 클라우드 보안 아키텍처

출처: 클라우드 x 보안 실무 가이드(황치하·양지언 지음)

삼성SDS 소셜 크리에이터 황치하 (Senior Engineer)

이 글이 좋으셨다면 구독&좋아요

여러분의 “구독”과 “좋아요”는
저자에게 큰 힘이 됩니다.

subscribe

구독하기

subscribe

공유하기