개요
DevSecOps는 개발, 보안, 운영을 나타내는 말로서, 전체 IT 라이프사이클에 걸쳐 보안을 공동의 가치로 통합하는 문화, 자동화 및 플랫폼 설계에 대한 접근 방식입니다.
DevSecOps vs. DevOps
DevOps는 단순히 개발팀 및 운영팀만을 위한 것이 아닙니다. DevOps 접근 방식의 민첩성과 대응 능력을 최대한 활용하려면 IT 보안 팀이 애플리케이션의 전체 라이프사이클에서 통합된 역할을 해야 합니다.
그 이유는 무엇일까요? 과거에 보안 역할은 개발 최종 단계에 있는 특정 팀에 분리되어 있었습니다. 개발 주기가 몇 달 또는 몇 년씩 지속되는 경우에는 문제가 되지 않았으나, 지금은 상황이 달라졌습니다. 효과적인 DevOps는 개발 주기를 단축하고 개발 빈도를 높일 수 있지만(몇 주 또는 며칠 단위), 오래된 보안 프랙티스로는 가장 효율적인 DevOps 이니셔티브조차 무용지물로 만들 수 있습니다.
협업을 중시하는 DevOps 프레임워크에서 보안은 공동의 책임이며 처음부터 통합되어야 합니다. 이는 매우 중요한 개념이기 때문에 DevOps 이니셔티브에 보안 기반을 구축할 필요가 있다는 사실을 강조하기 위해 “DevSecOps”라는 용어까지 등장하게 되었습니다.
DevSecOps는 처음부터 애플리케이션과 인프라 보안을 고려해야 함을 의미합니다. 이는 또한 DevOps 워크플로우가 느려지지 않도록 일부 보안 게이트를 자동화해야 한다는 의미이기도 합니다. 보안 기능을 갖춘 통합 개발 환경(Integrated Development Environment, IDE) 사용에 동의하는 등 지속적인 보안 통합을 위한 적합한 툴을 선택하면 이러한 목표 달성에 도움이 될 수 있습니다. 그러나 효과적인 DevOps 보안을 위해서는 단순히 새로운 툴만으로는 부족합니다. 보안 팀의 작업을 더 빠르게 통합하는 DevOps의 문화적 변화가 필요합니다.
DevOps 보안 빌트인
“DevOps” 또는 “DevSecOps”라는 명칭에 상관없이, 이를 전체 애플리케이션 라이프사이클의 핵심적인 부분으로 보안에 포함하는 것이 이상적인 것에는 변함이 없습니다. DevSecOps는 애플리케이션과 데이터 주변 경계 기능이 아닌, 빌트인 보안을 말합니다. 보안이 개발 파이프라인의 마지막 단계에 적용되는 경우, DevOps를 도입하는 조직은 다시 긴 개발 주기를 거치게 되어, 본래 피하고자 했던 상황에 직면할 수 있습니다.
DevSecOps는 정보 보안을 기본으로 제공해 보안 자동화 계획을 세울 수 있도록 DevOps 이니셔티브 초기에 보안 팀 및 파트너를 참여시킬 필요가 있음을 강조합니다. 또한 개발자가 보안을 염두에 두고 코딩해야 할 필요성을 강조하기도 하는데, 이 과정에서 보안 팀은 내부자 위협 또는 잠재적 맬웨어와 같은 알려진 위협에 대한 가시성 정보를 공유하고 피드백 및 인사이트를 제공해야 합니다. 여기에는 개발자를 위한 새로운 보안 교육이 포함될 수도 있습니다. 기존의 애플리케이션 개발에서는 이 점이 간과되기도 했기 때문입니다.
빌트인 보안은 실제로 어떤 모습일까요? 우수한 DevSecOps 전략은 위험 허용 범위를 결정하고 위험 편익 분석을 수행하는 것입니다. 특정 애플리케이션 내에 어느 정도의 보안 제어 기능이 필요할까요? 애플리케이션별로 출시 속도가 얼마나 중요할까요? 반복되는 태스크 자동화는 DevSecOps의 핵심입니다. 파이프라인에서 보안 검사를 수동으로 실행하면 시간이 많이 걸릴 수 있기 때문입니다.
자동화된 DevOps 보안
과제는 개발 주기를 단축하고, 운영 중단을 최소화하여 보안 조치를 통합하고, 컨테이너 및 마이크로서비스와 같은 혁신적인 기술로 업데이트하면서도 분리된 팀들 간에 긴밀하게 협업하도록 해야 합니다. 물론 어느 조직에서든 이런 목표를 달성하는 것은 쉽지 않은 일입니다. 이러한 이니셔티브는 모두 조직 내외의 협업을 통해 인적 개입이 이루어지면서 시작됩니다. 그러나 DevSecOps 프레임워크에서 수동 변경을 더욱 원활히 하려면 자동화가 필요합니다.
그러면 무엇을 어떻게 자동화해야 할까요? 이러한 질문에 대한 답변은 서면 가이드라인을 통해 제공됩니다. 조직은 신중하게 전체 개발 및 운영 환경을 고려해야 합니다. 여기에는 소스 컨트롤 리포지토리, 컨테이너 레지스트리, 지속적 통합 및 지속적 배포(CI/CD) 파이프라인, 애플리케이션 프로그래밍 인터페이스(Application Programming Interface, API) 관리, 오케스트레이션 및 릴리스 자동화, 운영 관리 및 모니터링이 포함됩니다.
새로운 자동화 기술은 조직이 더욱 민첩한 개발 프랙티스를 도입하도록 지원하여 새로운 보안 조치를 추진하는 데 기여하고 있습니다. 그러나 자동화가 최근 IT 환경 변화의 전부는 아닙니다. 컨테이너 및 마이크로서비스와 같은 클라우드 네이티브 기술이 이제 대부분의 DevOps 계획에서 주요한 부분이 되었으며, 이를 위해 DevOps 보안을 조정해야 하는 상황입니다.
컨테이너 및 마이크로서비스를 위해 구축된 DevOps 보안
컨테이너를 통해 규모가 확장되고 인프라가 더욱 동적으로 구성되면서 기업의 비즈니스 수행 방식이 변화되었습니다. 이 때문에 DevOps 보안 프랙티스를 새로운 환경에 맞게 조정하고 컨테이너별 보안 가이드라인을 준수해야 합니다.
클라우드 네이티브 기술은 정적 보안 정책 및 체크리스트에 적합하지 않습니다. 보안은 애플리케이션 및 인프라 라이프사이클의 모든 단계에서 지속적으로 통합되어야 합니다.
DevSecOps는 애플리케이션 개발 과정 전체에서 보안을 구축하는 것을 뜻합니다. 이처럼 파이프라인으로 통합되려면 조직 전체의 사고방식을 개선하고 이에 맞는 새로운 툴이 있어야 합니다. 따라서 DevOps 팀은 전반적인 환경과 데이터 및 지속적 통합/지속적 제공 프로세스를 보호하기 위해 보안을 자동화해야 합니다. 여기에는 컨테이너의 마이크로서비스 보안이 포함될 수 있습니다.
이 웨비나 시리즈를 통해 컨테이너 애플리케이션 스택 및 라이프사이클 전반의 보안을 전문가의 관점에서 살펴보세요.
환경 및 데이터 보안
- 환경 표준화 및 자동화: 각 서비스는 무단 연결 및 액세스를 최소화하기 위한 최소한의 권한을 보유해야 합니다.
사용자 아이덴티티 및 액세스 제어 기능의 중앙 집중화: 인증이 여러 지점에서 시작되므로, 엄격한 액세스 제어 및 중앙 집중식 인증 메커니즘은 마이크로서비스를 보호하는 데 필수적입니다.
마이크로서비스를 실행하는 컨테이너를 서로 분리하고 네트워크에서도 분리: 여기에는 전송 중인 데이터와 유휴 데이터가 모두 포함되는데, 이러한 데이터는 공격자에게 유용한 표적이 될 수 있기 때문입니다.
애플리케이션 및 서비스 간 데이터 암호화: 통합 보안 기능을 사용한 컨테이너 오케스트레이션 플랫폼은 무단 액세스 가능성을 최소화합니다.
보안 API 게이트웨이 도입: 보안 API는 권한 부여 및 라우팅 가시성을 높여줍니다. 조직은 API 노출을 줄여, 공격 범위를 줄일 수 있습니다.
CI/CD 프로세스 보안
컨테이너를 위한 보안 스캐너 통합: 이는 컨테이너를 레지스트리에 추가하는 프로세스의 일부로 수행해야 합니다.
CI 프로세스에서 보안 테스트 자동화: 여기에는 보안 정적 분석 툴을 빌드에 포함시켜 실행하는 작업과, 빌드 파이프라인에 포함될 때 사전 구축된 모든 컨테이너 이미지를 스캔하여 알려진 보안 취약점을 식별하는 작업이 포함됩니다.
보안 기능에 대한 자동화된 테스트를 수용 테스트 프로세스에 추가: 입력 검증 테스트 및 검증 인증과 권한 부여 기능을 자동화합니다.
알려진 취약점에 대한 패치 등 보안 업데이트 자동화: DevOps 파이프라인을 통해 이러한 작업을 수행합니다. 관리자가 프로덕션 시스템에 로그인할 필요가 없어지며, 문서화되어 추적 가능한 변경 로그가 생성됩니다.
시스템 및 서비스 구성 관리 기능 자동화: 이를 통해 보안 정책을 준수하고 및 수동 작업의 오류를 줄일 수 있습니다. 감사 및 문제 해결 역시 자동화되어야 합니다.