클라우드 보안의 기본 개념
클라우드 보안은 말 그대로 클라우드 환경에서 생성한 자원을 활용하는 사용자 입장에서 안전하게 정보시스템을 구축하고, IT 서비스를 제공하기 위한 방법이다.
클라우드라는 새로운 환경에서 일어날지도 모르는 외부의 악의적인 위협과 내부의 중요 정보 유출로부터 시스템을 지키기 위해, 다음과 같은 보안 대상과 보안 기술, 보안 서비스 측면 등을 고민하게 될 것이다.
- 어떤 자원에 대해서 보안 기술을 적용해야 할 것인가? - 보안 대상
- 적용할 수 있는 보안 기술은 어떤 것들이 있는가? - 보안 기술
- 비용만 지불하면 알아서 보안처리를 수행해 주는 서비스가 있는가? - 보안 서비스
- 외부의 위협을 방어하려면 무엇을 시작해야 하는가? - 보안 프로세스
- 처음부터 보안을 고려해서 클라우드를 잘 구축하고, 활용하는 방법이 있을까? - 보안 설계
이런 궁금증을 해결하기 위해서는 먼저 클라우드 보안이라는 당면 과제에 맞서기 위한 기초 공사로서 기본적인 개념을 확고히 이해해야 한다. 그런 뒤에, 클라우드 보안의 시작단계인 설계부터 차근차근 살펴보도록 하자.
1. 클라우드 속성과 필수 보안 요건
클라우드 환경의 특수성(제공된 자원에 대한 비용을 지불하고 사용) 때문에, 사용자가 직접 보안을 고려해야 한다고는 생각하지 못할 수 있다. 그러나 바로 그런 특성으로 인해 기존 온프레미스 환경에서 고려하지 않았던 부분을 고민해야 하기도 하며, 반대로 고민하던 부분이 클라우드 서비스 제공자의 관리 영역이 되어 고려사항에서 제외되기도 한다.
그러므로 클라우드의 속성을 이해하고 클라우드 환경에서 추가로 고민해야 하는 보안영역을 유추해 볼 필요가 있다.
클라우드 보안을 실질적으로 수행하기 전에, 기본적으로 알고 있어야 하는 클라우드의 주요 속성을 통해 클라우드 환경의 필수 보안 요건에 대해서 고민해 보도록 하자.
클라우드 환경의 주요 속성은 크게 멀티테넌시(Multi-Tenancy), 접근성(Accessibility), 탄력성(Elasticity)으로 구분할 수 있다. 즉, 다수 사용자가 자원을 공유해서 사용하는 멀티테넌시, 누구나 쉽게 자원을 사용할 수 있는 접근성, 생성한 자원의 구조 변경이나 신규 자원의 생성/삭제가 쉽고 빠르게 이루어지는 탄력성이 있다.
클라우드 속성
멀티테넌시
멀티테넌시라는 용어를 직역하면 '다수의 세입자'라는 말로 설명할 수 있다.
클라우드 서비스 제공자는 다수의 클라우드 사용자들에게 자원을 제공하기 위해 가상화 기술을 사용해 물리적인 자원을 논리적으로 분할하고 격리하여 세입자들에게 나눠준다.
물론, 클라우드 제공자에 의해 만들어진 클라우드 공용 자원들은 세입자가 직접 관리하지 않고 사용만 한다.
클라우드 사용자는 비용을 지불하고 대여한 자원의 운영체제 파라미터를 수정하거나, 접속 계정을 생성하고 소프트웨어를 설치하는 등의 내부 작업만 수행하면 된다.
하지만 가상화 기술을 통한 논리적 통제는 클라우드 제공자의 보안 기술과 통제 수준에 따라 중요한 데이터가 노출되거나 의도치 않게 내가 사용하는 자원에 다른 사용자의 접근을 허용하는 '공유' 문제를 일으킬 수 있다.
특히 중요한 데이터가 저장될 경우, 데이터의 독립성에 의해 물리적인 위치를 정확히 알 수 없으므로 자원 접근에 대한 통제문제가 발생할 수 있다.
그렇기 때문에 데이터에 대한 암호화, 비밀키 또는 키 쌍 관리 보안과 접근 통로에 대한 모니터링 활동이 중요해지게 된다.
접근성
클라우드의 접근성이라는 속성은 공유라는 개념으로 이해할 수 있다. 즉, 클라우드 자원의 공유를 위해서 여러 사람이 인터넷을 통해 쉽게 접근할 수 있는 속성이다.
기존의 온프레미스 시스템에서는 내/외부에서 발생하는 접속통제를 위해 네트워크 관점에서 경계를 지정하고, 경계마다 방화벽과 같은 각종 보안장치를 설치하여 자원을 '통제'했다.
하지만, 클라우드 환경은 권한만 있다면 사용자가 언제 어디서든지 손쉽게 자원을 생성하고 방화벽과 같은 보안 기술을 적용할 수 있다. 그리고 클라우드 제공자 측에서 클라우드 자원을 다루기 위한 각종 API와 도구를 제공하므로 접속하는 디바이스, 소프트웨어, 운영체제의 종류도 매우 다양하다.
클라우드 환경의 접근성을 고려하지 않고 기존 레거시 시스템과 유사한 방법으로 겹겹이 쌓인 보안 장비를 구축한다면, 막대한 비용은 물론이고 클라우드만의 강점을 저해할 수 있으므로 초기 클라우드의 보안 설계가 매우 중요하다.
물론 클라우드의 접근성은 장소와 시간에 자유로운 만큼, 적합한 보안 수준을 고민해야 한다. 그렇다고 다수의 보안 장비로 자원을 둘러쌀 필요는 없다.
단지, 자원에 접근하고자 하는 주체가 누구인지 구분하고(식별), 허락된 사용자가 접근하는지를 확인해서(인증), 사용자가 수행하려는 작업의 권한을 확인하는 과정(인가)이 명확하면 된다. 또한, 사용자가 수행하는 모든 일을 기록하고(로깅), 나중에 문제가 없는지 검토하는 과정(감사)을 포함하여 클라우드 환경에서의 보안 설계 방안을 수립할 수 있다.
인증(Authentication) vs 인가(Authorization): 인증은 사용자가 접근이 가능한 사용자인지를 확인하는 과정이며, 인가는 사용자가 수행하고자 하는 작업이 허락된 작업인지를 확인하는 과정
탄력성
기존의 온프레미스 환경의 보안 항목을 설계할 때 가장 먼저 해야 할 일은, 관리 대상 중 핵심 자원을 파악하는 일이다. 한번 구축한 서버와 데이터베이스, 스토리지, 네트워크 등의 자원 구성은 쉽게 변경되지 않고 수년에서 수십 년까지 장기간 유지될 수 있다.
따라서 이미 구축되어 변경 없는 자원들은 정기적으로 현황을 관리하고 보안관리를 수행할 수 있다.
하지만, 클라우드 환경에서의 자원들은 유연하게 변경되고, 빠르게 생성되거나 삭제될 수 있다.
이런 클라우드 환경의 속성이 바로 탄력성이다. 다른 용어로 변동성이라고도 말할 수 있다.
즉, 클라우드 환경에서는 자원 사양이 증설되는 스케일 업, 자원의 사양이 축소하는 스케일 다운, 동일한 자원이 추가로 생성되는 스케일 아웃, 동일한 그룹 중에 하나의 자원을 삭제하는 스케일 인의 작업이 자동으로 빈번하게 발생한다.
사용자는 오늘과 내일의 자원 현황이 다르고, 1시간 전과 후의 자원 현황이 달라지는 것을 경험하게 될 것이다. 또한 이런 클라우드 환경의 탄력성으로 인해 무분별한 자원 증설이 발생할 수 있다.
의도치 않은 비용 발생을 사전에 대응하기 위해서는 자원의 생성과 폐기, 변경에 대한 모니터링과 자동화를 기반으로 한 보안 설계와 보안점검을 고민해 볼 필요가 있다.
클라우드 필수 보안 요건: 책임 추적성(Accountability)
3가지 클라우드 속성인 멀티테넌시와 접근성, 탄력성에 대해 알아보았다.
클라우드 환경이 가진 속성으로 인해 외부에서의 악의적인 자원 변경, 내부의 중요 데이터 유출, 허가되지 않은 사용자의 접속 등, 여러 보안위험이 커졌다.
따라서 클라우드 자원을 사용하기 전에 '식별', '인증', '인가' 활동을, 클라우드 자원을 사용하는 도중에는 '로깅', '모니터링' 활동을, 클라우드 자원을 사용한 이후에는 활동 이력에 대한 '감사' 활동을 수행하여 클라우드 보안의 특수성인 책임 추적성을 만족시켜야 한다.
여기서 책임 추적성이란 고유하게 식별된 사용자의 행위를 기록하여 수행한 행위에 대한 책임을 부여하고, 사용자 활동의 추적을 위하여 감사 로그와 모니터링을 하는 활동이다.
책임 추적성의 관점에서 자원을 활용하는 클라우드 사용자 또는 개발자, 고객 등의 모든 접속자에 대해, 각자 수행한 행위에 대한 책임을 부여하기 위하여 크게 6가지 활동이 필요하다.
클라우드는 시간과 장소에 구분 없이 개방되고 공유되어 누구나 참여 가능한 환경이기 때문에 사용자 식별, 인증, 인가, 로깅, 감사, 모니터링 활동이 항상 고려되어야 한다. 6가지 활동에 대해 알아보자.
식별
클라우드에 접속을 요청하는 주체(사용자 또는 서버 등)가 스스로를 증명하기 위해 자신이 누구인지 식별 가능한 정보를 입력하는 활동
예시) 사용자 ID, 로그인 ID, 계정번호, 이메일 주소 등의 정보 입력
인증
식별을 통한 사용자 정보 외에 본인을 증명할 수 있는 정보를 입력하여, 이를 토대로 허가된 사용자인지를 확인하는 신원 검증 활동
예시) 사용자의 계정 비밀번호 또는 PIN, 토큰, 스마트카드, 생체인증을 입력하는 과정을 통해 로그인을 수행
인가
인증된 사용자에게 필요한 행위를 수행할 수 있도록 권한을 부여하는 활동
주체는 리소스, 자원에 접근 및 필요한 행위를 할 수 있음
로깅
애플리케이션 접속/행위 로그, 데이터 액세스 로그, 네트워크 통신 로그, 시스템 이벤트 로그, 관리자의 활동 로그 등 기록을 전자문서로 저장하는 행위
모니터링
시스템, 네트워크, 데이터, 사용자 등이 시스템에서 수행한 행위에 대해서 이상징후 분석을 수행하고 실시간으로 수집된 자원의 변경이나 현황정보를 대시보드 등으로 관리하는 활동
감사
감사 로그, 사용자 접속 로그 등 로그 파일이나 활동 정보를 검토하여 보안기준에 따라 계정과 권한 관리 여부를 확인하고 위험요소를 관리할 수 있도록 보안 수준을 관리하는 활동
클라우드는 블랙박스 영역에서 동작하는 시스템이 어떤 물리적인 하드웨어 특성을 가졌는지, 물리적으로 어디에 위치하는지 등을 알기 어렵다.
이용 중인 자원과 관련된 모든 행위를 기록하고, 점검하고, 통제하고, 추적해야 보안사고와 같은 특이사항이 발생했을 때 책임과 현상을 추적할 수 있다.
따라서 보안 3요소(기밀성, 무결성, 가용성) + '책임 추적성'이라는 요소를 포함하여 클라우드 보안 4요소를 고민해야 한다.
2. 클라우드 보안 모델
성벽형/경계형 vs 공항형 보안 모델
기존의 시스템 보안은 일명 성벽형 보안 모델 또는 경계형 보안 모델(Permeter Security Model)로 부를 수 있다. 외부의 침입을 막기 위해 방화벽을 이용하여 접속 가능한 경로를 모두 제한하고, 외부로부터의 네트워크망을 분리해서 통신을 통제하는 모델이다.
마치 왕궁의 자산을 보호하기 위해서 높은 성을 쌓아 올린 철옹성에 비유할 수 있다.
시스템 보안 담당자는 내부의 핵심자원을 식별하고, 외부와 분리하여 접근 통제를 수행하며, 공격 위협에 대해 보안장비나 솔루션을 적용하여 보안을 강화한다.
반면, 클라우드 환경에서의 시스템 보안은 모바일 디바이스나 각기 다른 장소에서 클라우드의 자원을 사용하는 경우가 대부분이므로, 경계가 더 이상 물리적 위치에 한정되지 않는다. 그래서 일명 공항형 보안 모델로 부르는 형태로 보안성을 확보한다.
클라우드의 특징상 빠른 속도와 손쉬운 접속환경을 제공하는 접근성으로 인해 빠르게 자원이 생성되고 삭제된다. 따라서 기존 보안 시스템으로 클라우드의 변화 속도를 따라가기 어렵다. 특히 핵심자산을 식별하기 전에 자산현황은 이미 변경된다.
그리고 클라우드 환경은 다수의 사용자가 자원을 공유하는 멀티테넌시 형태의 서비스를 사용하므로, 다수를 위한 경계형 보안구조를 구축하게 되면 막대한 비용이 들어갈 것이다. 그러므로 클라우드 환경에 접속할 때 사용자 인증을 강화하고, 클라우드에서 전송하는 데이터들에 대해서 책임 추적성을 위한 보안 기능을 설정하는 공항형 보안 모델 수립이 보다 효율적이다. 클라우드 환경의 접점에 대해서 인바운드와 아웃바운드의 양방향에 대한 내/외부 검사를 수행하고, 로깅과 모니터링 등을 구현하여 책임 추적성을 확보할 수 있다.
이처럼 온프레미스 환경에서의 보안이 여러 계층의 단계적인 보안통제를 적용하였다면, 클라우드 환경에서는 입구와 출구에서 외부 위협과 정보 유출을 통제하고 내부에서는 자유롭게 사용할 수 있도록 허용하되 책임 추적성을 위한 로깅을 강화하는 방식으로 보안 설계를 수행하는 것이 바람직하다.
제로 트러스트 보안 모델(Zero Trust Security Model)
최근에는 클라우드 서비스 활용의 대중화로 신규 서비스를 클라우드 환경에서 런칭하거나, 기존의 시스템을 클라우드 환경으로 이전하려는 움직임이 활발해지고 있다. 그러나 클라우드와 같은 새로운 환경에서는 시스템 보안, 데이터 보안, 애플리케이션 보안 등의 관련된 기술 투자에도 불가하고 보안사고가 급증하는 것도 사실이다.
이에 기존의 보안방식에서 탈피하고, 보안에 대한 마음가짐과 대응전략을 새롭게 수립해야 한다는 측면에서 제로 트러스트 보안 모델이 화두가 되고 있다.
기존 보안은 외부에서의 위협을 방어하는 데에 초점을 둔 반면, 제로 트러스트 보안 모델이 클라우드 환경에 적용된 것은 내/외부의 구분 없이 모든 영역을 위협의 대상으로 삼고 있다.
이렇게 보안위협의 범위가 달라지면 보안 경계 수준도 차이가 나기 마련이다. 기존에는 내부와 외부의 경계지점에 보안요소를 고려하나, 제로 트러스트 모델은 모든 보안영역을 세밀화하여 각각의 데이터마다 보안요소를 설정하는 방법을 취하고 있다.
제로 트러스트 적용을 위한 절차
- 태도: '세상에 믿을 사람은 없다'라는 기본 태도로 누구도 근거 없이 신뢰하지 않아야 한다.
- 신뢰: 신원이 파악되기 전까지는 모든 클라우드 자원 접속은 차단한다.
적용하기 위한 전략
- 1차 차단: 클라우드 환경으로 접근하기 전은 신원이 파악되기 이전이므로, 네트워크를 통한 모든 접속을 차단한다.
- 2차 양방향 식별: 접근 주체의 유형을 구분하지 않고, 해당 접근 주체가 누구인지 파악한다.
- 3차 인증: 자원에 접근하려는 주체가 허가된 주체가 맞는지, 입력한 인증 정보가 정확한지를 확인한다.
- 4차 인가: 접근 주체가 접근하려는 클라우드 자원에 대해 권한을 부여받은 것이 맞는지, 해당 클라우드 자원은 안전하게 보안 구성이 된 상태인지를 검사한 후, 정상 권한이 확인되면 접근을 허가한다.
- 5차 접근: 접근 주체는 클라우드 환경에서 자유롭게 자원을 사용한다.