안녕하세요? Agile Transformation 팀에서 애자일 교육과 코칭을 담당하고 있는 김두현입니다. 오늘은 애자일 개발과 보안이라는 두 가지 주제에 대해 알아보려고 합니다.

시작해볼까요?

애자일 개발 방법론에 대해 들어 보셨거나, 직접 수행해본 경험이 있을 거라고 생각합니다. 빠르고 유연한 개발을 추구하며 이미 많은 조직에서 채택하고 있죠. 그러나 이러한 방식은 때때로 보안 요소를 간과하게 만들기도 합니다. 중요한 기능과 속도에 집중하다 보니 보안이 덜 중요하다는 인식이 생기기도 하죠.

최근에는 애자일 개발이 보안에 부정적인 영향을 미친다는 주장도 있습니다. 이 글에서는 이 주장의 타당성을 정보 보안업계의 경험을 토대로 살펴보고, 개인적인 견해와 함께 제시하고자 합니다. 더불어 애자일과 보안이 어떻게 조화를 이루며 상호 보완할 수 있는지에 대해 논의해보겠습니다.

애자일 개발의 기본 개념

애자일 개발은 2001년 발표된 애자일 선언문(Agile Manifesto)에서 시작되었습니다. 여기에는 네 가지 중요한 가치가 있습니다.

  1. 공정(프로세스)과 도구보다 개인과 상호작용
  2. 포괄적인 문서보다 작동하는 소프트웨어
  3. 계약 협상보다 고객과의 협력
  4. 계획을 따르기보다 변화에 대응하기

이 가치들은 소프트웨어 개발의 유연성을 강조하며, 변화하는 고객 요구사항에 빠르게 대응할 수 있도록 합니다. 애자일에는 스크럼(Scrum), XP(eXtreme Programming), 칸반(Kanban)과 같은 다양한 프레임워크, 방법론, 메소드가 있으며, 주기적인 스프린트(sprint)로 지속적인 개선과 제품 출시를 목표로 합니다.

https://agilemanifesto.org/iso/ko/manifesto.html

애자일과 보안의 상관관계

애자일 개발은 빠른 주기로 제품을 출시하고 지속적으로 개선하는 것을 목표로 합니다. 그래서 자칫 보안 요소를 놓칠 위험이 있다는 주장은 어느 정도 일리가 있다고 생각합니다. 하지만 애자일이기 때문에 보안을 반영하지 않는다는 주장은 너무 성급한 결론입니다.

보안 요소를 중시하는 개발자나 조직이라면 애자일 방법론이든 다른 방법론이든 정보보안을 중요한 요소로 다룹니다. 반대로 보안에 무관심하거나 경험이 부족한 개발자나 조직이라면 어떤 방법론을 사용하더라도 보안 요소를 소홀히 할 수밖에 없습니다. 이는 특정 개발 방법론의 문제가 아니라, 개인과 조직의 인식과 문화의 문제라고 볼 수 있습니다.

즉, 보안은 개발 방법론의 문제가 아니라, 조직과 개인의 보안 인식과 태도의 문제라고 생각할 수 있습니다.

애자일의 장점과 보안의 조화

애자일의 핵심 중 하나는 자율성과 주도적 자세를 강조하는 것입니다. 동기 부여된 개발자들이 주도적으로 일하는 환경에서는 보안이 중요한 요소로 자연스럽게 자리 잡을 수 있습니다. 애자일 조직에서는 스프린트나 이터레이션을 거듭하면서 다양한 보안 프로세스를 적용할 기회가 많습니다. 오히려 보안을 더 철저히 고려할 수 있는 환경을 제공한다고 볼 수 있습니다.

사례: 보안과 애자일의 성공적인 조화

사례 1: Netflix

Netflix는 초기에 빠른 피드백과 서비스 런칭에 중점을 두었으나, 성장하면서 보안의 중요성을 더욱 강조하게 되었습니다. “2008년 대규모 데이터베이스 유실 사고” 이후, Netflix는 보안의 중요성을 인식하고 ‘Chaos Monkey‘와 같은 도구를 개발해 시스템의 복원력을 테스트하고 보안을 강화했습니다. 이를 통해 보안이 사후에 처리되는 것이 아니라 개발과 운영 과정에서 자연스럽게 통합되도록 했습니다.

사례 2: Google

Google도 초기에는 빠른 피드백과 서비스 런칭에 중점을 두었지만, 성장하면서 보안의 중요성을 더욱 강조하게 되었습니다. Google은 ‘Site Reliability Engineering(SRE)‘ 개념을 도입해 개발과 운영 팀 간의 협력을 강화하고 있습니다. SRE 팀은 시스템의 안정성과 보안을 책임지며, 이를 위해 자동화된 보안 테스트와 정기적인 보안 리뷰를 수행합니다.

https://sre.google/

또한, Google은 ‘Project Zero‘ 팀을 운영해 전 세계 소프트웨어의 보안 취약점을 식별하고 보고합니다. 이러한 노력 덕분에 Google의 제품과 서비스는 높은 보안 수준을 유지하고 있습니다.

