DevSecOps를 위한 API 보안
DevSecOps를 위한 API 보안의 중요성
Akamai는 2024년 6월 Noname Security를 인수했습니다. Noname Security 제품은 현재 Akamai API Security이지만, 2022년 9월 29일에 처음 게시된 이 블로그 게시물은 원래 게시일의 제품 및 기능 명칭을 반영하고 있습니다.
DevSecOps는 소프트웨어 개발 워크플로우에 보안을 추가하는 개발 및 운영(DevOps)의 변형입니다. API(Application Programming Interface) 보안은 DevSecOps의 일부가 되어야 합니다.
이 블로그 게시물에서는 DevSecOps의 작동 방식과 DevSecOps 프로세스에 따라 개발되는 애플리케이션을 최대한 안전하게 만드는 데 있어 API 보안의 역할에 대해 살펴봅니다.
DevSecOps란 무엇일까요?
DevSecOps가 무엇인지 이해하려면 먼저 DevSecOps의 기반이 되는 원래의 패러다임인 DevOps에 대해 제대로 파악해야 합니다. DevOps는 이전에는 분리되어 있던 두 가지 프로세스, 즉 소프트웨어 개발(Dev)과 IT 운영(Ops)을 결합한 것을 말합니다. 전통적으로 개발자는 코드를 작성해 IT 운영팀에 넘겨 프로덕션에 배포했습니다. 이는 애플리케이션의 새 버전을 완성하는 데 수개월 또는 수년이 걸리던 폭포수식 개발 시대에는 잘 작동했습니다.
민첩한 개발 방법론과 코드의 CI/CD(Continuous Integration/Continuous Deployment )가 등장하면서 기존의 개발 및 운영 분리 방식은 더 이상 유효하지 않게 되었습니다. 새로운 코드는 매시간은 아니더라도 매일 운영팀에 제공되어 공개되었습니다.
재앙을 초래하지 않고 모든 작업을 완료할 수 있는 유일한 방법은 개발과 운영 워크플로우를 통합하는 것이었습니다. 통합된 프로세스에는 통합된 팀이 필요했습니다.
새로운 DevOps 환경에서는 개발자와 운영 담당자가 협업해 코드를 프로덕션에 신속하게 배포합니다. 개발팀과 운영팀 간의 관계는 자연스러운 파트너십이 아니었고, 오히려 생산성에 방해가 되는 '떠넘기기' (및 레거시) 사고방식으로 인해 긴장된 경향이 있었습니다. DevOps는 공동 책임 모델을 도입해 이러한 역학 관계를 변화시켰습니다.
사이버 위협이 점점 더 심각해지면서 보안이 DevOps 워크플로우의 일부가 된 것은 당연한 일이었습니다. 따라서 DevOps는 DevSecOps가 되었습니다. 이는 보안이 개발 프로세스를 방해하는 '교통 경찰'로 여겨지는 등 때때로 긴장된 관계였던 둘의 관계를 완화한 것이기도 합니다. DevSecOps는 새로운 협업 방식을 나타냅니다. 이제 보안은 더 빠르면서도 더 안전한 개발 주기를 가능하게 하는 원동력이 되었습니다.
DevSecOps의 주요 성공 요인
DevSecOps에서 성공을 거두는 것은 간단한 문제가 아닙니다. 각자의 목표를 추구하는 여러 팀과 워크플로우의 조율이 필요합니다. DevSecOps에서 사람과 프로세스를 복잡하게 조율하려면 툴과 프로세스의 신중한 조화가 필요합니다. 기술은 양쪽을 모두 지원하고 프로세스에서 양보해 중간에서 만나야 합니다. 여기에는 리더십이 포함됩니다.
DevSecOps로 성공하려면 보안팀은 새로운 CI/CD 환경에 맞게 테스트 방식을 조정해야 합니다. 결과적으로 DevOps 팀은 최소한 기능적 문제를 처리할 때와 마찬가지로 보안 문제를 엄격하게 처리해야 합니다. 실제로 덜 성숙한 프로그램일수록 보안 문제가 오래되어 백로그에서 사라지는 경우가 많습니다. 성공하려면 DevOps 워크플로우에서 보안 작업을 가능한 한 가장 빠른 시점에 배치하는 시프트 레프트 전략이 필요합니다.
DevSecOps 워크플로우에서 API 보안 유지
DevSecOps에서 API를 보호하려면 개발 중 API 보안 테스트와 API가 프로덕션에 배포된 후 API 모니터링이 필요합니다. API 보안 테스트는 DevSecOps의 다른 형태의 보안 테스트와 비슷하지만 몇 가지 주목할 만한 차이점이 있습니다. 예를 들어 정적 테스트는 코드의 취약점을 발견하는 데는 유용할 수 있지만 모든 API 취약점을 식별하는 데는 효과적이지 않습니다.
대신, DevSecOps를 위한 API 보안 테스트는 비즈니스 로직을 사용해 블랙박스 종류의 테스트를 실행하는 데 중점을 두어야 합니다. 이 접근 방식은 애플리케이션이 배포될 때 API가 실제로 어떻게 작동하는지 보여줍니다.
Noname Active Testing과 같은 API 보안 테스트 툴은 이러한 종류의 테스트를 실행할 수 있습니다. 이 툴은 손상된 오브젝트 수준의 권한 부여, 무제한 리소스 소비, 보안 설정 오류, 부적절한 인벤토리 관리 등과 같이 OWASP(Open Web Application Security Project) API 보안 상위 10대 리스크에서 강조된 취약점을 탐지할 수 있습니다. 이러한 취약점이 존재하고 방어되지 않은 경우, API를 공격하는 악의적인 공격자가 민감한 데이터에 무단으로 접속할 수 있습니다.
Noname Active Testing은 고도로 설정 가능한 테스트 제품군을 지원하기 때문에 CI/CD 파이프라인에 통합됩니다. 또한 여러 CI/CD 시스템에 대한 빌트인 통합을 통해 시프트 레프트 스타일의 테스트를 지원합니다. 따라서 이들 두 가지 요소 사이에서 API와 관련해 'Sec'을 DevSecOps에 넣을 수 있습니다. CI/CD 통합은 최신 애플리케이션의 보안을 유지하는 데 필요한 지속적이고 신속한 API 보안 테스트를 가능하게 하므로 필수적입니다.
DevSecOps를 위한 API 보안은 개발로 끝나지 않습니다. 가장 좋은 방법은 API 보안 프로세스를 프로덕션 환경으로 이어가는 것입니다. DevSecOps의 'Sec' 부분은 프로덕션에서 API를 모니터링함으로써 프로덕션 중에 관리자가 재설정하거나 잘못 설정하는 등 취약한 상태에 빠진 API를 탐지할 수 있습니다. 일단 탐지된 API 취약점은 DevSecOps 워크플로우의 일부로 수정할 수 있습니다.
결론
DevSecOps는 구축하기 어려울 수 있습니다. 모든 사람과 모든 것이 빠른 속도로 움직일 수 있도록 많은 사람과 프로세스가 잘 조율되어야 합니다. API 보안은 DevSecOps를 복잡하게 만들고 원활한 운영을 방해할 수 있는 잠재력을 가지고 있습니다. 하지만 API 보안 테스트는 안전한 애플리케이션을 개발하는 데 매우 중요합니다. DevSecOps에서 API 보안이 잘 작동하도록 하려면 특화된 API 보안 테스트 및 모니터링 툴을 사용해야 합니다.