Trace Id is missing
주 콘텐츠로 건너뛰기
Microsoft Security

DevSecOps란 무엇인가요?

다중 클라우드 환경에서 소프트웨어 개발 수명 주기의 모든 단계에 보안 사례를 통합하는 방법을 알아봅니다.

DevSecOps 정의됨

개발, 보안 및 운영을 의미하는 DevSecOps는 보안을 소프트웨어 개발 수명 주기의 모든 단계에 통합하는 프레임워크입니다. 조직은 보안 취약성이 있는 코드를 릴리스할 위험을 줄이기 위해 이 접근 방식을 채택합니다. 공동 작업, 자동화 및 명확한 프로세스를 통해 팀은 문제를 해결하는데 훨씬 더 어렵고 비용이 많이 들 때까지 내버려 두기보다는 보안에 대한 책임을 공유합니다. DevSecOps는 다중 클라우드 보안 전략의 중요한 구성 요소입니다.

DevSecOps와 DevOps 비교

기존 소프트웨어 개발에서 프로젝트는 몇 개월 또는 몇 년 동안 순차적으로 수행되는 계획, 디자인, 개발, 통합 및 테스트를 위한 개별 단계로 나뉩니다. 이 방법은 매우 체계적이지만 많은 조직에서 너무 느리므로 지속적인 제품 개선에 대한 고객의’ 기대치를 충족하기가 어렵다고 생각합니다. 또한 보안은 일반적으로 맨 마지막에 적용되어 회사가 위반의 위험에 노출됩니다.

경쟁력을 유지하기 위해 많은 회사에서 시간이 더 오래 걸리는 기능이 풍부한 프로젝트보다 고품질 코드의 작은 패킷을 배달하는 데 우선순위를 두는 DevOps 모델을 채택했습니다. 이 프레임워크에서 소프트웨어 개발 및 운영 팀은 협업하여 프로세스 전체에서 테스트 및 통합을 통합합니다. 자동화, 표준화된 프로세스 및 협업을 통해 팀은 품질 저하 없이 빠르게 움직일 수 있습니다.

DevSecOps는 프로세스의 모든 측면에 보안을 구축하는 DevOps의 향상된 기능입니다. 목표는 프로젝트 시작부터 보안 문제를 해결하는 것입니다. 이 프레임워크에서 전체 팀은 품질 보증과 코드 통합뿐만 아니라 보안도 책임집니다. 실제로 이는 팀이 계획 중에 보안에 미치는 영향을 논의하고 마지막까지 기다리지 않고 개발 환경에서 보안 문제를 테스트하기 시작한다는 것을 의미합니다. 이 방법의 또 다른 이름은 shift left 보안입니다.

DevSecOps가 중요한 이유는 무엇인가요?

공격자가 조직의’데이터 및 자산에 액세스하는 데 사용하는 여러 가지 방법이 있지만 일반적인 방법은 소프트웨어 취약성을 악용하는 것입니다. 이러한 유형의 위반은 비용이 많이 들고 시간이 오래 걸리며 심각도에 따라 회사의’평판에 영향을 줍니다. DevSecOps 프레임워크는 악의를 가진 행위자가 활용할 수 있는 잘못된 구성 및 기타 취약성으로 소프트웨어를 배포할 위험을 줄입니다.

DevSecOps의 주요 구성 요소

