데이터 유출의 심각성과 DevOps 보안의 필요성
Verizon의 연구 결과에 따르면, 작년 한 해 동안 기업의 상당 부분인 약 58%가 데이터 유출을 경험했으며, 그중 41%는 소프트웨어 취약점으로 인해 발생했습니다. 이러한 데이터 유출은 기업에 막대한 재정적 손실을 초래할 뿐만 아니라 기업의 평판에도 심각한 타격을 입힐 수 있습니다.
최근 애플리케이션 개발 방법론은 크게 변화했습니다. 오늘날 기업들은 DevOps 원칙과 도구를 활용하여 애플리케이션 또는 소프트웨어를 개발합니다. DevOps 접근 방식에서는 전체 애플리케이션을 한 번에 배포하는 대신, 반복적인 개발 및 배포를 통해 애플리케이션을 제공합니다. 때로는 하루에도 여러 번의 배포가 이루어지기도 합니다. 그러나 이처럼 빠른 속도로 배포가 이루어지는 환경에서 보안 문제를 찾는 것은 매우 어려운 일입니다. 따라서 보안은 DevOps 프로세스에서 가장 중요한 고려 사항 중 하나가 되었습니다.
개발, 테스트, 운영 및 프로덕션 등 애플리케이션 개발에 참여하는 모든 팀은 애플리케이션에 보안 침해를 유발할 수 있는 취약점이 없도록 필요한 보안 조치를 취해야 할 책임이 있습니다. 이 글에서는 애플리케이션을 안전하게 개발하고 배포하기 위한 DevOps 보안 모범 사례에 대해 자세히 살펴보겠습니다.
DevSecOps 모델의 도입
DevSecOps는 DevOps 분야에서 새롭게 떠오르는 개념입니다. 많은 IT 조직들이 점차적으로 도입하고 있는 기본적인 보안 관행입니다. 이름에서 알 수 있듯이 DevSecOps는 개발(Development), 보안(Security) 및 운영(Operations)의 조합입니다.
DevSecOps는 DevOps 수명 주기 전반에 걸쳐 보안 도구를 활용하는 방법론입니다. 즉, 애플리케이션 개발의 초기 단계부터 보안을 고려해야 한다는 의미입니다. DevOps 프로세스와 보안을 통합함으로써 조직은 취약점이 없는 안전한 애플리케이션을 구축할 수 있습니다. 또한 이 방법론은 조직 내 개발 팀과 보안 팀 간의 협업을 촉진하여 업무 사일로를 제거하는 데에도 도움을 줍니다.
다음은 DevSecOps 모델에서 구현해야 할 몇 가지 핵심 사례입니다.
- Snyk, Checkmarx와 같은 보안 도구를 개발 통합 파이프라인에 통합합니다.
- 자동화된 테스트는 반드시 보안 전문가가 평가해야 합니다.
- 개발 팀과 보안 팀은 협력하여 위협 모델을 구축해야 합니다.
- 제품 백로그에서 보안 요구 사항의 우선순위를 높여야 합니다.
- 인프라를 구축하기 전에 모든 보안 정책을 검토해야 합니다.
코드 검토의 효율성을 높이는 방법
코드 검토는 작은 단위로 수행하는 것이 좋습니다. 한 번에 전체 애플리케이션을 검토하거나 거대한 코드 덩어리를 검토하는 것은 효율적이지 않습니다. 코드를 작은 조각으로 나누어 검토하면 더욱 꼼꼼하게 검토할 수 있습니다.
변경 관리 프로세스 도입
효과적인 변경 관리 프로세스를 수립해야 합니다.
배포 단계에 있는 애플리케이션에서 개발자가 코드를 계속 추가하거나 기능을 추가/제거하는 것은 바람직하지 않습니다. 이 단계에서 도움이 될 수 있는 가장 좋은 방법은 변경 관리 프로세스를 시행하는 것입니다.
애플리케이션에 적용해야 하는 모든 변경 사항은 반드시 변경 관리 프로세스를 거쳐야 합니다. 승인이 완료되면 개발자는 변경 사항을 적용할 수 있습니다.
운영 환경에서의 지속적인 애플리케이션 평가
많은 조직들이 애플리케이션이 운영 환경에 배포된 후에는 보안을 소홀히 하는 경향이 있습니다.
애플리케이션은 지속적으로 검토해야 합니다. 새로운 보안 취약점이 발생하지 않도록 코드를 지속적으로 검토하고 정기적인 보안 테스트를 수행해야 합니다.
Invicti, Probely 및 Intruder와 같은 지속적인 보안 소프트웨어를 활용하면 도움이 될 수 있습니다.
보안 교육의 중요성
개발 팀에게 보안 가이드라인 및 모범 사례에 대한 교육을 제공하는 것이 필수적입니다.
예를 들어, 새로운 개발자가 SQL 인젝션 공격에 대해 모른다면, SQL 인젝션 공격이 무엇인지, 그 역할은 무엇이며, 애플리케이션에 어떤 피해를 줄 수 있는지 알려주어야 합니다. 물론, 기술적인 세부 사항까지 모두 설명할 필요는 없지만, 개발 팀이 최신 보안 표준과 광범위한 모범 사례에 대해 숙지하고 있는지 확인해야 합니다.
웹 보안 학습을 위한 다양한 온라인 강좌가 마련되어 있습니다.
보안 프로세스 개발 및 구현
보안은 프로세스 없이 실행될 수 없습니다. 조직은 특정한 보안 프로세스를 수립하고 실행해야 합니다.
프로세스 실행 후에는 특정 작업이 예상대로 작동하지 않거나, 프로세스가 너무 복잡하여 수정해야 할 가능성이 있습니다. 이러한 이유로 인해 보안 프로세스는 지속적으로 개선되어야 합니다.
보안 프로세스를 구현한 후에는 반드시 모니터링 및 감사를 수행해야 합니다.
보안 거버넌스의 중요성
DevOps 보안 모범 사례를 효과적으로 구현하려면 조직은 거버넌스 정책을 수립하고 시행해야 합니다. 개발, 보안, 운영 등 애플리케이션 개발에 참여하는 모든 팀은 이 정책을 준수해야 합니다.
정책은 모든 직원이 명확하게 이해할 수 있도록 투명해야 합니다. 또한, 직원이 거버넌스 정책을 제대로 준수하는지 지속적으로 모니터링해야 합니다.
보안 코딩 표준의 중요성
개발자들은 주로 애플리케이션 기능 개발에 집중하며, 보안 매개 변수를 우선순위에 두지 않는 경우가 많습니다. 하지만 오늘날 증가하는 사이버 위협에 대응하기 위해서는 개발팀이 애플리케이션 코딩 시 보안 모범 사례를 준수하고 있는지 확인해야 합니다.
개발자들은 코드를 작성하는 동안 취약점을 식별하는 데 도움이 되는 보안 도구에 대해 잘 알고 있어야 합니다. 이를 통해 코드를 신속하게 수정하고 취약점을 제거할 수 있습니다.
수동 작업에 대한 의존도를 줄이기 위해 DevOps 프로세스에 보안 자동화 도구를 도입해야 합니다. 자동화 도구는 단순히 테스트를 수행하는 것 외에도 애플리케이션에 대한 반복 가능한 테스트를 구축하는 데에도 도움이 됩니다. 코드 분석, 비밀 관리, 구성 관리 및 취약점 관리 등을 위한 자동화 도구를 사용하면 보안 수준이 높은 제품을 보다 쉽게 개발할 수 있습니다.
취약점 평가의 중요성
애플리케이션의 취약점을 식별하고 운영 환경에 배포하기 전에 제거하려면 취약점 평가를 수행해야 합니다.
취약점 평가는 정기적으로 수행해야 하며, 보안 취약점이 발견되면 개발팀은 즉시 코드를 수정하여 문제를 해결해야 합니다. 애플리케이션의 약점을 식별하는 데 사용할 수 있는 다양한 취약점 검색 및 관리 도구가 있습니다.
구성 관리의 중요성
효과적인 구성 관리 시스템을 구축해야 합니다.
앞서 언급한 변경 관리 프로세스도 구성 관리의 중요한 부분입니다. 어떤 구성을 처리하고 있는지, 애플리케이션에서 어떤 변경 사항이 발생하는지, 누가 변경 사항을 승인하고 적용하는지 추적해야 합니다. 이 모든 것은 구성 관리 시스템의 범위에 속합니다.
최소 권한 모델의 중요성
DevOps 보안 모범 사례에서 가장 중요한 규칙 중 하나는 최소 권한 모델을 따르는 것입니다. 필요한 것보다 더 많은 권한을 누구에게도 부여하지 않아야 합니다.
예를 들어, 개발자가 ROOT 또는 관리자 액세스 권한이 필요하지 않은 경우 일반 사용자 액세스 권한만 할당하여 필요한 애플리케이션 모듈에서 작업할 수 있도록 해야 합니다.
네트워크 분할의 중요성
조직은 네트워크를 분할해야 합니다.
애플리케이션, 서버 및 스토리지와 같은 조직의 자산은 동일한 네트워크에서 실행되어서는 안 됩니다. 이는 단일 장애 지점 문제를 야기할 수 있기 때문입니다. 해커가 조직의 네트워크에 침입할 수 있는 경우, 해커는 조직의 모든 자산을 제어할 수 있게 됩니다. 따라서 모든 논리적 장치에 대해 별도의 네트워크를 구성해야 합니다.
예를 들어, 개발 환경과 운영 환경은 서로 격리된 다른 네트워크에서 실행되어야 합니다. 제로 트러스트 네트워크 솔루션을 활용하는 것도 좋은 방법입니다.
비밀번호 관리자의 사용
자격 증명을 Excel 파일에 저장하지 마십시오. 대신 중앙 집중식 암호 관리자를 사용하십시오.
개별 비밀번호를 사용자 간에 공유하는 것은 절대적으로 금지되어야 합니다. API를 호출하고 자격 증명을 사용할 권한이 있는 팀만 접근할 수 있도록 안전한 중앙 저장소에 자격 증명을 저장하는 것이 가장 좋습니다.
감사 및 검토의 중요성
지속적인 감사 및 검토 프로세스를 구현해야 합니다. 애플리케이션 코드, 보안 프로세스 환경, 데이터 등을 정기적으로 감사해야 합니다.
결론
위에 제시된 방법들은 조직이 안전한 애플리케이션과 소프트웨어를 구축하기 위해 따라야 할 중요한 DevOps 보안 모범 사례입니다. DevOps 프로세스에 보안 사례를 통합하면 조직은 수백만 달러를 절약할 수 있습니다. 애플리케이션을 안전하고 빠르게 릴리스하기 위해 이 글에서 소개한 보안 사례들을 적극적으로 실천해 보시기 바랍니다.