SEC11-BP02 개발 및 릴리스 수명 주기를 통한 테스트 자동화
개발 및 릴리스 수명 주기 전반에 걸쳐 보안 속성 테스트를 자동화하세요. 자동화를 구현하면 릴리스에 앞서 소프트웨어의 잠재적인 문제를 일관되고 반복적으로 손쉽게 식별할 수 있어 소프트웨어 제공 중에 보안 문제가 발생할 위험이 줄어듭니다.
원하는 결과: 자동화된 테스트의 목표는 개발 수명 주기 전반에 걸쳐 잠재적인 문제를 조기에 자주 탐지할 수 있는 프로그래밍 방식을 제공하는 것입니다. 회귀 테스트를 자동화하면 기능 테스트 및 비기능 테스트를 다시 실행하여 이전에 테스트한 소프트웨어가 변경 후에도 예상대로 작동하는지 확인할 수 있습니다. 보안 장치 테스트를 정의하여 인증 정보 손상 또는 누락과 같은 일반적인 구성 오류를 확인하면 이러한 문제를 개발 프로세스 초기에 식별하고 해결할 수 있게 됩니다.
테스트 자동화는 애플리케이션의 요구 사항과 원하는 기능을 기반으로 애플리케이션 검증을 위해 특별히 제작된 테스트 사례를 사용합니다. 자동화된 테스트 결과는 생성된 테스트 출력을 각각의 예상 출력과 비교하여 전체 테스트 수명 주기를 가속화합니다. 회귀 테스트 및 장치 테스트 세트와 같은 테스트 방법론이 자동화에 가장 적합합니다. 보안 속성 테스트를 자동화하면 빌더가 보안 검토를 기다리지 않고도 자동으로 피드백을 받을 수 있습니다. 정적 또는 동적 코드 분석의 형태로 자동화된 테스트는 코드 품질을 개선하고 개발 수명 주기 초기에 잠재적인 소프트웨어 문제를 탐지하는 데 도움이 됩니다.
일반적인 안티 패턴:
-
자동화된 테스트의 테스트 사례 및 테스트 결과를 전달하지 않습니다.
-
릴리스 직전에만 자동화된 테스트를 수행합니다.
-
요구 사항이 자주 변경되는 테스트 사례를 자동화합니다.
-
보안 테스트 결과를 처리하는 방법에 대한 지침을 제공하지 못합니다.
이 모범 사례 확립의 이점:
-
시스템의 보안 속성을 평가하는 사용자에 대한 의존도를 낮춥니다.
-
여러 작업 흐름에서 일정한 결과를 도출하여 일관성이 향상됩니다.
-
프로덕션 소프트웨어에 보안 문제가 발생할 가능성이 줄어듭니다.
-
소프트웨어 문제를 조기에 발견하여 탐지부터 해결에 걸리는 시간이 단축됩니다.
-
여러 작업 흐름에 걸쳐 체계적이거나 반복적인 동작에 대한 가시성이 향상되어 조직 전체의 개선을 추진하는 데 유용합니다.
이 모범 사례를 따르지 않을 경우 노출 위험도: 중간
구현 가이드
소프트웨어를 구축할 때 다양한 소프트웨어 테스트 메커니즘을 채택하여 애플리케이션의 비즈니스 논리에 바탕을 둔 기능적 요구 사항과 애플리케이션 신뢰성, 성능, 보안에 중점을 둔 비기능적 요구 사항을 기반으로 애플리케이션을 테스트합니다.
정적 애플리케이션 보안 테스트(SAST)는 비정상적인 보안 패턴에 대한 소스 코드를 분석하고 결함이 발생하기 쉬운 코드를 표시해 줍니다. SAST는 문서(요구 사항 사양, 설계 설명서, 설계 사양)와 같은 정적 입력 및 애플리케이션 소스 코드를 전적으로 사용하여 알려진 여러 보안 문제를 테스트합니다. 정적 코드 분석기는 대량의 코드를 신속하게 분석하는 데 도움이 됩니다. NIST Quality Group
실행 중인 애플리케이션을 테스트하여 잠재적으로 예상치 못한 동작을 식별하는 동적 분석 보안 테스트(DAST) 방법론으로 정적 테스트를 보완합니다. 동적 테스트를 사용하면 정적 분석을 통해 탐지할 수 없는 잠재적 문제를 감지할 수 있습니다. 코드 리포지토리, 구축 및 파이프라인 단계에서 테스트하면 코드 입력 시 발생 가능한 여러 유형의 잠재적 문제를 확인할 수 있습니다. Amazon CodeWhisperer
Security for Developers 워크숍
SDLC를 진행하면서 보안 팀과 함께 정기적인 애플리케이션 검토를 포함하는 반복 프로세스를 수립하세요. 이러한 보안 검토에서 수집된 피드백은 릴리스 준비 상태 검토 과정에서 해결하고 검증해야 합니다. 검토를 통해 강력한 애플리케이션 보안 태세를 확립하고, 빌더에게 잠재적인 문제를 해결하는 데 도움이 되는 실용적인 피드백을 제공할 수 있습니다.
구현 단계
-
보안 테스트가 포함된 IDE, 코드 검토 및 CI/CD 도구를 일관성 있게 구현합니다.
-
문제를 해결해야 한다고 빌더에게 통보하는 대신 SDLC의 어느 지점에서 파이프라인을 차단하는 것이 적절한지 고려해 보세요.
-
Security for Developers 워크숍
에서는 정적 및 동적 테스트를 릴리스 파이프라인에 통합하는 예를 제공합니다. -
개발자 IDE와 통합된 Amazon CodeWhisperer
및 커밋 시점에 코드를 스캔하는 Amazon CodeGuru Reviewer 와 같은 자동화된 도구를 사용하여 테스트 또는 코드 분석을 수행하면 빌더가 적시에 피드백을 받을 수 있습니다. -
AWS Lambda를 사용하여 구축하면 Amazon Inspector
를 통해 함수의 애플리케이션 코드를 스캔할 수 있습니다. -
AWS CI/CD 워크숍
은 AWS에서 CI/CD 파이프라인을 구축하기 위한 시작점을 제공합니다. -
CI/CD 파이프라인에 자동화된 테스트가 포함된 경우 티켓팅 시스템을 사용하여 소프트웨어 문제의 알림 및 해결 방법을 추적해야 합니다.
-
결과를 생성할 수 있는 보안 테스트의 경우 해결 지침에 연결하면 빌더가 코드 품질을 개선하는 데 도움이 됩니다.
-
자동화된 도구의 결과를 정기적으로 분석하여 다음 자동화, 빌더 교육 또는 인식 캠페인의 우선순위를 지정합니다.
리소스
관련 문서:
-
AWS 보안 컴피턴시 파트너
(애플리케이션 보안용) -
Choosing a Well-Architected CI/CD approach
(Well-Architected CI/CD 접근 방법 선택) -
Monitoring CodeCommit events in Amazon EventBridge and Amazon CloudWatch Events(Amazon EventBridge와 Amazon CloudWatch Events에서 CodeCommit 이벤트 모니터링)
-
Secrets detection in Amazon CodeGuru Review(Amazon CodeGuru 검토의 비밀 탐지)
-
Accelerate deployments on AWS with effective governance
(효과적인 거버넌스를 통한 AWS의 배포 가속화) -
How AWS approaches automating safe, hands-off deployments
(AWS 접근 방식으로 안전하게 자동 배포를 자동화하는 방법)
관련 동영상:
-
Hands-off: Automating continuous delivery pipelines at Amazon
(자동: Amazon에서 지속적 전달 파이프라인 자동화) -
Automating cross-account CI/CD pipelines
(크로스 계정 CI/CD 파이프라인 자동화)
관련 예시:
-
Industry awareness for developers
(개발자를 위한 업계 인지도) -
AWS CodePipeline 거버넌스
(GitHub) -
Security for Developers workshop
(Security for Developers 워크숍) -
AWS CI/CD Workshop
(AWS CI/CD 워크숍)