기고 | 문제는 클라우드가 아니라 '안전한 애플리케이션'이다
Mike Kail | Network World
[2017.02.02.]
현재 거의 모든 기업에서 전략 우선순위 중 하나가 클라우드 도입이 됐다. 그러나 클라우드 보안에 대한 두려움, 불확실성, 의심은 여전하다. 하지만 상당수는 근거가 없다. 개인적인 경험에 비춰보면, 데이터가 위치한 장소에 상관없이 대부분 보안 문제의 근원은 코딩 오류와 애플리케이션 취약점에 있었다. 클라우드의 경우, 이렇게 혼돈을 초래하는 부분을 지나쳐 애플리케이션 보안에 초점을 맞춰야 한다.
온프레미스(내부)와 클라우드 보안의 중요한 차이점은 하드웨어 어플라이언스로 보호할 수 있는 잘 구현된 보안 경계선이 없다는 것이다. 보안 부서는 하드웨어 정의 방식에서 벗어나, 소프트웨어 정의 솔루션을 도입해 적용해야 한다. 그리고 클라우드가 이런 방향으로 유도하는 유일한 동인은 아니다. 빠른 속도로 확산하는 '모바일 퍼스트'도 주요 동인 중 하나다.
취약한 애플리케이션 보안이 취약점 노출에 어떤 영향을 주는지 잘 알려져 있다. OWASP(Open Web Application Security Project) 연구를 살펴보면, 몇 년 동안 애플리케이션 보안 취약점이 계속해서 위협이 됐다는 사실을 확인할 수 있다. 지난 10년간 OWASP의 상위 10대 애플리케이션 취약점이 거의 바뀌지 않았다. 방화벽 어플라이언스가 발전했지만, 보안 침해 사고가 경종을 울릴 정도로 증가하는 추세다.
경계선(방어선) 기법에 기반을 둔 보안 어플라이언스는 본질적으로 소프트웨어 솔루션만큼 유연하지 않다. WAF(Web Application Firewalls)가 레이어 7 검사 및 정책을 통해 보안 방어 상태를 개선하려 시도했다. 그러나 이는 동적이 아닌 정적인 방식이다. 따라서 적법한 트래픽을 차단하거나, 심한 경우 악성 트래픽을 통과시키는 긍정 오류를 발생시키는 때가 많다.
개발자 대 방어자
조직이 소프트웨어 정의 환경에서 애플리케이션 보안을 강화할 때 직면하는 가장 큰 도전 과제는 '데브옵스가 빠르게 확산하는 것'과 'CI/CD(Continuous Integration/Delivery)가 강조되고 있는 것'이다. 개발자가 자신에 낯선 방어자가 돼야 하는 것도 도전과제다.
개발자는 보안보다 속도를 우선시한다. 따라서 지속해서 빠르게 기능을 전달하고, 코드와 애플리케이션 보안 테스팅을 소프트웨어 개발 라이프사이클에 통합할 수 있는 보안 솔루션이 필요하다. 많은 이들은 보안 부서에 편견이 있다. 이들은 보안 부서를 기술 적용의 방해 요소, 적용이 끝난 후 취약점을 드러내 환경을 복잡하게 만드는 부서로 본다. 분명 협력적인 관계는 아니다. 개발자는 바로 잡아야 할 취약점이 있는 경우에만 관여한다. 나머지 경우의 스캐닝과 테스팅 프로세스는 일상 활동에 내포돼야 한다.
<중략>
• 구축(Building) -- 보안 코딩 프랙티스를 정착시키고, 오픈소스 구성 요소와 써드파티 라이브러리를 정기적으로 감사한다. 코딩한 언어에 기반을 둔 보안 베스트 프랙티스를 적용한다.
• 테스팅(Testing) – 정적 코드 분석(SAST)과 침입 테스트 같은 기술, 동료 간 코드 검토와 버그 바운티(버그 찾기 경쟁) 등 프로그램을 활용해, 개발 과정에 보안을 통합한다.
• 문제 해결(Remediating) -- 취약점 해결을 지속적인 프로세스로 만든다. 원인 분석 결과를 상세한 기록으로 유지하면 과거 취약점에 노출될 확률이 낮아진다.
• 위험 관리(Risk Management) -- 거버넌스, 매트릭스, 보고를 중시한다. 시간 경과와 함께 전체 SDLC를 모니터링 하는 것도 큰 도움이 된다.
<중략>
기사 상세 내용 보기_클릭