다음을 통해 공유


Microsoft SDL(보안 개발 수명 주기)

보안 및 개인 정보 보호는 보안 소프트웨어를 개발할 때 사후 고려해서는 안 되며, 제품 수명 주기의 모든 지점에서 고려되도록 공식적인 프로세스가 마련되어 있어야 합니다. Microsoft의 SDL(보안 개발 수명 주기)은 모든 소프트웨어 제품의 개발 및 운영에 포괄적인 보안 요구 사항, 기술별 도구 및 필수 프로세스를 포함합니다. Microsoft의 모든 개발 팀은 SDL 프로세스 및 요구 사항을 준수해야 하므로 개발 비용이 감소하면서 취약성이 적고 덜 심각한 소프트웨어가 더 안전합니다.

보안 개발 수명 주기 프로세스.

Microsoft SDL은 5개의 핵심 단계와 2개의 지원 보안 활동을 포함한 7개의 구성 요소로 구성됩니다. 5가지 핵심 단계는 요구 사항, 설계, 구현, 확인 및 릴리스입니다. 이러한 각 단계에는 모든 보안 및 개인 정보 보호 요구 사항 및 모범 사례가 올바르게 해결되도록 하기 위한 필수 검사 및 승인이 포함되어 있습니다. 두 가지 지원 보안 활동인 학습 및 응답은 핵심 단계 전후에 각각 수행되어 제대로 구현되고 배포 후에도 소프트웨어가 안전하게 유지됩니다.

교육

모든 Microsoft 직원은 자신의 역할과 관련된 특정 교육뿐만 아니라 일반 보안 및 개인 정보 보호 인식 교육을 완료해야 합니다. 채용 시 신입 사원에게 초기 교육이 제공되며, Microsoft에서 근무하는 동안 연간 새로 고침 교육이 필요합니다.

또한 개발자와 엔지니어는 보안 기본 사항 및 보안 개발의 최근 추세에 대한 정보를 유지하기 위해 역할별 교육에 참여해야 합니다. 모든 정규직 직원, 인턴, 우발적 인 직원, 하청 업체 및 제 3 자는 고급 보안 및 개인 정보 보호 교육을 받을 수있는 기회를 권장하고 제공합니다.

요구 사항

Microsoft에서 개발하는 모든 제품, 서비스 및 기능은 명확하게 정의된 보안 및 개인 정보 요구 사항부터 시작합니다. 보안 애플리케이션의 기초이며 설계를 알릴 수 있습니다. 개발 팀은 제품이 처리할 데이터 형식, 알려진 위협, 모범 사례, 규정 및 업계 요구 사항 및 이전 인시던트에서 배운 교훈과 같은 요인에 따라 이러한 요구 사항을 정의합니다. 일단 정의되면 요구 사항이 명확하게 문서화되고 추적됩니다.

소프트웨어 개발은 지속적인 프로세스입니다. 즉, 관련 보안 및 개인 정보 보호 요구 사항은 기능 및 위협 환경의 변화를 반영하기 위해 제품의 수명 주기 전반에 걸쳐 변경됩니다.

Design

보안, 개인 정보 보호 및 기능 요구 사항이 정의되면 소프트웨어 설계가 시작될 수 있습니다. 디자인 프로세스의 일부로 위험에 따라 잠재적 위협을 식별, 분류 및 평가하는 데 도움이 되는 위협 모델이 만들어집니다. 소프트웨어가 변경될 때 위협 모델은 각 제품의 수명 주기 동안 유지 관리 및 업데이트해야 합니다.

위협 모델링 다이어그램.

위협 모델링 프로세스는 제품의 다양한 구성 요소와 인증과 같은 주요 기능 시나리오에서 서로 상호 작용하는 방법을 정의하는 것으로 시작합니다. 사용되는 주요 데이터 흐름 상호 작용, 데이터 형식, 포트 및 프로토콜을 시각적으로 나타내기 위해 DFD(Data Flow 다이어그램)가 만들어집니다. DFD는 제품의 보안 요구 사항에 추가되는 완화를 위한 위협을 식별하고 우선 순위를 지정하는 데 사용됩니다.

서비스 팀은 Microsoft의 Threat Modeling Tool 사용하여 위협 모델을 만들어 팀이 다음을 수행할 수 있도록 합니다.

  • 시스템의 보안 디자인에 대해 통신
  • 검증된 방법론을 사용하여 잠재적인 보안 문제에 대한 보안 디자인 분석
  • 보안 문제에 대한 완화 제안 및 관리