성공적인 DevSecOps 프로세스에는 다음 구성 요소가 포함됩니다.

  • 연속 통합

    연속 통합을 통해 개발자는 하루에 여러 번 중앙 리포지토리에 코드를 커밋합니다. 그런 다음 코드는 자동으로 통합되고 테스트됩니다. 이 접근 방식을 사용하면 팀이 해결해야 하는 몇 가지 문제가 있을 때까지 기다리지 않고 프로세스 초기에 통합 문제 및 버그를 파악할 수 있습니다.

  • 지속적인 업데이트

    연속 통합을 기반으로 지속적인 업데이트가 빌드되어 빌드 환경에서 스테이징 환경으로 코드를 옮기는 프로세스를 자동화할 수 있습니다. 스테이징 시에는 단위 테스트 외에도 소프트웨어가 자동으로 테스트되어 사용자 인터페이스가 작동하고, 코드가 성공적으로 통합되고, API가 안정적이며, 소프트웨어가 예상 트래픽 볼륨을 처리할 수 있는지 확인합니다. 이 방법의 목표는 고객에게 가치를 제공하는 프로덕션 준비 코드를 일관되게 제공하는 것입니다.

  • 지속적인 보안

    전체 소프트웨어 개발 수명 주기에 보안을 구축하는 것은 DevSecOps의 핵심 구성 요소입니다. 여기에는 프로세스 초기에 위협 모델링이 포함되고 개발자의 자체 환경부터 시작하여 전체 수명 주기 동안 자동화된 보안 테스트가 포함됩니다. 조직은 초기에 자주 보안 문제에 대해 소프트웨어를 철저히 테스트하여 최소한의 문제로 효율적으로 소프트웨어를 제공할 수 있습니다.

  • 커뮤니케이션 및 공동 작업

    DevSecOps는 긴밀하게 협력하는 개인과 팀에 크게 의존합니다. 연속 통합을 위해서는 코드에서 충돌을 해결하기 위해 협업해야 하며, 팀은 동일한 목표를 통합하기 위해 효과적으로 의사소통해야 합니다.

DevSecOps를 구현하는 방법

DevOps 프로세스에 보안을 추가하려면 신중한 계획이 필요합니다. 팀에게 최소한의 마찰을 도입하고 가장 큰 보안 보상을 제공하는 프로세스로 천천히 시작하세요. 다음은 일반적인 DevOps 스프린트에 보안을 추가하는 몇 가지 방법입니다.

  • 계획 및 개발

    개발 스프린트 초기에 보안을 도입하면 나중에 취약성을 줄일 수 있을 뿐만 아니라, 코드가 빌드되고 통합되기 전에 문제를 보다 쉽게 해결할 수 있기 때문에 시간도 절약됩니다. 계획 및 개발 중에 위협 모델링을 사용하여 애플리케이션에 대한 잠재적 위협을 식별하고 완화합니다. 이렇게 하면 처음부터 바로 애플리케이션에 보안을 구축하는 데 도움이 됩니다. 코드가 공유 리포지토리에 커밋되기 전에 보안 문제를 파악하려면 통합 개발 환경 보안 플러그 인과 같은 자동화된 검사를 구현하여 작성한 코드에 잠재적인 보안 위험이 있는 경우 개발자에게 즉각적인 피드백을 제공합니다. 코드를 검토하는 동안 보안 전문 지식이 있는 사람이 개선에 대한 권장 사항을 제공하도록 합니다.

  • 코드 커밋

    성공적인 DevSecOps 프로세스의 키 중 하나는 연속 통합입니다. 개발자는 일반적으로 통합 문제가 조기에 발견되도록 하루에 여러 번 중앙 리포지토리에 코드를 커밋합니다. 이 단계에 자동화된 보안 검사를 추가하는 것이 중요합니다. 여기에는 타사 라이브러리 및 종속성 검사, 단위 테스트 및 정적 애플리케이션 보안 테스트가 포함될 수 있습니다. 또한 역할 기반 액세스 제어를 배포하여 악성 코드를 실행하거나 자격 증명을 도용하려는 공격자로부터 연속 통합 및 지속적인 업데이트 인프라를 보호하는 것이 중요합니다.

  • 빌드 및 테스트

    테스트 환경에서 자동화된 보안 스크립트를 실행하면 이전에 검색되지 않은 잠재적인 문제를 파악하는 데 도움이 됩니다. 이 단계에서 실행할 수 있는 보안 테스트 중 일부에는 동적 애플리케이션 보안 테스트, 인프라 검사, 컨테이너 검사, 클라우드 구성 유효성 검사 및 보안 승인 테스트가 포함됩니다.

  • 프로덕션

    애플리케이션이 프로덕션 환경에 배포되면 일부 조직에서는 침투 테스트에 참여하여 라이브 환경에서 약점을 찾으려고 시도합니다. 침투 테스트에서 사람들은 공격자의 사고 방식을 채택하고 애플리케이션 보안을 위반하는 방법을 검색합니다.

  • 운영

    최상의 DevSecOps 프로세스도 모든 것을 포착하지 않으므로 애플리케이션에서 취약성 및 위협을 지속적으로 모니터링하는 것이’중요합니다. 분석 데이터는 보안 태세가 개선되고 있는지 평가하고 최적화 영역을 강조 표시하는 데 도움이 될 수 있습니다.

