클라우드 환경의 9가지 보안 이슈와 안전한 클라우드를 위한 노력
최근 우리의 일상을 가장 많이 바꿔 놓은 기술을 하나만 꼽으라면 단연코 스마트폰을 중심으로 한 모바일 기술이라고 할 수 있을 것이다. 스마트폰 이전에는 전화가 통화 되고 문자메시지를 주고 받을 수 있으면 되는데 무슨 기능이 더 필요하지 라는 생각을 했다. 그러나, 스마트폰에 이미 익숙해진 사람들에게 전화와 문자만 되는 전화기는 지난 시대의 유물에 지나지 않는다. 스마트폰이 우리의 생활에 엄청난 영향을 미칠 수 있었던 요인은 무엇일까. CPU 등의 하드웨어 기술과 통신 기술의 발전을 들 수 있지만, 그 이면에는 클라우드의 발전이라는 또 하나의 축이 있다. 클라우드는 사용자들의 콘텐츠를 생산하고, 보관하고, 공유하고, 소비하는 활동들을 더욱 편리하게 할 수 있도록 해줌으로써 스마트폰의 가치를 한층 높여 주는 것이라 할 수 있다.클라우드는 스마트폰이라는 테두리 안에서만 가치가 있는 것이 아니라 테블릿 등의 모바일기기, 기존의 개인용 컴퓨터, 대용량 서버 등에 이르기까지 큰 변화를 이끌고 있다. 클라우드 기술이 있기 때문에 우리가 즐기는 콘텐츠와 우리가 사용하는 기기와 우리가 활용하는 서비스가 이동성을 갖게 되었다. 스마트폰을 둘러싼 모바일의 발전 때문에 클라우드가 발전할 수 있었지만, 클라우드의 발전이 있기 때문에 모바일의 발전이 견인되는 측면도 있으니 모바일과 클라우드는 서로 상생의 관계를 맺고 있다 할 수도 있겠다.
클라우드는 점점 더 우리 일상의 깊숙한 곳으로 파고들고 있고 우리는 그 변화에 익숙해져가고 있다. 클라우드의 보편화는 개인의 측면에서만 그치지 않고 기업이나 정부 등에서도 뚜렷하게 나타나고 있다. 콘텐츠와 기기에 이동성을 더 높여주는 클라우드는 안전성과 보안성에 문제가 없는 것일까. 클라우드의 개념이 태동하고 본격적으로 기술과 서비스들의 상용화되면서 보안에 대해서 걱정하는 전문가들이 많이 있었다. CSA(Cloud Security Alliance)는 클라우드에 대한 보안의 인식을 높이고 지식을 공유하기 위해 2008년에 만들어진 단체이다. 최근 CSA는 클라우드 환경에서 발생하는 9가지의 보안 위협을 발표하였다. (“The Notorious Nine: Cloud Computing Top Threats in 2013”, 2013.02)
1. Data Breaches (데이터 유출)
클라우드를 기업의 업무시스템으로 사용하는 기업에게 가장 두려운 일은 데이터와 정보가 유출되는 것이다. 클라우드는 기존의 서버 기반 환경보다 네트워크 접근성을 확대하기 때문에 해커들에게는 그만큼 다양한 공격 경로가 열려있는 것을 의미한다. 퍼블릭 클라우드(Public Cloud)의 경우에는 여러 기업들이 클라우드를 사용하기 때문에 특정 기업의 클라우드 서비스에 대한 공격이 이루어졌을 때 동일한 클라우드를 이용하는 다른 기업의 클라우드 서비스에도 동일한 공격이 이루어질 가능성이 매우 높다. 클라우드의 데이터 저장과 관리는 이러한 관점의 고려가 이루어져야 하며, 그 해결책은 암호화, 키 관리, 인증과 접근제어가 될 것이다.
2. Data Loss (데이터 소실)
클라우드의 장점은 언제, 어디서나 클라우드에 접속하면 원하는 데이터에 접근할 수 있다는 것이다. 특정 데이터는 여러 채널과 경로를 통해서 여러 사람이 동시에 접속할 수 있다. 이러한 편리함이 갖는 장점은 엄청나지만, 누군가 삭제를 하거나 수정해버린 데이터는 영원한 시간의 저편으로 사라져 버린다. 삭제나 수정은 새로운 데이터로의 갱신으로 이해할 수도 있지만, 기존 데이터의 소실로도 이해할 수 있으며 데이터의 소실은 해커나 어느 성실한 직원의 성실한 업무 수행 과정에서 고의적으로 행해질 수도 있지만, 실수에 의해서 우연히 발생할 수도 있다. 데이터 소실을 막을 수 있는 방법은 데이터를 수정하거나 삭제할 수 있는 권한을 잘 관리하는 것이고, 수정과 삭제에 대해서 이전 데이터를 백업해두는 것 뿐이다. 앞서 이야기한 데이터 유출(Data Breaches)는 데이터를 읽는(reading) 과정에서 발생하지만, 데이터 소실은 데이터를 쓰는(wrighting) 과정에서 발생한다.
3. Account Hijacking / Service Hijacking (계정 탈취 / 서비스 탈취)
사용자가 클라우드 서비스를 이용할 때 가장 기본이 되는 것은 계정정보이다. 사용자의 계정정보에 기반하여 클라우드 서비스는 사용자를 인식하고 사용자가 원하는 정보를 제공해주기 때문이다. 사용자의 계정정보가 탈취되면 어떤 일이 일어날지를 상상하는 것은 쉬운 일이다. 특정 기업의 기밀 정보를 엿볼 수 있고, 관리자로서 다른 사용자의 계정을 삭제하거나 기업의 클라우드 서비스 계약 정보를 변경할 수도 있다. 2010년 4월, XSS(Cross-Site Scripting) 취약성을 활용하여 계정정보를 탈취한 공격은 이러한 위협의 대표적인 사례라 할 수 있다. Two-factor 인증 등으로 인증을 강화하거나 사용자의 활동을 모니터링하는 것이 이에 대처할 수 있는 방법이다.
4. Insecure APIs (안전하지 않은 API)
클라우드 서비스는 서비스의 사용자 이용 뿐만 아니라 관리자의 서비스 운영 및 관리를 위해 다양한 API를 제공하고 있다. 안전하지 않은 API의 취약점을 통해서 사용자의 인증을 우회한다거나 정상적인 경로로는 접근할 수 없는 데이터에 대해서 접근할 수 있는 등의 보안 사고가 발생할 수 있다. 이 취약점은 클라우드를 제공하는 사업자가 안전한 API를 설계하고 제공하여야 하는 것이지만, 운영의 과정에서 응용계층의 보안(Application Security)를 채용함으로써 최소한의 보안을 확보할 수 있다. 클라우드 환경을 위한 클라우드 웹방화벽(Web Application Firewall)은 대표적인 방안이다.
5. Denial of Service (DoS; 서비스거부)
서비스 거부 공격은 서버의 자원을 소진함으로써 서비스의 가용성(availability)를 없애는 형태의 공격으로서 클라우드 환경에서도 여전히 유요한 공격법이다. 클라우드 서비스에서는 클라우드를 구성하는 하드웨어 자원의 가용성을 소진하고 나아가서는 클라우드 서비스를 이용하는 기업의 업무가 원활히 이루어지는 것을 방해하게 된다.
6. Malicious Insiders (악의적인 내부 사용)
클라우드에 기반한 서비스는 많은 사용자들이 동시에 사용하도록 운영되는 것이 보통이기 때문에 기업의 클라우드 서비스는 기업 내의 사용자 뿐만 아니라 협력사의 사용자들도 사용하는 경우가 많다. 퇴사한 직원의 계정이 즉시 삭제되지 않았거나, 직무의 조정으로 인해 접근할 수 없어야 하는 권한이 아직 유효한 것을 악용하는 것이 대표적인 사례이다. 악의적인 내부 사용을 막기 위해서는 사용자의 계정과 권한에 대해서 지속적인 관리와 감사가 이루어져야 한다. 특정한 사용자에게 많은 권한이 집중되는 것을 막기 위해 권한을 분산시키는 것도 좋은 방법이다.
7. Abuse of Cloud Services (클라우드 서비스의 남용)
클라우드의 장점은 작은 기업이나 개인들도 대용량의 전산 자원을 손쉽게 구매하거나 이용할 수 있다는 점이다. 전산자원은 일반 기업이 원활하게 업무를 수행하는데 유용한 도구이기도 하지만, 해커들에게도 유용한 도구를 제공해줄 수 있다. 암호를 해독하기 위해서, 혹은 사용자의 패스워드를 얻기 위해 클라우드의 전산자원을 이용하는 것은 대표적 예라 할 수 있다. 클라우드 환경에서는 가상화 기술을 이용하여 여러 개의 가상머신이 동시에 동작하게 된다. 달리 말하면, 서로 다른 기업이나 개인이 사용하는 가상머신이 가상화를 통해 연결될 수 있다는 뜻이기도 하다. 해커가 가상머신을 이용하여 다른 가상머신을 공격하는 기법에 대한 연구들도 최근에 발표되고 있다. 클라우드 서비스의 남용을 막는 것은 쉬운 일이 아니다. 기술적인 방법보다는 클라우드 이용자에 대한 지속적인 모니터링과 운영 정책의 적용이 방법이라 할 수 있다.
8. Insufficient Due Diligence (클라우드 서비스의 이해 부족)
기존의 서버 기반 환경에서 가상화를 채용한 클라우드 기반으로 전환하는 것은 자원의 운영 효율성과 가용성의 증대에서 매력적으로 보일 수 있다. 그러나, 기존의 업무시스템을 가상화하여 가상머신으로 동작하게 되면 하드웨어나 네트워크를 직접적으로 제어하는 등의 일은 불가능해진다. 업무시스템이 클라우드의 가상화 환경에서 안전성을 충분히 확보할 수 있는지의 여부를 미리 충분하게 검토할 필요가 있다. 클라우드 환경에 대한 이해의 부족은 가상화된 후의 시스템에 치명적인 취약점을 야기시킬 수 있기 때문이다.
9. Shared Technology Vulnerabilities (공유기술의 취약점)
클라우드 기술은 하나의 기술로 구성되는 것이 아니라 그 내부에는 엄청나게 많은 요소기술들이 존재하고 있다. 하드웨어의 측면에도 CPU, 메모리, 저장장치 등의 많은 요소들이 대량으로 서로 연결되어 있다. 여러 전산 자원이 여러 요소기술들의 조합에 의해서 IaaS, PaaS, SaaS 등의 서비스 모델 형태로 제공되는 것이 클라우드다. 이러한 점으로 인해서 내부의 요소기술이나 하드웨어에서 발견되는 취약점이 클라우드 전체의 취약점으로 연결될 수 있다.
위의 문제들은 클라우드이기 때문에 추가로 고려해야하는 문제들에 대해서 논한 것이지, 기존의 다양한 보안 문제들로부터 클라우드 환경이 자유롭다는 뜻은 아니다. 안전한 클라우드 환경을 확보하는 것은 클라우드 제공자와 클라우드를 이용하려는 기업의 공동 인식이 있어야 한다. 클라우드를 채용하려는 기업은 클라우드를 도입함으로써 보안이 더 강화될 수 있을 것이라 믿을 수도 있지만, 그러한 믿음은 옳은 것일 수도 있지만 환상일 수도 있다. eBay의 Chief Security Architect인Subra Kumaraswamy는 클라우드 이용 기업의 관점과 보안의 측면에서 클라우드 제공자와 클라우드 이용 기업의 역할을 잘 정의하고 있다.
안전하고 신뢰할 수 있는 클라우드 환경 구축을 위한 보안 기술의 보다 상세한 구성은 CSA의 Reference Architecture를 참고하길 바란다.
시장과 기술 분석 분야의 전문 기업인 Gartner가 10여년 동안 클라우드를 주목할 기술에 선정하고 있는 것을 언급하지 않더라도 클라우드 기술은 우리의 개인 삶과 기업의 활동에 큰 영향을 미치고 있다. 기업의 업무를 위해 클라우드를 활용하고 클라우드 환경에서 업무시스템을 구축하는 것은 시스템의 가용성과 효율성을 높이는데 큰 도움이 될 것이다. 그러나, 잊지 말아야 할 것이 있다. 클라우드에서 업무시스템을 구축하였고 해당 클라우드가 안전성을 보장한다고 해서 클라우드의 업무시스템의 안전성이 보장되는 것은 아니라는 것이다. 클라우드로의 전이는 서버 중심의 시스템을 서비스 기반의 시스템으로 옮겨가는 것을 의미하고, 클라우드는 서비스 기반의 시스템에서 서비스가 존재할 수 있도록 하부를 제공해주는 것에 지나지 않는다. 클라우드로의 전이는 분명 큰 이점을 많이 가지게 되지만 새로운 보안의 위협도 생겨나는 만큼 클라우드 시대에 걸맞는 보안의 시간이 필요하다.