현장에서 발생하는 클라우드 보안 이슈와 해결 방법

클라우드 환경은 기존 온 프레미스(on-premise) 환경과 비교해 보았을 때 상대적으로 사용 경험과 관련한 레퍼런스(reference)가 부족해 보안 이슈에 처하게 되는 상황이 더 많이 발생할 수 있는데요. 이번 시간에는 클라우드 환경에서 발생할 수 있는 보안 이슈를 3 가지 관점에서 살펴보고 각 사례별 문제 해결 방향에 대해서 알아보겠습니다.

# 현장에서 발생하는 클라우드 보안 이슈

클라우드 서비스를 사용하는 환경에서 발생하는 보안 이슈는 크게 3가지 유형으로 구분할 수 있습니다. 첫 번째는 클라우드 서비스를 운영하는 과정에 발생하는 이슈이고, 두 번째는 클라우드 서비스의 현황을 관리하는 과정에 발생하는 이슈입니다. 마지막은 클라우드 구성에 존재하는 취약점으로 인한 이슈입니다. 거시적으로 보면 각 클라우드 보안 이슈는 원인을 식별한 후에 기술적이나 관리적으로 통제 방법을 적용하여 해결할 수 있는데요. 지금부터 간단한 사례를 살펴보면서 유형별 보안 이슈와 해결방안을 알아볼까요?

(3가지 관점의 이슈 상황) 클라우드 보안 운영 이슈 클라우드 현황 관리 이슈 클라우드 서비스 취약한 구성 클라우드 보안 거버넌스 운영 문제점 -> 해결방안 검토 / 기술적인 통제/ 관리적인 통제 해결방안 -> 해결방안 적용 /클라우드 모니터링 /담당자 교육.공지 -> 피드백
클라우드 보안 거버넌스 체계

첫 번째인 클라우드 서비스를 운영하는 과정에 발생하는 이슈는 보통 인력과 조직의 변화로 발생하는 상황인데요. 일반적으로 담당자의 업무가 변경되어 새로 배정되면, 할당받은 IP 주소를 방화벽에 등록하고 권한을 신청하는 일련의 프로세스 과정을 거치게 됩니다. 반면 이전 담당자는 다른 업무로 이동하기 때문에 사용하던 방화벽 등록과 사용 권한을 반납/회수하지 않고 바로 떠나버리는 경우가 많죠. 신규 담당자 입장에서는 행정적인 절차와 대기 시간이 소모되는 문제가 있고, 이전 담당자 입장에서는 이전 사용 권한 등이 그대로 남아있는 상태가 되는 것이죠. 즉, 이전 업무의 서버나 시스템을 접근할 수 있는 권한이 남아있게 되므로, 임의적으로 접근이 가능하다는 것이 문제인 것입니다. 이러한 이슈의 해결방안은 IP 기반이 아닌, 사용자 중심의 ID 기반으로 시스템과 보안의 통합된 처리가 가능한 계정관리 시스템/솔루션을 활용하는 것입니다. 업무가 변경될 때마다 업무를 따라가는 것이 아닌, 사람이 주체가 되는 체계로 권한처리가 이루어지는 방식입니다. 이는 클라우드 환경이 아닌 온프레미스 환경에서도 동일하게 발생하는 사례이기도 합니다.

두 번째인 클라우드 서비스를 관리하는 과정에 발생하는 이슈는 클라우드 서비스의 신청과 해지 프로세스가 미흡한 환경에서 발생하는 문제점입니다. 보통 테스트나 임시용으로 활용한 클라우드 서비스는 어느 순간 사용하지 않는 시점에서 무관심의 대상이 되는데요. 이는 권한이 오픈된 채로 그대로 방치될 가능성이 높습니다. 이 같은 경우는 전체 클라우드 서비스를 대상으로 사용 중인 서비스를 로깅(logging)하며, 사용률(usage) 수치를 통해 미사용으로 예측되는 서비스 등은 자동으로 비활성화시키는 정규 프로세스를 갖추도록 합니다. 즉, 활성화된 클라우드 서비스를 상시 모니터링하고 서비스 접속 이력을 검토하여 일괄 비활성화하는 방식으로 보안 수준을 향상할 수 있습니다.

마지막은 클라우드 서비스의 취약한 구성(아키텍처)으로 발생하는 이슈인데요. 위에서 언급한 두 가지 이슈에 비해 취약점을 스스로 인지하기 어려운 부분이 있습니다. 다음의 클라우드 구성도를 통해서 직관적으로 살펴볼까요?

# 블랙박스(black box) 같은 클라우드 구성

요즘은 각자가 입맛에 맞는 방식으로 클라우드 서비스를 활용하고 있는 시대입니다. 그러나 클라우드 서비스는 눈에 잘 보이지 않기 때문에 취약점이 있어도 인지하지 못하는 경우가 있는데요, 그중에 대표적인 사례를 들어보겠습니다.

