DevSecOps는 DevSecOps 도구를 사용하여 DevOps 수명 주기의 모든 단계에서 보안을 구현하는 방법입니다.
소프트웨어 개발에서 DevOps는 특정 개발 활동과 IT 운영의 조합입니다. 이 조합은 소프트웨어 품질을 개선하고 지속적인 제공을 가능하게 하는 것을 목표로 합니다.
DevOps에 보안 관리를 추가하면 보안을 IT 세계와 소프트웨어 개발 세계 간의 공동 책임으로 통합하는 규율인 DevSecOps가 됩니다.
과거에는 보안이 최종 단계에서 프로젝트에 참여하는 전문 팀의 전적인 책임이었습니다. 이것은 몇 달 또는 몇 년 동안 지속되는 개발 주기에서 잘 작동했습니다. 그러나 몇 주 단위로 측정되는 애자일 개발 주기에서는 프로젝트 시작부터 끝까지 보안 관행을 고려해야 하며 전체 개발 및 IT 팀이 보안 책임을 공유해야 합니다.
애자일 방법론의 패러다임을 깨지 않고 DevSecOps가 작동하려면 통합이 자동화되어야 합니다. 이것이 보안 관리를 통합할 때 DevOps 워크플로가 느려지지 않도록 하는 유일한 방법입니다. 그리고 이러한 자동화에는 IDE(통합 개발 환경)와 같은 개발 도구를 보안 기능과 통합하는 적절한 메커니즘이 필요합니다.
목차
DevSecOps 도구의 유형
보안과 DevOps의 조합은 다양한 형태를 취할 수 있습니다. 이러한 이유로 다양한 유형의 DevSecOps 도구가 있으며 다음과 같이 요약할 수 있습니다.
- 오픈 소스 구성 요소의 취약성 스캐닝: 모든 종속성과 함께 분석된 코드 기반에 상주하는 오픈 소스 코드 구성 요소 및 라이브러리에서 가능한 취약성을 찾습니다.
- 정적 및 동적 애플리케이션 보안 테스트(SAST/DAST): 정적 테스트는 개발자의 소스 코드에서 안전하지 않은 코드를 스캔하여 잠재적인 보안 문제를 식별합니다. 동적 테스트는 소스 코드에 대한 액세스 없이 실행 중인 애플리케이션에 대한 보안 테스트를 수행합니다.
- 이미지 스캐닝: Docker 컨테이너의 취약점을 검색합니다.
- 인프라 자동화: 특히 클라우드 환경에서 인프라 구성의 다양한 구성 문제 및 취약성을 감지하고 수정합니다.
- 시각화: KPI 및 추세에 대한 가시성을 제공하여 시간 경과에 따른 취약점 수의 증가 또는 감소를 감지합니다.
- 위협 모델링: 전체 공격 영역에서 위협 위험을 예측하여 사전 예방적 의사 결정을 가능하게 합니다.
- 경고: 소음 수준을 줄이고 DevSecOps 워크플로의 중단을 방지하기 위해 비정상적인 이벤트가 식별되고 위협으로 우선 순위가 지정된 경우에만 보안 팀에 알립니다.
아래 목록은 “Sec”이라는 단어를 DevOps 워크플로에 통합하는 데 사용할 수 있는 DevSecOps 도구의 선별된 목록을 보여줍니다.
인빅티
Invicti는 개발 프로세스의 민첩성을 유지하면서 소프트웨어 제품에서 보안 관리를 수행하기 위해 SDLC에 통합할 수 있는 도구입니다.
Invicti가 수행하는 분석은 철저하여 SDLC 관리 속도를 희생하지 않고도 문제를 정확하게 감지할 수 있습니다.
Invicti에서 제공하는 자동화 옵션은 보안 작업 실행에 사람이 개입할 필요가 없으므로 팀의 노력을 한 달에 수백 시간 절약할 수 있습니다.
이러한 절감 효과는 실제로 중요한 취약점을 식별하고 문제 해결을 위해 가장 적절한 리소스에 자동으로 할당함으로써 향상됩니다.
Invicti는 또한 개발 중인 애플리케이션의 취약성과 위험을 줄이기 위한 노력에 대한 완전한 가시성을 제공합니다.
소나큐브
SonarQube는 코드의 취약점을 자동으로 검사하여 위협이 될 수 있는 버그를 스니핑합니다. 이 글을 쓰는 시점에서 거의 30개의 서로 다른 프로그래밍 언어를 지원합니다.
SonarQube의 고유한 QualityGates는 제품이 출시되기 전에 문제를 중지하는 간단한 방법을 나타냅니다. 또한 개발 팀에게 품질에 대한 공동 관점을 제공하여 모든 사람이 표준과 개발이 표준을 충족하는지 알 수 있도록 합니다.
SonarQube는 DevSecOps 파이프라인에 원활하게 통합되어 모든 팀원이 도구에서 생성된 보고서 및 피드백에 액세스할 수 있도록 합니다.
설치만 하면 SonarQube는 커밋이 깨끗한지, 프로젝트가 릴리스 준비가 되었는지 명확하게 표시합니다. 무언가 잘못된 경우 도구는 문제가 있는 위치와 해결책이 무엇인지 즉시 알려줍니다.
아쿠아
Aqua를 사용하면 소스 코드 작성에서 클라우드에 애플리케이션 배포에 이르기까지 소프트웨어 제품 수명 주기의 모든 단계에서 위협을 시각화하고 중지할 수 있습니다.
CNAPP(클라우드 네이티브 애플리케이션 보호 플랫폼)로 작동하는 이 도구는 소프트웨어 공급망 보안 검사, 위험 및 취약성 검사, 고급 맬웨어 보호 기능을 제공합니다.
Aqua의 통합 옵션을 사용하면 클라우드, 컨테이너, 서버리스, CI/CD 파이프라인 또는 오케스트레이터 등 개발 및 배포에 사용하는 플랫폼 및 메커니즘에 관계없이 애플리케이션을 보호할 수 있습니다. 또한 SIEM 플랫폼 및 분석 도구와 통합됩니다.
Aqua의 독특한 측면은 KSPM(Kubernetes Security Posture Management)을 통해 Kubernetes 컨테이너의 보안 제어와 Kubernetes 런타임의 고급 보호를 가능하게 한다는 것입니다. 기본 K8s 기능을 사용하면 컨테이너에 배포된 애플리케이션의 전체 수명 주기 동안 정책 기반 보호가 가능합니다.
ProwlerPro
ProwlerPro는 Amazon Web Services(AWS) 개발 환경에서 보안을 통제하기 위해 특별히 제작된 오픈 소스 도구입니다.
ProwlerPro는 계정을 생성하고 몇 분 만에 개발 파이프라인 스캔을 시작할 수 있도록 설계되어 귀하가 위치한 지역에 관계없이 인프라에 대한 전체적인 보기를 제공합니다. 시각화 도구를 사용하면 단일 창에서 모든 AWS 서비스의 보안 상태를 볼 수 있습니다.
ProwlerPro 계정을 만들고 실행하면 24시간마다 자동으로 일련의 권장 검사를 실행하도록 시스템을 구성할 수 있습니다. DevSecOps 워크플로가 느려지지 않도록 ProwlerPro를 사용한 스캔은 속도를 위해 병렬로 실행됩니다.
스캔 결과는 미리 정의된 일련의 대시보드에 표시되며 보안 태세의 모든 세부 수준에서 직접 통찰력을 드릴다운하여 쉽게 공유하고 탐색할 수 있습니다.
아마도
이미 DevOps 워크플로우가 있고 여기에 보안 스캔을 통합하려는 경우 Probely의 웹 애플리케이션 취약성 스캔 도구 및 API 덕분에 몇 분 안에 통합할 수 있습니다.
Probely의 접근 방식은 API 우선 개발을 기반으로 합니다. 즉, 도구의 각 새 기능이 먼저 API를 통해 제공된 다음 인터페이스에 추가됩니다. 이 전략을 사용하면 Probely를 워크플로 또는 사용자 정의 소프트웨어와 통합해야 하는 경우 항상 해당 API를 사용할 수 있습니다.
애플리케이션이 Probely가 생성하는 각 이벤트에 대한 알림을 받도록 웹후크를 등록할 수도 있습니다.
Probely는 다양한 기본 통합을 제공하므로 도구와 통합하기 위해 API를 사용할 필요가 없습니다. 워크플로에서 이미 Jira와 Jenkins를 사용하고 있다면 즉시 통합됩니다.
Probely는 CI/CD 파이프라인에서 스캔을 자동으로 시작하고 발견된 취약점을 Jira에서 문제로 등록합니다. 해당 취약점이 해결되면 다시 테스트하고 필요한 경우 Jira에서 해결되지 않은 문제를 다시 엽니다.
체코프
Checkov는 소프트웨어 제품을 배포하기 전에 구성 결함을 찾기 위해 클라우드 인프라의 구성을 스캔합니다. 공통 명령줄 인터페이스를 사용하여 Kubernetes, Terraform, Helm, CloudFormation, ARM 템플릿 및 서버리스 프레임워크와 같은 다양한 플랫폼에서 결과를 스캔합니다.
속성 기반 정책 체계를 통해 Checkov를 사용하면 컴파일 시간에 클라우드 리소스를 스캔하여 간단한 코드형 정책 Python 프레임워크를 사용하여 속성의 구성 오류를 감지할 수 있습니다. 무엇보다도 Checkov는 그래프 기반 YAML 정책을 사용하여 클라우드 리소스 간의 관계를 분석합니다.
CI/CD 파이프라인 및 버전 제어 시스템에 통합함으로써 Checkov는 대상 리포지토리의 컨텍스트에서 러너 매개변수를 실행, 테스트 및 수정합니다.
확장 가능한 통합 인터페이스 덕분에 아키텍처를 확장하여 맞춤형 정책, 억제 조건 및 공급자를 정의할 수 있습니다. 또한 인터페이스를 통해 지원 플랫폼, 빌드 프로세스 및 맞춤형 릴리스 시스템과 통합할 수 있습니다.
패러데이
Faraday를 사용하면 취약성 관리 및 제어 작업을 자동화하여 정말 중요한 작업에 집중할 수 있습니다. 워크플로를 사용하면 작업 반복을 피하기 위해 자유롭게 디자인할 수 있는 사용자 지정 이벤트로 모든 작업을 트리거할 수 있습니다.
Faraday는 보안 도구를 표준화하고 작업 흐름에 통합하여 80개 이상의 검색 도구에서 취약성 정보를 얻을 수 있는 기능을 제공합니다. 에이전트를 사용하면 스캐너가 워크플로에 자동으로 통합되어 데이터를 최대한 쉽게 수집 및 정규화하고 웹 인터페이스를 통해 볼 수 있는 결과를 생성합니다.
Faraday의 놀랍고 흥미로운 측면은 보안 정보를 저장하기 위해 중앙 집중식 저장소를 사용한다는 것입니다. 이 정보는 DevSecOps 팀의 다른 구성원이 쉽게 분석하고 테스트할 수 있습니다.
이는 다른 도구에서 보고된 중복 문제를 식별하고 결합할 수 있는 추가 이점을 제공합니다. 이렇게 하면 팀 구성원의 노력이 줄어들어 두 번 이상 보고된 동일한 문제에 대해 여러 번 주의를 기울여야 하는 것을 방지할 수 있습니다.
CircleCI
CircleCI를 가장 인기 있는 DevOps 보안 도구와 통합하려면 개발 파이프라인에 많은 파트너 중 하나를 포함해야 합니다. CircleCI 파트너는 SAST, DAST, 정적 컨테이너 분석, 정책 적용, 비밀 관리 및 API 보안을 비롯한 여러 범주의 솔루션 공급자입니다.
사용 가능한 orbs로 할 수 없는 개발 파이프라인을 보호하기 위해 무언가를 해야 하는 경우 orbs가 오픈 소스라는 사실을 활용할 수 있습니다. 따라서 기존 구에 기능을 추가하는 것은 PR에 대한 승인을 받고 병합하는 문제일 뿐입니다.
CircleCI 레지스트리에서 사용할 수 있는 오브 세트 외부에 있다고 생각되는 사용 사례가 있더라도 하나를 만들어 커뮤니티에 기여할 수 있습니다. 이 회사는 자동화된 orb 컴파일 생성 및 파이프라인 테스트를 위한 모범 사례 목록을 게시하여 작업을 쉽게 합니다.
파이프라인을 보호하기 위해 사내 개발의 필요성을 제거하고 팀이 타사 서비스를 활용할 수 있도록 합니다. CircleCI orbs를 사용하면 팀에서 해당 서비스를 통합하거나 관리하는 방법을 배울 필요 없이 해당 서비스를 사용하는 방법만 알면 됩니다.
트리비
Trivy는 보안 문제를 감지할 수 있는 여러 스캐너와 이러한 문제를 찾을 수 있는 다양한 대상이 있는 오픈 소스 보안 도구입니다. Trivy가 스캔하는 대상은 파일 시스템, 컨테이너 이미지, Git 리포지토리, 가상 머신 이미지, Kubernetes 및 AWS 리포지토리입니다.
이러한 가능한 대상을 모두 스캔하여 Trivy는 알려진 취약성, 구성 결함, 비밀 또는 민감한 정보, 소프트웨어 라이센스를 찾고 사용 중인 소프트웨어 및 운영 체제 패키지에 대한 종속성을 포함하여 소프트웨어 공급망의 문제를 감지할 수 있습니다.
Trivy와 통합할 수 있는 플랫폼 및 애플리케이션은 해당 생태계 페이지에서 찾을 수 있습니다. 이 목록에는 CircleCI, GitHub Actions, VS Code, Kubernetes 또는 JetBrains와 같이 가장 많이 사용되는 이름이 포함되어 있습니다.
Trivy는 apt, yum, brew 및 dockerhub에서 사용할 수 있습니다. 데이터베이스, 배포 환경, 시스템 라이브러리 등의 전제 조건이 없으며 첫 번째 스캔은 단 10초 만에 완료될 것으로 예상됩니다.
GitLeaks
Gitleaks는 Docker, Homebrew 또는 Go를 사용하여 설치할 수 있는 명령줄 인터페이스가 있는 오픈 소스 도구입니다. 또한 가장 널리 사용되는 플랫폼 및 운영 체제용 바이너리 실행 파일로도 사용할 수 있습니다. Gitleaks-Action을 통해 사전 커밋 후크 또는 GitHub 공유로 리포지토리에 직접 배포할 수도 있습니다.
명령 인터페이스는 간단하고 미니멀합니다. 코드에서 비밀을 탐지하고, 비밀을 보호하고, 스크립트를 생성하고, 도움말을 얻거나 도구 버전을 표시하는 단 5개의 명령으로 구성됩니다. detect 명령을 사용하면 리포지토리, 파일 및 디렉터리를 검색할 수 있습니다. 개발 머신은 물론 CI 환경에서도 사용할 수 있습니다.
GitLeaks 작업의 대부분은 감지 및 보호 명령을 사용하여 수행됩니다. 이들은 Git 리포지토리에서 작동하여 git log 또는 git diff 명령의 출력을 구문 분석하고 GitLeaks가 비밀을 탐지하고 보호하는 데 사용할 패치를 생성합니다.
경쟁력과 보안 유지
한편으로는 CI/CD 파이프라인의 민첩성과 속도가 빠른 시장 출시를 보장하는 핵심이며, 이는 다시 소프트웨어 개발자로서 경쟁력을 유지하는 핵심입니다.
반면에 개발 프로세스에 보안 도구를 포함하는 것은 논쟁의 여지가 없습니다. SDLC 일정에 부정적인 영향을 미치지 않고 보안을 통합하려면 DevSecOps 도구가 답입니다.