소프트웨어에 대한 의존도는 이미 높으며 앞으로도 계속 증가할 것입니다. 그렇기 때문에 애플리케이션의 보안이 점점 더 중요해지고 있습니다. 코로나 팬데믹으로 인해 더 많은 회사들이 온라인에서 제안을 제공하고 있기 때문에 이러한 발전이 강화되고 있습니다. 예를 들어 미국 보안 기관인 FBI는 팬데믹이 시작된 이후 사이버 범죄가 300% 증가했다고 보고했습니다. 이는 소프트웨어에 대한 의존도가 높아지면서 공격 위험도 증가한다는 것을 보여줍니다.
이로 인해 소프트웨어 개발 회사는 곤경에 처하게 됩니다. 한편으로는 시장에서 성공하기 위해 신제품과 업그레이드를 신속하게 출시해야 합니다. 다른 한편으로 성공적인 공격을 피하기 위해 보안도 유지해야 합니다. 그러나 보안은 종종 급속한 발전에 대한 제동 장치로 간주되므로 불행히도 무시됩니다.
통지: “침투 테스트”와 같은 일부 테스트는 짧은 개발 주기와 모순되는 매우 긴 시간(2주)이 소요될 수 있습니다.
이러한 관점은 오랫동안 개발팀과 보안팀이 별도로 작업해왔기 때문에 나온 것입니다. 개발 팀은 새 코드를 작성하고 릴리스를 준비합니다. 릴리스 전에 보안 팀은 코드를 다시 살펴보고 GoLive 전에 보안 요구 사항을 설정합니다. 이 루프는 때때로 개발 프로세스를 극도로 확장합니다. 또한 보안 개선보다 비판으로 더 많이 간주되기 때문에 팀 간에 긴장이 있을 수 있습니다.
소프트웨어 개발에서 더 나은 보안 통합을 위한 DevSecOps
DevSecOps 접근 방식은 이러한 문제에 대한 답을 제공합니다. 개발 팀과 운영 팀을 더 가깝게 만드는 DevOps 접근 방식의 진화입니다. DevSecOps에서 보안 팀은 DevOps 팀에 통합됩니다.
보안 영역에서 대응에서 능동적으로
팀 구성 방식에 관계없이 대부분의 경우(보안) 오류는 사후에 수정됩니다. 이는 일반적으로 두 가지 방법으로 수행됩니다.
- 알려진 취약점을 확인하는 자동 테스트가 작성됩니다.
- 수동 테스트 또는 프로덕션에서 발견된 버그가 보고되었습니다.
목표는 가능한 한 빨리 오류를 발견하여 변경에 필요한 노력을 최소화하는 것입니다. Shift-Left 접근 방식은 정확히 이를 수행하며 매우 오랫동안 알려져 왔습니다. 그러나 개발 프로세스 초기에 버그가 발견되더라도 항상 팀의 누군가가 버그를 수정하기 위해 이전 코드를 다시 파헤쳐야 합니다. 노력을 더욱 줄이는 유일한 방법은 사전 예방적으로 오류를 방지하는 것입니다. 보안 격차를 줄이는 것이 얼마나 어려운지에 대한 자세한 내용은 여기에서 확인할 수 있습니다.
보안 코드를 작성하고 취약점을 발견하지 않는 방법을 배웁니다.
(보안) 오류를 사전에 예방할 수 있으려면 개발자에게 적절한 보안 지침과 보안 허점에 대한 지식을 제공해야 합니다. OWASP(Open Web Application Security Project)는 이에 대한 10가지 조치를 정의했습니다.
- 보안 요구 사항의 정의
- 보안 프레임워크 및 라이브러리 활용
- 데이터베이스에 대한 보안 액세스
- 데이터 암호화 및 “이스케이프”
- 모든 입력 확인
- 디지털 ID 구현
- 인증 시스템 시행
- 어디에서나 데이터 보호
- 보안 관련 프로세스의 로깅 및 모니터링
- 모든 오류 및 예외 처리
소프트웨어 개발의 모든 상황에 대한 보안 주제에 대한 학습 접근 방식
개발자가 이러한 조치를 구현할 수 있으려면 물론 필요한 지식도 있어야 합니다. 주제와 개인적 선호도에 따라 학습 시 사용할 수 있는 다양한 접근 방식이 있습니다. 학습 콘텐츠는 쉽게 접근할 수 있을 뿐만 아니라 신속하게 처리할 수 있는 것이 중요합니다.
DevSecOps 분야의 보안 교육
전통적인 이해에 따르면 보안은 개발자의 핵심 작업 중 하나가 아니라 새로운 기능을 구현하는 것입니다. 그렇기 때문에 중요한 기술을 제공하려면 보안 교육이 재미있고 도전적이며 매력적이어야 합니다. 지식을 직접 전달하기 위해 실제 코드를 사용하여 해당 언어로 이전 지식에 따라 교육을 수행하는 것이 중요합니다. 개발자의 안전 의식을 강화해야 하므로 1년에 한 번 교육 과정에 참석하지 않고 소규모 단위로 정기적으로 교육을 실시하는 것이 타당합니다. 이에 대한 한 가지 가능성은 마이크로 학습을 사용하여 학습 콘텐츠를 작업 프로세스에 통합하는 것입니다. 이 통합은 예를 들어 비디오와 연습을 검토 프로세스에 통합하는 SCM 관리자용 플러그인을 제공합니다.
보안 코드 워리어 플러그인
더 많은 웹 보안을 위한 대회
이미 언급했듯이 학습은 재미 있고 도전적이며 개발자에게 매력적이어야 합니다. 예를 들어 참가자들이 보안 취약점을 수정하여 승리를 위해 경쟁하는 경쟁을 통해 이 모든 것이 달성됩니다. 이러한 경쟁은 몇 시간에서 며칠까지 지속될 수 있습니다. 그러한 경쟁의 예는 여기에서 찾을 수 있습니다.
자동화된 실시간 코칭
이제 정의된 보안 지침에 따라 코드를 실시간으로 확인하는 개발 환경용 확장 기능이 있습니다. 이러한 방식으로 개발자는 코드를 작성하는 즉시 코드가 보안 요구 사항을 충족하는지 여부에 대한 피드백을 받습니다. 이상적으로는 맞춤법 검사기와 마찬가지로 수정에 대한 직접적인 제안을 받게 됩니다. 또한 적절한 운동도 제안할 수 있습니다. 모두 게임화 및 e-러닝 정신에 입각한 것입니다.
보안 유출 확인
보안을 개선하기 위한 조치를 결정할 수 있으려면 먼저 현재 상태를 확인해야 합니다. 이것은 약점을 식별하는 유일한 방법입니다. 이상적으로는 현상 유지가 한 번만 결정되는 것이 아니라 소프트웨어 응용 프로그램의 개발과 팀의 지식 개발이 모두 지속적으로 모니터링됩니다. 팀의 현재 지식 수준을 확인하는 한 가지 방법은 예를 들어 특정 교육 과정을 이수한 개발자를 위한 배지 또는 상을 소개하는 것입니다.
결론
개발 시간을 늘리지 않고 소프트웨어 애플리케이션을 보다 안전하게 만들기 위해서는 보안 코드를 능동적으로 작성해야 합니다. 이를 달성하려면 기존 구조를 해체하고 애플리케이션 보안에 대한 더 많은 책임을 개발자에게 직접 넘겨야 합니다. 이를 위한 기본 전제 조건은 개발자가 필요한 지식을 가지고 있다는 것입니다. 다행스럽게도 교육, 대회, 실시간 코칭 및 평가를 통해 이제 작은 학습 단위에서 높은 수준의 실제 관련성을 가진 지식을 전달하는 지식을 전달하는 대화식의 매력적인 방법이 많이 있습니다.