DevOps

DevSecOps란 무엇일까요?

DevOps는 단순히 개발 및 운영팀에 국한된 문제가 아닙니다. DevOps 접근 방식의 민첩함과 대응 능력을 최대한 활용하려면 IT 보안 팀이 애플리케이션의 전체 라이프사이클에서 통합된 역할을 해야 합니다.

그 이유는 무엇일까요? 과거에 보안 역할은 개발 최종 단계에서 특정 팀에 분리되어 있었습니다. 개발 주기가 몇 달 또는 몇 년씩 지속되는 경우에는 문제가 되지 않았으나, 지금은 상황이 달라졌습니다. 효과적인 DevOps는 개발 주기를 단축하고 개발 빈도를 높일 수 있지만(몇 주 또는 며칠), 오래된 보안 방식으로는 가장 효율적인 DevOps 계획조차 무용지물로 만들 수 있습니다.

현재, 협력적인 DevOps 프레임워크에서 보안은 공동의 책임이며 처음부터 통합되어야 합니다. 이는 매우 중요한 개념이어서, DevOps 계획에 보안 기반을 구축할 필요가 있다는 사실을 강조하기 위해 “DevSecOps”라는 말까지 생겨나게 되었습니다.

DevSecOps는 처음부터 애플리케이션과 인프라 보안을 고려하는 것을 뜻합니다. 이는 또한 DevOps 워크플로우가 느려지지 않도록 일부 보안 게이트를 자동화해야 한다는 의미이기도 합니다. 지속적으로 보안을 통합하기 위한 적합한 툴을 선택하면 보안 목표를 달성하는 데 도움이 될 수 있습니다. 그러나 효과적인 DevOps 보안을 위해서는 단순히 새로운 툴만으로는 부족합니다. 보안 팀의 작업을 통합하기 위해서는 DevOps의 문화적 변화를 기반으로 일찌감치 DevOps 보안을 구축해야 합니다.


DevOps 보안 빌트인

“DevOps” 또는 “DevSecOps”라는 명칭에 상관없이, 이를 전체 애플리케이션 라이프 사이클의 핵심적인 부분으로 보안에 포함하는 것이 항상 이상적이었습니다. DevSecOps는 애플리케이션과 데이터 주변 경계 기능이 아닌, 빌트인 보안을 말합니다. 보안이 개발 파이프라인의 마지막 단계에 적용되는 경우, DevOps를 도입하는 조직은 다시 긴 개발 주기를 거치게 되어, 처음에 피하고자 했던 상황에 맞닥뜨릴 수 있습니다.

얼마간, DevSecOps는 정보 보안을 기본으로 제공해 보안 자동화 계획을 세울 수 있도록 DevOps 계획 초기에 보안 팀 합류의 필요성을 강조합니다. 또한 개발자가 보안을 염두에 두고 코딩해야 할 필요성을 강조하기도 하는데, 이는 바로 보안 팀이 알려진 위협에 대한 가시성, 피드백 및 인사이트를 공유하는 프로세스입니다. 여기에는 개발자를 위한 새로운 보안 교육이 포함될 수도 있습니다. 보다 전통적인 애플리케이션 개발 방식에서는 이 점이 간과되기도 했기 때문입니다.

빌트인 보안은 실제로 어떤 모습일까요? 우선, 좋은 DevSecOps 전략은 위험 내성(risk tolerance)을 결정하고 위험/편익 분석을 수행하는 것입니다. 특정 애플리케이션 내에 어느 정도의 보안 제어 기능이 필요할까요? 서로 다른 애플리케이션에 출시 속도가 얼마나 중요할까요? 반복되는 태스크 자동화는 DevSecOps의 핵심입니다. 파이프라인에서 수동 보안 검사를 실행하면 시간이 많이 걸릴 수 있기 때문입니다.


자동화된 DevOps 보안

목표: 개발 주기를 단축해 빈도를 높이고, 운영 중단을 최소화하여 보안 조치를 통합하고, 컨테이너마이크로서비스와 같은 혁신적인 기술로 업데이트하면서도 분리된 팀들 간에 긴밀하게 협업해야 합니다. 물론 어느 조직에서든 이런 목표를 달성하는 것은 쉽지 않은 일입니다. 이러한 계획은 모두 조직 내외의 협업을 통해 인적 개입이 이루어지면서 시작됩니다. 그러나 이처럼 DevSecOps 프레임워크에서 수동 변경을 보다 원활히 하려면 자동화가 필요합니다.

그러면 무엇을 어떻게 자동화해야 할까요? 이러한 질문에 대한 답변을 제공하는 서면 가이드라인이 있습니다 조직은 신중하게 전체 개발 및 운영 환경을 고려해야 합니다. 여기에는 소스 컨트롤 리포지토리, 컨테이너 레지스트리, CI/CD(지속적인 통합 및 연속 배포) 파이프라인, API(애플리케이션 프로그래밍 인터페이스) 관리, 오케스트레이션 및 릴리스 자동화, 운영 관리 및 모니터링이 포함됩니다.