DevSecOps 도구 및 기술

보안 도구를 선택할 때는 현재 DevOps 기술과 잘 작동하는 도구를 선택하는 것이 중요합니다. 이렇게 하면 전체 프로세스에 보안을 보다 쉽게 통합할 수 있습니다. 다음은 필요할 수 있는 몇 가지 유형의 도구입니다.

  • 코드 검사로서의 인프라

    효율성을 개선하기 위해 DevSecOps 팀은 일반적으로 Terraform과 같은 오픈 소스 도구를 사용하여 수동으로 수행하는 대신 코드를 통해 네트워크, 가상 머신 및 부하 분산 장치와 같은 인프라를 관리하고 프로비전합니다. Terraform을 사용하면 수백 또는 수천 개의 서버에서 인프라를 일관되게 설정하고 업데이트할 수 있습니다. 잘못된 구성이 프로덕션 환경에 배포되는 위험을 줄이기 위해 코드 검사 도구로서의 인프라는 코드 수준의 인프라에서 보안 정책 및 표준을 준수하지 않는지 자동으로 확인합니다.

  • 정적 애플리케이션 보안 테스트

    코드를 컴파일하기 전에 DevSecOps 개발자는 보안 취약성에 대한 사용자 지정 코드 테스트를 시작합니다. 이렇게 하면 빌드에 영향을 주지 않고 문제를 해결할 수 있습니다. 정적 애플리케이션 보안 테스트 도구를 사용하면 자동 검사 및 실시간 피드백을 통해 이 프로세스를 더 쉽게 수행할 수 있습니다. 많은 도구는 위험한 코드를 정확히 식별하고 제안된 수정 사항을 제공합니다.

  • 소프트웨어 구성 분석

    팀에서 애플리케이션 및 기능을 보다 효율적으로 빌드하는 한 가지 방법은 타사 플러그 인 및 프레임워크를 사용하는 것입니다. 이러한 미리 빌드된 도구는 시간을 절약하지만 라이선스 문제, 잘못 작성된 코드 또는 보안 취약성과 같은 위험을 초래할 수도 있습니다. 소프트웨어 구성 분석 도구는 애플리케이션에서 오픈 소스 구성 요소를 식별하고 재산적 가치를 가지는 또는 무료 데이터베이스에 대해 평가하여 라이선스 위반, 보안, 품질 문제를 검색합니다.

  • 대화형 애플리케이션 보안 테스트

    품질 보증 테스트 중 또는 애플리케이션을 사용할 때 대화형 애플리케이션 보안 도구는 코드를 검사하여 취약성을 찾고 코드에서 문제가 있는 위치를 식별하는 보고서를 제공합니다.

  • 동적 애플리케이션 보안 테스트

    동적 애플리케이션 보안 테스트는 악의를 가진 행위자가 애플리케이션을 공격하는 데 사용할 수 있는 메서드를 에뮬레이트합니다. 이 테스트는 애플리케이션이 실행되는 동안 발생하며 미리 정의된 사용 사례를 기반으로 합니다.

  • 컨테이너 검사

    컨테이너는 개발자가 자체 포함된 코드 단위를 쉽게 배포하는 데 도움이 되므로 DevSecOps에서 널리 사용됩니다. 컨테이너 내에는 컨테이너에 대한 프로세스를 실행하는 코드가 포함된 컨테이너 이미지가 있습니다. 그러나 이러한 이미지는 종종 기존 이미지를 사용하여 빌드되거나 공용 리포지토리에서 가져옵니다. 컨테이너 검사 도구는 컨테이너를 검사하고 공용 또는 재산적 가치를 가지는 취약성 데이터베이스와 비교하여 잠재적인 보안 문제를 파악합니다.