두 회사 모두 조직과 팀 차원에서 유연하고 자율적으로 애자일 방법론을 선택 적용하여 지속적이고 빠른 피드백과 서비스 런칭에 중점을 두면서도, 자연스럽게 보안 요소를 적용하여 지속적인 개선을 통해 방향성을 찾아갔습니다. 자율적이고 주도적인 조직 문화와 동기 부여된 개인의 노력 덕분에 올바른 방향으로 성장할 수 있었다고 생각합니다.

물론, Netflix와 Google은 규모와 인지도 면에서 상당한 차이가 있을 수 있지만, 중요한 점은 그들의 성공이 단지 자원과 규모에만 의존한 것이 아니라는 점입니다. 작은 스타트업 이나 중소기업도 애자일 방법론을 통해 유연성과 자율성을 극대화하고, 지속적인 보안 개선을 통해 성공적인 성장 경로를 찾을 수 있다는 것입니다. 핵심은 올바른 문화와 프로세스를 통해 조직과 개인이 함께 성장하는 것입니다.

따라서, 여러분이 속한 조직이 크든 작든, 애자일 방법론과 보안을 함께 고려하면 충분히 성공적인 결과를 도출할 수 있을 것입니다.

보안 인식과 문화의 중요성

우리나라의 경우, 보안에 대한 인식과 문화가 이미 오래 전부터 중요한 문제로 대두되어 오고 있습니다. 사실 “문제만 발생하지 않으면 괜찮다.”는 인식이 일부 있었다고 생각하고, 이는 보안을 필수적인 요소로 여기지 않는 인식이나 문화에서 비롯되었다고 볼 수 있죠. 애자일 때문이 아니라 보안에 대한 인식과 문화가 문제인 셈입니다.

보안은 특정 개발 방법론의 문제가 아닙니다. 모든 개발 방법론에서 정보보안을 중요하게 다뤄야 합니다. 애자일 개발이 보안을 소홀히 하는 것이 아니라, 보안에 대한 인식이 부족한 것이 문제라고 볼 수 있습니다. 따라서 우리는 보안에 대한 인식과 문화를 개선하는데 중점을 두어야 한다고 생각합니다.

기성세대와 달리, 현재와 앞으로의 세대들은 보안의 중요성을 더 많이 인식할 것이라고 예상합니다. 하지만 기존 시스템이 변화하는 데는 시간이 걸리겠죠. 상당한 시간이 걸릴 수도 있을 겁니다. 그동안 다양한 보안 이슈는 계속 발생할 겁니다. 지금 당장 자신이 일하는 환경에서 여러가지 방법을 통해 보안 취약점 여부를 점검해 보시기 바랍니다. 아마도 많은 허점들이 나타날 가능성이 큽니다.

물론 보안에 대한 철저한 인식과 지원이 잘 자리 잡힌 조직도 있습니다.

https://depositphotos.com/ko/

혹은, 제로 트러스트(Zero Trust) 보안 모델을 전사적으로 도입한다고 가정해볼까요? 대부분의 사람들이 환영하기보다는 반발할 가능성이 큽니다. 보안 강화로 인해 자신의 업무에 또 다른 부담이 가중된다면, 이를 반길 사람은 드물겠죠. 물론 제로 터치(Zero Touch)를 고려해서 보안 적용 부담을 최소화하려고 노력하겠지만, 새로운 보안 모듈이나 서비스를 적용한다는 건 기존 방식의 변화를 의미합니다.

일반적으로 사람은 자신에게 이익이 가는 쪽으로 기울거나 혹은 어떤 변화를 추구하기 보다는 기존 방식을 유지하고자 하는 편향된 성향을 가지고 있으니까요.

그럼에도 불구하고 올바른 방향으로 가기 위해 지속적인 보안 인식 강화와 문화를 만들기 위한 노력은 계속되어야 한다고 생각합니다.

그럼, 애자일 개발 관점에서 보안을 강화하기 위해 몇 가지 구체적인 실천 방안은 어떤 것이 있을지 생각해볼까요?

애자일 개발 관점에서 보안 요소 실천 방안

애자일 환경에서 보안을 효과적으로 구현할 수 있는 방법을 8가지 정도로 정리해보았는데요. 하나씩 살펴보겠습니다.

1. 지속적 통합과 지속적 배포 (CI/CD)

애자일에서는 지속적 통합과 배포(CI/CD)를 통해 코드를 자주 배포하고 테스트합니다. 이는 보안 테스트를 자동화하여 배포 전에 보안 취약점을 발견하고 수정할 기회를 제공합니다.

DevSecOps 개념을 도입하면 보안이 개발 프로세스에 자연스럽게 통합됩니다. DevSecOps는 개발(Development), 보안(Security), 운영(Operations)을 결합한 것으로, 개발 초기부터 보안을 고려해 코드를 작성하고, 이를 지속적으로 테스트하고 배포하는 것을 목표로 합니다.

https://depositphotos.com/ko/

2. 사용자 스토리와 보안 요구 사항 통합

