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

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

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

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

교육

모든 Microsoft 직원은 자신의 역할에 적합한 일반 보안 인식 교육 및 특정 교육을 완료해야 합니다. 초기 보안 인식 교육은 채용 시 신입 사원에게 제공되며, Microsoft에서 근무하는 동안 연간 재교육 교육이 필요합니다.

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

요구 사항

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

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

디자인

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

위협 모델링 다이어그램.

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

개발자는 모든 위협 모델에 Microsoft의 Threat Modeling Tool 사용해야 하며, 이를 통해 팀은 다음을 수행할 수 있습니다.

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

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

구현

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

확인

작성된 코드를 해제하려면 코드가 SDL을 준수하고 디자인 요구 사항을 충족하며 코딩 오류가 없는지 확인하기 위해 몇 가지 검사 및 승인이 필요합니다. SDL을 사용하려면 코드를 개발한 담당자와 별도로 검토자가 수동 검토를 수행해야 합니다. 의무 분리는 동일한 사람이 코드를 작성하고 해제할 수 없도록 하여 우발적이거나 악의적인 피해를 입힐 수 있도록 하는 이 단계에서 중요한 제어입니다.

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

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

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

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

릴리스

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

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

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

응답

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