DevSecOps 모범 사례

DevSecOps는 프로세스 및 도구만큼이나 문화 변화에 관한 것입니다. 다음은 이 프레임워크를 최대한 원활하게 채택하는 데 도움이 되는 몇 가지 모범 사례입니다.

  • 문화 바꾸기

    사람들이 작업 방식을 변경하는 데 어려움을 겪을 수 있으며 갈등이 발생할 수 있음을 인식합니다. 적응을 돕기 위해 조직의 목표와 기대치를 명확하게 전달하고, 열린 대화에 대한 많은 기회를 제공하고, 팀이 가장 적합한 도구, 프로세스 및 흐름을 찾을 때까지 유연해야 할 것으로 예상합니다.

  • 요구 사항 및 메트릭 정의

    최소 보안 기준을 설정합니다. 지침은 산업 및 규정 요구 사항 또는 OWASP(Open Worldwide Application Security Project®) 상위 10위 웹 애플리케이션에 대한 중요한 위험 및 SANS 상위 25위 소프트웨어 오류를 참조하세요. 요구 사항을 정의한 후에는 진행 상황을 모니터링하는 데 도움이 되도록 추적할 메트릭을 결정합니다.

  • 작게 시작

    보안 자동화 도구는 문제에 대한 코드를 확인하는 많은 옵션을 제공하지만, 특히 DevSecOps 채택 초기에 모든 옵션을 켜면 팀에 부담을 줄 수 있습니다. 어떤 도구를 구현하고 얼마나 많은 문제를 검사할지에 대해 신중해야 합니다.

  • 위협 모델링 수행

    필요에 따라 간단하거나 상세하고 기술적일 수 있는 위협 모델링 프로세스를 개발합니다. 다음을 포함하는 애플리케이션의 현실적인 보안 보기를 문서화하려면 이 접근 방법을 사용합니다.

    • 공격자가 애플리케이션의 디자인을 악용하는 방법.
    • 취약성을 해결하는 방법.
    • 다양한 문제의 우선순위.
  • 자동화 구현

    자동화는 DevSecOps 프로세스에서 품질과 속도를 모두 사용하도록 설정하는 데 핵심적인 요소입니다. 연속 통합 및 지속적인 업데이트 수명 주기의 모든 단계에서 자동화된 보안 검사를 포함하면 프로세스 속도를 크게 늦추지 않고도 애플리케이션의 보안을 향상시킬 수 있습니다.

  • 종속성 관리

    대부분의 개발자는 타사 패키지 및 라이브러리를 사용하여 애플리케이션을 효율적으로 빌드합니다. 문제는 이러한 솔루션 중 일부에 보안 결함이 있으며 개발자가 항상 최신 상태로 유지하는 것에 대해 성실하지 않다는 것입니다. 위험을 줄이려면 사용하는 구성 요소가 보안 위험에 대해 심사되었는지 확인하고 업데이트에 대한 표준화된 프로세스를 개발합니다.

  • 평가 및 개선

    프로세스가 작동하는 방식을 정기적으로 평가하고 필요에 따라 조정하여 조직이 목표를 충족하는지 확인합니다. 스프린트가 완료된 후 비난 없는 사후 평가는 개선 기회를 파악하는 데 도움이 될 수 있습니다. 분석 데이터 및 위협 인텔리전스는 현재 접근 방식으로 충족되지 않는 보안 요구 사항이 있는지 확인하는 데도 도움이 될 수 있습니다.

