DevSecOps란 한줄로 설명하면, DevOps의 프로세스들에 필요한 보안 요건들을 병합하는 것이라 할 수 있다.
따라서 DevOps의 프로세스를 이해하고, DevOps의 작업 단계에 보안 요건을 함께 진행시키는 것이다.
그렇다면 DevOps에 대해서 이해할 필요가 있다.
DevOps란
운영 자동화 관점에서 출발한 운영과 개발이 공존하는 것을 의미한다.
Dev팀에서 개발을 완료하면, 이후 테스트, 배포, 운영과 같은 작업이 진행되는데, 이 과정을 자동화 하는 것을 의미한다.
아래 그림이 바로 DevOps에서 가장 많이 사용되는 그림으로, 아래 작업의 순환을 자동화를 통해 해결하는 것이 DevOps의 역활이고, 이 각 단계에 보안 요건을 적용하는 것이 DevSecOps이다.
- 자동화
따라서 DevSecOps는 DevOps의 각 단계별 자동화에 보안 요건을 자동화하는 것에 역활이라고 할 수 있다.
특히 자동화 부분에 집중해야 하는데, DevOps의 탄생은 Agile 프로세스에 따른 빠른 개발/운영 환경을 위해서 만들어진 역활이기 때문에, DevSecOps 역시 이러한 빠른 개발환경에 보안 요건을 적용하기 위해서 자동화는 필수적인 요소이다.
따라서 다음 요건을 DevSecOps의 중요한 핵심 항목이라 할 수 있다.
- 실시간
취약점 점검을 실행하기 위해서 스크립트를 만들고 이를 실행하기 위해 환경에 접근하거나 실행 버튼을 눌러야 한다면. DevSecOps는 개발시 실시간 적인 관점으로 실행 자체에 대한 자동화를 고민해야 한다. 이를 통해 빠르게 반영되고 변화하는 코드와 환경에 보안 요건을 바로 점검할 수 있다.
- 문서화
취약점 점검을 진행하고 나타난 결과를 문서로 전달하거나, 회의를 통해 결과를 전달하는 것은, 점검의 결과에 많은 시간을 소요하게 되므로, 이를 지양하고, 점검 결과에 따른 Bug Ticket을 자동화 하여 개발자들이 해당 취약점을 인식하고 조치할 수 있도록 환경을 개선해야 한다.
- 권한 부여
Developer와 DevOps는 보안팀 만큼 보안 요건을 이해하지 못한다, SQL Injection 문제는 10년 이상 알려진 취약점이지만, 지금도 발생하고 있는 취약점이다. 그리고 보안팀은 자신들을 지연시키고 괴롭히는 팀으로 인식되어진다. 따라서 만약 보안 점검 도구가 있다면, 이를 빌드 단계에 함께 실행할 수 있도록 통합해서 Developer와 DevOps에게 제공하고, 빌드 시점이나 중요 단계에 보안 요건을 함께 진행할 수 있도록 환경을 통합하고 보안 점검 역시 직접 수행하고 이해할 수 있도록 권한을 부여하는 것이 중요하다. 이를 통해 Developer와 DevOps는 보안 취약점을 이해하고 보안성이 높은 개발/운영 환경을 만들 수 있다.
DevSecOps는 Security 역활을 수행하는 DevOps이다.
DevSecOps가 조직에 따라, 보안팀에 존재할 수도 있고, 개발팀에 존재할 수 도 있지만,
이렇게 4가지 DevSecOps의 역활을 통해 Developer와 DevOps의 환경 변화에 맞춰 간다면 빠르게 변화하는 개발/운영 환경에 보안성 까지 챙길 수 있을 것이라 기대 된다.