SEC11-BP06 프로그래밍 방식으로 소프트웨어 배포 - 보안 요소

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

SEC11-BP06 프로그래밍 방식으로 소프트웨어 배포

가능한 한 프로그래밍 방식으로 소프트웨어를 배포하세요. 이 접근 방식을 통해 인적 오류로 배포 실패나 예기치 않은 문제가 발생할 가능성을 줄일 수 있습니다.

원하는 성과: AWS 클라우드에서 보안을 구축하는 핵심은 데이터에 대한 접근을 막는 것입니다. 이러한 원칙에는 소프트웨어 배포 방법이 포함됩니다.

인력에 의존하여 소프트웨어를 배포하지 않으면 테스트한 것이 배포되고 매번 일관성 있게 배포가 이루어진다는 장점이 있습니다. 다른 환경에서 작동되도록 소프트웨어를 변경할 필요가 없습니다. 12가지 요소로 구성된 애플리케이션 개발의 원칙, 특히 구성의 외부화를 적용하면 변경하지 않고 동일한 코드를 여러 환경에 배포할 수 있습니다. 암호화된 서명 소프트웨어 패키지는 서로 다른 환경 간에 변경된 내용이 없음을 확인하는 좋은 방법입니다. 이 접근 방식을 통해 변경 프로세스의 위험을 줄이고 소프트웨어 릴리스의 일관성을 개선하는 결과를 얻을 수 있습니다.

일반적인 안티 패턴:

  • 프로덕션에 소프트웨어를 수동으로 배포합니다.

  • 다양한 환경에 맞게 소프트웨어를 수동으로 변경합니다.

이 모범 사례 확립의 이점:

  • 소프트웨어 릴리스 프로세스에 대한 신뢰도가 높아집니다.

  • 비즈니스 기능에 영향을 미치는 변경 실패 위험을 줄여줍니다.

  • 변경 위험 감소로 인해 릴리스 주기가 길어집니다.

  • 배포 중 예기치 않은 이벤트에 대한 자동 롤백 기능이 지원됩니다.

  • 테스트된 소프트웨어가 배포된 소프트웨어임을 암호화하여 증명하는 기능이 제공됩니다.

이 모범 사례가 확립되지 않을 경우 노출되는 위험 수준: 높음

구현 가이드

AWS 계정 구조를 구축하여 환경에서 지속적인 인적 액세스를 제거하고 CI/CD 도구를 사용하여 배포를 수행합니다. AWS Systems Manager Parameter Store와 같은 외부 소스에서 환경별 구성 데이터를 가져오도록 애플리케이션을 설계합니다. 패키지를 테스트한 후 서명하고, 배포하는 동안 서명을 검증합니다. 애플리케이션 코드를 푸시하도록 CI/CD 파이프라인을 구성하고 Canary를 사용하여 배포 성공을 확인합니다. AWS CloudFormation 또는 AWS CDK와 같은 도구를 사용하여 인프라를 정의한 다음, AWS CodeBuildAWS CodePipeline를 사용하여 CI/CD 작업을 수행합니다.

구현 단계

  • 효과적으로 정의된 CI/CD 파이프라인을 구축하여 배포 프로세스를 간소화합니다.

  • AWS CodeBuildAWS CodePipeline을 사용하여 CI/CD 기능을 제공하면 보안 테스트를 파이프라인에 간단하게 통합할 수 있습니다.

  • 다중 계정을 사용하여 환경 구성 백서의 AWS 환경 분리 지침을 따릅니다.

  • 프로덕션 워크로드가 실행 중인 환경에 대한 영구적인 인적 액세스 권한이 없는지 확인합니다.

  • 구성 데이터의 외부화를 지원하도록 애플리케이션을 설계합니다.

  • 블루/그린 배포 모델을 사용한 배포를 고려합니다.

  • Canary를 구현하여 소프트웨어의 배포 성공을 검증합니다.

  • AWS Signer 또는 AWS Key Management Service (AWS KMS)와 같은 암호화 도구를 사용하여 배포 중인 소프트웨어 패키지를 확인하고 서명합니다.

리소스

관련 모범 사례:

관련 문서:

관련 비디오:

관련 예제: