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 보안 인시던트 관리를 참조하세요.