제품이 출시되기 전에 허용되지 않는 위험에 대한 완화를 포함하여 모든 위협 모델이 정확도 및 완전성을 검토합니다.

구현

구현은 개발자가 이전 두 단계에서 만든 계획에 따라 코드를 작성하는 것으로 시작합니다. Microsoft는 개발자가 디자인하는 소프트웨어의 모든 보안, 개인 정보 및 기능 요구 사항을 효과적으로 구현할 수 있는 보안 개발 도구 제품군을 개발자에게 제공합니다. 이러한 도구에는 컴파일러, 보안 개발 환경 및 기본 제공 보안 검사가 포함됩니다.

확인

작성된 코드를 해제하려면 코드가 SDL을 준수하고 디자인 요구 사항을 충족하며 코딩 오류가 없는지 확인하기 위해 몇 가지 검사 및 승인이 필요합니다. 수동 검토는 코드를 개발한 엔지니어와 별도로 검토자가 수행합니다. 의무 분리는 우발적이거나 악의적인 피해를 초래하는 코드를 작성하고 릴리스할 위험을 최소화하기 위한 이 단계에서 중요한 제어입니다.

또한 다양한 자동화된 검사가 필요하며, 검사 동안 및 빌드가 컴파일될 때 코드를 분석하기 위해 파이프라인에 기본 제공됩니다. Microsoft에서 사용되는 보안 검사는 다음 범주에 속합니다.

  • 정적 코드 분석: 코드에 자격 증명이 있는지를 포함하여 잠재적인 보안 결함을 위해 소스 코드를 분석합니다.
  • 이진 분석: 이진 코드 수준에서 취약성을 평가하여 코드가 프로덕션 준비 상태인지 확인합니다.
  • 자격 증명 및 비밀 스캐너: 소스 코드 및 구성 파일에서 자격 증명 및 비밀 노출의 가능한 인스턴스를 식별합니다.
  • 암호화 검사: 소스 코드 및 코드 실행에서 암호화 모범 사례의 유효성을 검사합니다.
  • 퍼지 테스트: 잘못된 형식의 예기치 않은 데이터를 사용하여 API 및 파서를 실행하여 취약성을 검사 오류 처리의 유효성을 검사합니다.
  • 구성 유효성 검사: 보안 표준 및 모범 사례에 대해 프로덕션 시스템의 구성을 분석합니다.
  • CG(구성 요소 거버넌스): 오픈 소스 소프트웨어 검색 및 버전, 취약성 및 법적 의무 확인

수동 검토자 또는 자동화된 도구에서 코드와 관련된 문제를 발견하면 제출자에게 알림이 전송되며, 검토를 위해 제출하기 전에 필요한 변경을 수행해야 합니다.

또한 침투 테스트는 내부 및 외부 공급자가 Microsoft 온라인 서비스 정기적으로 수행합니다. 침투 테스트는 다른 방법으로 감지되지 않은 보안 결함을 검색하기 위한 또 다른 방법을 제공합니다. Microsoft의 침투 테스트에 대한 자세한 내용은 Microsoft 365의 공격 시뮬레이션을 참조하세요.

릴리스

필요한 모든 보안 테스트 및 검토를 통과한 후 빌드가 모든 고객에게 즉시 릴리스되지는 않습니다. 빌드는 SDP(안전한 배포 프로세스)라고 하는 링이라고 하는 더 크고 큰 그룹에 체계적이고 점진적으로 릴리스됩니다. SDP 링은 일반적으로 다음과 같이 정의할 수 있습니다.

  • 링 0: 서비스 또는 기능을 담당하는 개발 팀
  • 링 1: 모든 Microsoft 직원
  • 링 2: 대상 릴리스 채널에 organization 또는 특정 사용자를 구성한 Microsoft 외부 사용자
  • 링 3: 하위 단계의 전 세계 표준 릴리스

빌드는 이전 링의 안정성을 위해 적절하게 테스트되었기 때문에 링 3을 제외하고 부하 기간이 높은 적절한 기간 동안 이러한 각 링에 남아 있습니다.

응답

모든 Microsoft 서비스는 릴리스 후 광범위하게 기록되고 모니터링되며, 중앙 집중식 독점 거의 실시간 모니터링 시스템을 사용하여 잠재적인 보안 인시던트를 식별합니다. Microsoft의 보안 모니터링 및 보안 인시던트 관리에 대한 자세한 내용은 보안 모니터링 개요Microsoft 보안 인시던트 관리를 참조하세요.