정보 시스템 보안은 SW아키텍처부터 시작해야 한다.
정보 시스템 보안은 SW아키텍처부터 시작해야 한다.
최근 대형 보안사고의 근본원인이 시스템의 복잡성과 관리 부재, 특히 '관찰 가능성'의 위기에서 비롯됨을 지적하며, 보안이 단순 기능이 아닌 아키텍처의 문제임을 설명했다. 그동안 보안문제를 사고가 터지면 더 강력한 방화벽을 도입하거나 최신 보안 솔루션을 추가하는 것으로 해결하려고 했다. 그러나 이러한 접근은 이미 구조적 취약점을 안고 있는 시스템에 갑옷을 덧입히는 것과 같아 근본적인 해결책이 되기 어렵다. 게다가 시스템이 내포하고 있는 구조적인 보안의 결함은 해결할 수 없다. 때문에 요즘은 설계 단계에서부터 보안을 시스템의 디엔에이(DNA)에 각인 시키는 패러다임 전환을 고려하고 있다.
설계 단계부터 보안을 심다: 'Security by Design'
이러한 문제에 대응하기 위한 핵심 개념이 바로 ‘설계 기반 보안(Security by Design)’ 이다. 이는 개발이 거의 끝난 시점에 보안을 검토하는 전통 방식에서 벗어나, 소프트웨어(SW) 개발 생명주기(SDLC)의 가장 첫 단계인 아키텍처 설계 시점부터 보안을 핵심 요소로 통합하는 접근 방식이다. 시스템이 마주할 잠재적 위협을 예측하고 분석하는 위협 모델링을 수행하고, 필수적인 보안 요구사항을 정의하며, 안전한 아키텍처 패턴을 적용해, 시스템의 구조자체가 보안에 강건하고 회복탄력성을 갖추도록 해야 한다. 이러한 접근은 나중에 취약점을 수정하는 것보다 훨씬 비용 효율적이며, 시스템 근본 안정성을 높이는 가장 효과적인 방법이다. 모든 아키텍처는 구조 자체의 약점과 강점을 갖고 있다.
이는 “절대 신뢰하지 말고, 항상 검증하라 (Never trust, always verify)”는 원칙에 기반한 ‘제로 트러스트 (Zero Trust)’가 필요하다. 내부 네트워크는 안전하다고 가정하고 입구에서 외부 침입만 막는 방식은, 클라우드와 원격 근무가 보편화되고 마이크로서비스 아키텍처(MSA)처럼 시스템 내부가 복잡해진 오늘날 더는 유효하지 않다. 따라서 일단 내부망에 침투하면 내부 시스템 간 자유로운 이동이 가능해져 큰 피해로 이어지기 때문이다.
제로 트러스트 아키텍처는 네트워크 내외부를 막론하고 어떤 사용자나 서비스도 기본적으로 신뢰하지 않는다. 모든 접근 요청은 그것이 어디에서 오든 반드시 신원을 확인하고 권한을 검증 받아야 한다. 이를 위해 모든 사용자, 기기, 서비스에 대한 강력한 신원 인증, 각 주체에게 필요한 최소한의 권한만 부여하는 ‘최소 권한 원칙’ 적용, 네트워크를 잘게 쪼개 침해 사고 피해 확산을 막는 ‘마이크로세그멘테이션 (Micro-segmentation)’, 그리고 시스템 모든 활동과 트래픽을 지속해서 모니터링하고 분석하는 체계 등을 아키텍처에 반영해야 한다.
결국 회복탄력성은 근본적인 구조적 설계 문제이다.
세상에 100% 뚫리지 않는 방패는 없다. 중요한 것은 공격을 당하더라도 피해를 최소화하고, 신속하게 탐지하며, 빠르게 복구할 수 있는 ‘회복탄력성 (Resilience)’을 갖추는 일이다. 이러한 회복탄력성은 오직 SW의 구조에서부터 고려해야만 달성가능한 목표이다. 단순히 기능을 구현하는 것을 넘어, 시스템 잠재 위험을 예측하고 안전하고 신뢰할 수 있는 시스템 청사진을 그려야 한다. 보안은 더는 선택이 아닌, 시스템 품질과 가치를 결정하는 근본적인 아키텍처 문제이다.