애자일에서 사용자 스토리는 기능 요구사항을 이해하고 구현하는 데 중요한 역할을 합니다. 보안 요구사항을 사용자 스토리에 포함시켜, 각 기능 개발 시 보안을 고려하도록 해야 합니다.

예를 들어, “사용자는 비밀번호 복구 시 보안 질문을 통과해야 한다” 또는 “사용자는 비밀번호 변경 시 이전 비밀번호와 다른 새로운 비밀번호를 설정할 수 있어야 한다” 같은 보안 관련 사용자 스토리를 추가할 수 있습니다. 또한, “사용자는 로그인 시 지문 인식 또는 얼굴 인식과 같은 생체 인증을 사용할 수 있어야 한다”와 같은 보안 요구사항을 추가하여 시스템의 안전성을 높일 수 있습니다.

추가적으로, 스프린트나 이터레이션을 진행할 때 소스 코드나 개발 프로세스 상에 보안 취약점 여부를 고려해야 하는 사용자 스토리도 포함해야 합니다. 예를 들어, “개발자는 데이터 입력 시 SQL 인젝션 공격을 방지하기 위해 입력 검증 및 매개변수를 사용해야 한다.” 또는 “개발자는 사용자 입력 데이터가 악성 코드 실행을 유발하지 않도록 크로스 사이트 스크립팅(XSS, Cross Site Scripting) 공격을 방지해야 한다.”와 같은 내용을 포함할 수 있습니다.

이러한 사용자 스토리를 통해 보안 요구 사항이 기능적 측면 뿐만 아니라 코드와 프로세스 상에서도 충족되도록 보장할 수 있습니다.

3. 정기적인 보안 스프린트

정기적인 보안 스프린트를 통해 보안 점검과 개선 작업을 수행할 수 있습니다. 이러한 스프린트는 보안 취약점을 식별하고 해결하는 데 집중하며, 전체 개발 주기 내내 보안을 유지할 수 있게 도와줍니다. DevSecOps의 일환으로, 자동화된 보안 테스트 도구를 활용해 개발 과정에서 발생할 수 있는 보안 취약점을 지속적으로 탐지하고 수정할 수 있습니다.

4. 보안 챔피언 제도 도입

각 팀에 보안 챔피언을 두어, 개발 초기 단계부터 보안을 고려하도록 합니다. 보안 챔피언은 팀 내에서 보안의 중요성을 전파하고, 보안 관련 이슈를 조기에 발견하며 해결하는 역할을 합니다.

5. 지속적인 보안 훈련

정기적인 보안 훈련과 피드백 세션을 통해 개발자들의 보안 인식을 높여야 합니다. 이를 통해 정보보안이 모든 개발자의 일상적인 업무의 일부로 자리잡도록 합니다.

6. 자동화된 보안 테스트

자동화된 보안 테스트 도구를 도입해, 개발 과정에서 발생할 수 있는 보안 취약점을 자동으로 탐지하고 수정할 수 있도록 해야 합니다. 이는 보안을 강화하는 동시에 개발 속도를 저해하지 않는 효과적인 방법입니다.

7. 보안 리뷰와 피드백

정기적인 보안 리뷰와 피드백 세션을 통해, 개발자들이 보안 문제를 인식하고 해결할 수 있도록 해야 합니다. 이러한 리뷰는 개발자가 보안을 지속적으로 고려하도록 하는 데 중요한 역할을 합니다.

https://depositphotos.com/ko/

8. 조직 차원의 보안 강화 지원

조직 차원에서 보안을 강화하기 위해서는 구체적인 지원 방안이 필요합니다. 보안 챔피언 제도를 도입해 각 팀에 보안 전문가를 배치하고, 보안 스프린트를 정기적으로 수행하며, 지속적인 보안 훈련과 교육 프로그램을 운영해야 합니다. 또한, 보안 관련 도구와 리소스를 제공해 개발자들이 보안을 쉽게 적용할 수 있도록 지원해야 합니다.

이를 통해 조직 전체가 보안을 중요한 요소로 인식하고 실천할 수 있는 문화를 조성할 수 있습니다.

정리하며

다시 한번 강조하지만, 보안은 애자일 개발 방법론에만 국한된 문제가 아닙니다. 우리 모두가 보안에 대한 인식과 문화를 개선해야 합니다. 이는 시간과 노력이 필요한 일입니다.

보안은 이제 선택이 아닌 필수입니다. 애자일 방법론이든 다른 개발 방법론이든 보안을 중심에 두고 생각하는 문화를 만들어가야 합니다.

그래야 우리가 만드는 모든 제품과 서비스가 안전하게 사용자에게 전달될 수 있습니다.

참고자료

애자일 방법론을 실무에 적용해보고 싶으시다면? 👉

오픈소스컨설팅 AX팀에서 애자일 코치로 활동중입니다. 애자일 마인드셋을 기반으로 디지털 도구를 활용해 팀의 유연성과 효율성을 높이는 Technical Communicator 역할을 담당하고 있습니다.

Leave a Reply

Your email address will not be published. Required fields are marked *