클라우드 네이티브 애플리케이션용 DevSecOps

클라우드 네이티브 애플리케이션클라우드 네이티브 애플리케이션은 클라우드용으로 설계되었으며 일반적으로 공급업체 중립이므로 한 클라우드에서 다른 클라우드로 포팅할 수 있습니다. 확장성이 뛰어나고 복원력이 뛰어나도록 설계되어 개발팀은 일반적으로 마이크로 서비스, 컨테이너 및 자동화를 사용하여 빌드하므로 이상적으로 DevSecOps 프로세스에 적합합니다. 클라우드 네이티브 애플리케이션을 위한 개발 프로세스에 지속적인 보안, 연속 통합 및 지속적인 업데이트를 구축하면 보안을 손상시키지 않고 확장성을 구현할 수 있습니다. DevOps용 Microsoft Defender와 같은 자동화된 보안 솔루션을 사용하여 코드 및 전체 DevOps 파이프라인을 보호할 수 있습니다. 애플리케이션을 클라우드에 배포한 후 위험을 계속 모니터링합니다. CWPP(클라우드 워크로드 보호 플랫폼)는 다중 클라우드 환경에서 워크로드에 대한 위협을 감지하고 완화하여 이러한 애플리케이션 및 기본 데이터를 보호하는 데 도움을 줍니다. CSPM(클라우드 보안 태세 관리) 솔루션은 환경 전체의 잘못된 구성 및 취약성을 발견하고 해결합니다.

Microsoft Security에 대한 자세한 정보

클라우드용 Microsoft Defender

클라우드 네이티브 애플리케이션 보호 플랫폼을 사용하여 개발부터 런타임에 이르기까지 다중 클라우드 및 하이브리드 환경을 보호합니다.

Microsoft Defender for Cloud Apps

이 SaaS 솔루션으로 앱과 데이터를 보호하고 앱 보아 태세를 향상하는 방식을 현대화하세요.

클라우드용 Microsoft Defender 보안 태세 관리

상황별 클라우드 보안 태세 관리로 다중 클라우드 환경에서 가장 심각한 위험에 중점을 두세요.

DevOps용 Microsoft Defender

다중 클라우드 및 다중 파이프라인 환경 전반에서 통합된 DevOps 보안 관리를 확보하세요.

자주 묻는 질문

  • DevSecOps는 전체 소프트웨어 개발 수명 주기에 보안을 통합하는 프로세스입니다. 조직은 보안 취약성이 있는 코드를 릴리스할 위험을 줄이기 위해 이 접근 방식을 채택합니다. 공동 작업, 자동화 및 명확한 프로세스를 통해 팀은 문제를 해결하는데 훨씬 더 어렵고 비용이 많이 들 때까지 내버려 두기보다는 보안에 대한 책임을 공유합니다.

  • DevSecOps는 개발, 보안 및 운영을 의미합니다. 이는 보안을 소프트웨어 개발의 모든 단계에 통합하는 프로세스를 의미합니다.

  • Shift left는 개발 프로세스의 시작 부분에서 시작하는 보안 사례를 통합하는 것을 의미하는 DevSecOps의 개념입니다.

  • DevSecOps 프레임워크에는 지속적인 통합, 지속적인 업데이트 및 지속적인 보안이 포함됩니다. 이는 보안, 운영 및 보안 팀이 협력하여 고품질 소프트웨어를 신속하게 제공하는 동시에 보안 취약성을 줄이는 데 대한 책임을 공유하는 방법입니다.

  • 하나의 DevSecOps 프로세스는 없지만 이러한 프로젝트를 실행하는 일반적인 방법은 각각 계획 및 개발, 빌드 및 테스트 및 프로덕션의 구성 요소를 포함하는 스프린트로 작업을 나누는 것입니다. 스프린트 전체에서 팀은 자동화를 사용하여 품질 보증 문제를 지속적으로 해결하고, 지속적으로 통합하고, 보안 위험을 지속적으로 테스트합니다.

Microsoft 팔로우