클라우드 환경의 컴퓨팅 자원이란 사용자 요청을 이해하고 연산하는 서버(IaaS: Infrastructure as a Service)나 컨테이너 서비스(PaaS: Platform as a Service) 등으로 가상 머신(VM: virtual machine)을 생각해 볼 수 있습니다. 애플리케이션 자원은 비즈니스 로직이 포함된 소스코드, 데이터, API(Application Programming Interface) 함수 등이 포함된 서버 자원이나 서비스형 소프트웨어(SaaS: Software as a Service)를 떠올려 볼 수 있겠죠. 그렇다면 각각 다른 목적으로 존재하는 컴퓨팅 자원과 애플리케이션 자원을 악의적인 위협으로부터 안전하게 보호할 수 있는 방법은 무엇일까요?
오늘은 지난 시간에 이어 <클라우드 환경의 컴퓨팅 자원과 애플리케이션 자원의 보안 서비스>에 대해 알아보고 각각의 보안성 수준을 향상시킬 수 있는 기초적인 방법에 대해 알아보겠습니다.
클라우드 서비스에서 활용하는 대부분의 컴퓨팅 자원은 외부에 공개하지 않는 프라이빗 네트워크(Private Network, 내부망)에 배치하는 것이 일반적입니다. 그 이유는 인터넷 환경과 분리되고, 접근이 허용된 클라우드 자원 간 통신을 수행하여 외부로부터 위협을 방어하기 위한 건데요. 물론, 인터넷 환경에서 직접적인 접속이 필요할 수 있는 웹 서버나 로드 밸런서(L4, L7) 등의 자원은 퍼블릭 서브넷(Public Network, 외부망)에 위치할 수도 있습니다.
그렇다면 클라우드 환경 밖에 있는 우리는 IT 시스템을 구축하기 위해서 클라우드 자원에 접속해 ‘운영체제 환경 설정, 데이터 이관, 소프트웨어 설치, 애플리케이션 배포’ 등 여러 가지 서비스 설정을 반드시 수행해야 하는데요. 클라우드 바깥에 있는 우리는 인터넷 환경과 격리된 클라우드의 컴퓨팅 자원을 어떻게 접근할까요?
그것은 바로 중계 서버(Bastion-host, 배스천 호스트)라는 개념을 활용하는 것입니다. 중계 서버를 통해 내부망에 위치한 컴퓨팅 자원에 서버 관리자가 접근할 수 있고, 외부에서 공격하는 위협에 대한 노출을 막고 직접적인 접근 또한 방지할 수 있습니다. 즉, 외부에서 접근 가능한 퍼블릭 네트워크에는 중계 서버(Bastion-host)를 위치시키고, 중계 서버를 통해서 프라이빗 네트워크의 클라우드 자원에 접속할 수 있는 것이죠.
중계 서버는 클라우드 서버 자원과 컨테이너 자원, 관리형 서비스(Managed Service) 자원 등에도 폭넓게 적용 가능한 수동적인 보안 구축 방법입니다. 이는 클라우드 서비스 제공사에 의해서 구축한 서비스가 아니라, 사용자가 직접 클라우드 자원을 활용하여 구축할 수 있는 방법을 의미합니다.
무엇보다 중계 서버의 인바운드 방화벽 규칙(Inbound Firewall Rule, 인터넷에서 클라우드 환경으로 접근하는 경우의 허용하는 IP와 Port 규칙) 설정은 매우 중요합니다. 중계 서버에 접속 가능한 IP 주소는 우리가 인터넷 환경에서 사용하는 출발지 IP 주소(Source IP)만 설정해야 하는데요. 이는 퍼블릭 네트워크에 위치한 중계 서버에 임의적인 접근 가능성을 줄이고자 하는 것 입다. 즉, 클라우드 자원에 접속하기 위해서 사용하는 장비의 IP 주소가 12.34.56.78이라면 중계 서버의 방화벽 설정에서 해당 IP만 접속이 가능하도록 제약을 설정하는 것이죠. 이는 보안성 수준 향상과 직결되는 방법입니다.
그렇다면 IT 서비스의 핵심 정보가 포함된 애플리케이션 자원에 적용할 수 있는 기본적인 보안 서비스는 무엇이 있을까요?
클라우드 환경에서 구현하는 애플리케이션은 주로 웹 환경의 서비스를 제공하지만, 온 프레미스의 애플리케이션과는 다른 특징을 갖고 있습니다. 클라우드 서비스에서 제공하는 SaaS 서비스를 이용해 서비스를 만들 수 있고, 전통적인 웹 서버 없이 스토리지에 저장된 웹 페이지들이 함수를 통해 호출되는 방식으로 구현되기도 하는데요. 여기서 애플리케이션 로직이 포함된 소스 코드와 발생된 트랜잭션에 의해서 적재되고 변경되는 데이터, 내/외부 간의 상호 연동을 위한 인터페이스 프로그램 등에 해당하는 것을 통틀어 애플리케이션 자원이라고 정의합니다. 이러한 애플리케이션 자원은 기본적으로 웹 방화벽(WAF : Web Application Firewall) 서비스를 통해 보안성을 향상시킬 수 있습니다.
웹 방화벽은 애플리케이션 자원으로 전송되는 사용자 요청의 이상, 변조 여부 등을 판단하여 애플리케이션의 취약점 공격을 사전에 차단할 수 있는 것이죠. 웹 방화벽이 OSI 7계층 모델 중 7계층(응용 계층)에 해당되는 반면, 일반적으로 IP와 Port 기준으로 필터링을 수행하는 방화벽은 OSI 3,4계층에 해당됩니다. 이는 웹 방화벽이 방화벽보다 상위 계층에 위치하고 있고, 비즈니스 로직에 가까운 응용 단계에서 고차원적인 필터링을 수행함을 알 수 있을 텐데요. 즉, 전송되는 트래픽의 콘텐츠를 분석하여 차단 여부를 결정하게 됩니다.
요약해보면 클라우드 환경에서 인터넷망과 가장 가까운 곳에 웹 방화벽이 위치하고, 들어오거나 나가는 모든 네트워크 트래픽을 수신하여 사전에 정의된 규칙에 의해 검사를 수행합니다. 무엇보다 중요한 역할은 외부로부터 전송되는 사용자 요청 정보를 분석하여 악의적인 의도가 포함되어 있는지 판단하는 필터링을 거쳐, 정상적인 요청 정보라고 확인되면 클라우드 내부 네트워크로 통과시키는 것이죠. 전송되는 트래픽의 콘텐츠를 검사해서 트래픽을 허용하거나 차단할 수 있으니, 애플리케이션의 보안성 수준이 상당히 높아지겠죠?
다음 시간에는 내/외부로 노출되어선 안되는 소중한 데이터 <콘텐츠와 애플리케이션 보안 서비스>에 대해 살펴보겠습니다.