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