새로운 자동화 기술은 조직이 보다 민첩한 개발 방식을 도입하도록 지원하여 새로운 보안 조치를 추진하는 데 기여했습니다. 그러나 자동화가 최근 IT 환경 변화의 전부는 아닙니다. 컨테이너 및 마이크로서비스와 같은 클라우드 네이티브 기술이 이제 대부분의 DevOps 계획에서 주요한 부분이 되었으며, 이를 위해 DevOps 보안을 조정해야 하는 상황입니다.


컨테이너 및 마이크로서비스를 위해 구축된 DevOps 보안

컨테이너를 통해 규모가 확장되고 인프라가 더욱 동적으로 구성되면서 비즈니스 방식이 바뀐 조직이 많아졌습니다. 이 때문에 DevOps 보안 방식은 새로운 환경에 적응하고 컨테이너별 보안 가이드라인에 맞춰야 합니다. 클라우드 네이티브 기술은 정적 보안 정책 및 체크리스트에 적합하지 않습니다. 그보다, 보안은 애플리케이션 및 인프라 라이프사이클의 모든 단계에서 연속적으로 통합되어야 합니다.

DevSecOps는 애플리케이션 개발 과정 전체에서 보안을 구축하는 것을 뜻합니다. 이처럼 파이프라인으로 통합되려면 조직 전체의 사고방식을 개선하고 이에 맞는 새로운 툴이 있어야 합니다. 따라서 DevOps 팀은 전반적인 환경과 데이터 및 CI/CD 프로세스를 보호하기 위해 보안을 자동화해야 합니다. 여기에는 컨테이너의 마이크로서비스 보안이 포함될 수 있습니다.

환경 및 데이터 보안:

환경을 표준화하고 자동화합니다.

각 서비스는 무단 연결 및 액세스를 최소화하기 위한 최소한의 권한(privilege)을 가져야 합니다.

사용자 identity 및 액세스 제어 기능을 중앙 집중화합니다.

인증이 여러 지점에서 초기화되므로, 엄격한 액세스 제어 및 중앙 집중식 인증 메커니즘은 마이크로서비스를 보호하는 데 필수적입니다.

마이크로서비스를 실행하는 컨테이너를 서로 격리하고 네트워크로부터도 격리합니다.

여기에는 전송 중인 데이터와 유휴 데이터가 모두 포함되는데, 이러한 데이터는 공격자에게 유용한 표적이 될 수 있기 때문입니다.

애플리케이션 및 서비스간 데이터를 암호화합니다.

통합 보안 기능을 사용한 컨테이너 오케스트레이션 플랫폼은 무단 액세스 가능성을 최소화하는 데 도움이 됩니다.

보안 API 게이트웨이를 도입합니다.

보안 API는 권한 부여 및 라우팅 가시성을 높여줍니다. 조직은 노출된 API를 줄여, 공격에 대한 취약성을 줄일 수 있습니다.

CI/CD 프로세스 보안:

컨테이너를 위한 보안 스캐너를 통합합니다.

이는 컨테이너를 레지스트리에 추가하는 프로세스의 일부가 되어야 합니다.

CI 프로세스에서 보안 테스트를 자동화합니다.

여기에는 보안 정적 분석 툴을 빌드에 포함시켜 실행하는 작업과, 빌드 파이프라인에 포함될 때 사전 구축된 모든 컨테이너 이미지를 스캔하여 알려진 보안 취약점을 식별하는 작업이 포함됩니다.

보안 기능에 대한 자동화된 테스트를 수용 테스트 프로세스에 추가합니다.

입력 검증 테스트 및 검증 인증과 권한 부여 기능을 자동화합니다.

알려진 취약점에 대한 패치 등 보안 업데이트를 자동화합니다.

DevOps 파이프라인을 통해 이러한 작업을 수행합니다. 관리자가 프로덕션 시스템에 로그인할 필요가 없어지며, 문서화되어 추적 가능한 변경 로그가 생성됩니다.

시스템 및 서비스 설정 관리 기능을 자동화합니다.

이를 통해 보안 정책을 준수하고 및 수동 작업의 오류를 줄일 수 있습니다. 감사 및 문제해결 역시 자동화되어야 합니다.

고객이 필요로 하는 DevSecOps 툴

관리

간편한 에이전트리스 IT 자동화 기술로서 현재의 프로세스를 개선하고, 보다 나은 최적화를 위해 애플리케이션을 마이그레이션하며, 조직 전체에 DevOps 사례를 위한 단일 언어를 제공합니다.

클라우드 컴퓨팅

Red Hat® OpenShift®는 역할 기반 액세스 제어, SELinux(Security-Enhanced Linux) 지원 격리, 컨테이너 빌드 프로세스 전반에 걸친 검사를 포함하여 컨테이너 기반 애플리케이션에 빌트인 보안을 제공합니다.

DevSecOps의 더 큰 가능성을 살펴보세요