최근에는 데이터 분석에 활용하려고 파이썬(Python) 언어 기반의 주피터 노트북(jupyter notebook) 소프트웨어를 설치하여 활용하는 경우가 있는데요. 해당 소프트웨어는 서버를 접속할 수 있는 터미널(terminal) 기능도 제공하기 때문에 주의가 필요합니다. 비록 주피터 노트북이 사용하는 기본 포트가 8888이라서 서버 접속과 전혀 관계가 없다고 생각할지 모르지만, 놀랍게도 서버를 접근할 수 있는 포트로 활용될 수 있습니다.

시스템 관리자 - 웹브라우저 http://12.34.56.78:8888 클라우드 환경 퍼블릭서브넷/중계지원 프라이빗 서브넷 - 서버 자원 01 /서버자원 02 /서버자원 N /데이터베이스 자원 01 /데이터베이스 자원 N
주피터 노트북을 통한 클라우드 접속 취약점

문제의 시작은 이렇습니다. 퍼블릭 서브넷에 있는 중계 서버(bastion-host)에는 데이터 분석 목적으로 주피터 노트북 소프트웨어를 설치하고, 악의적 사용자는 원격으로서 주피터 노트북을 접속하기 위해서 http://12.34.56.78:8888 로 접속합니다.(여기서 IP 주소 12.34.56.78는 중계 서버에 할당된 공인 IP 입니다.) 단순히 데이터 분석을 수행한다면 문제가 없겠지만, 주피터 노트북에는 서버에 접속하는 통로가 있기 때문에 사실상은 프라이빗 서브넷(private subnet)에 있는 모든 자원을 마음대로 접근할 수 있게 됩니다. 보안 관점에서 매우 취약한 상태가 되겠죠. 참고로 일반적인 중계 서버는 프라이빗 서브넷의 모든 서버를 접근하기 위한 용도로 존재하기 때문에, 프라이빗 서브넷 안에 생성한 클라우드 자원의 방화벽은 모두 오픈되어 있을 것입니다.

위와 같은 상황에서 주피터 노트북이 실행된 브라우저를 활용하여 아래 그림과 같이 서버에 접근할 수 있습니다. 이것은 기밀 데이터를 훔쳐보거나, 데이터를 은닉/삭제할 수 있는 보안 위협이 가능한 환경이죠. 따라서 이와 같은 경우는 IP 생성, DNS 등록, 방화벽 등록과 같은 업무를 처리하기 전, 명확하게 사용할 용도와 목적, 가능하면 활용할 소프트웨어(주피터 노트북 등)의 예기치 못한 기능까지 세밀하게 검토하고 권한을 부여하는 프로세스를 수립하는 것이 바람직합니다.

root@ip-10-10-10-10:-#pwd /home/ubuntu root@ip-10-1root@ip-10-10-10-10:-# 0-10-10:~# mkdir test
브라우저를 통한 서버 접속 화면

우리는 현재 사용하고 있는 클라우드 서비스와 구성된 자원 현황이 눈에 드러나지 않다는 비가시성을 기억해야 합니다. 따라서 최종적으로 전체 클라우드 서비스에 대한 시각화된 모니터링 체계와 관리자에 의해 검토해야 할 최소한의 프로세스를 정착시키는 것이 우선되어야 할 것입니다. 그래야만 방어할 수 있는 클라우드 보안 표면이 축소되고, 위협 수준을 낮출 수 있습니다. 지금까지 클라우드 서비스 현장에서 발생하는 클라우드 보안 이슈와 해결 방법에 대해 살펴봤습니다.

+ 클라우드 보안 입문서를 소개합니다! <클라우드 x 보안 실무 가이드> 저자 인터뷰
+ 언제 어디서나 마음대로 사용하는 클라우드
+ 클라우드 서비스를 선택하는 방법 ‘클라우드의 유형과 서비스 종류 알아보기’
+ 클라우드 서비스의 장·단점과 국내외 시장 동향
+ 클라우드 환경의 속성과 보안 특수성
+ 클라우드 환경의 공통 보안 서비스와 네트워크 보안 서비스
+ 클라우드 환경 내 컴퓨팅 자원과 애플리케이션 자원의 보안 서비스
+ 콘텐츠 보안과 클라우드 보안운영 서비스
+ 가용성 측면의 클라우드 보안 아키텍처
+ ‘성능과 보안의 양립점 찾기’ 성능 향상을 위한 클라우드 보안 아키텍처
+ 데이터 안전성을 위한 클라우드 보안 아키텍처
+ 비용 효율을 위한 클라우드 보안 아키텍처
+ DevOps 환경의 클라우드 보안 아키텍처
+ 파이썬을 활용한 클라우드 서비스 보안 관리
+ Ansible을 활용하여 클라우드 내 외부 침입 방어하기
+ 클라우드 서비스 규모에 따라 달라지는 보안 거버넌스


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

삼성SDS 소셜 크리에이터 양지언(Senior Engineer)
공유하기