디자인별 보안 및 개인정보처리방침에 대해 알아보기
Microsoft SDL은 기본적으로 보안 및 개인 정보 보호의 중요성을 강조합니다. 보안 및 개인 정보 보호 기능은 추가 기능이 아니라 당사 제품 및 서비스의 중심 구성 요소가 되어야 합니다. 기능 수명 주기 초기에 보안 요구 사항을 정의하고, 모든 주요 서비스 구성 요소 및 기능에 대한 최신 위협 모델을 유지하고, 모든 소스 코드에 대한 수동 코드 검토를 요구함으로써 제품에 보안을 구축합니다.
보안 및 개인 정보 요구 사항
보안 및 개인 정보 보호 요구 사항은 모든 매우 안전한 애플리케이션 및 시스템의 설계에 대한 정보를 제공해야 합니다. Microsoft에서 개발하는 모든 제품, 서비스 및 기능은 명확하게 정의된 보안 및 개인 정보 보호 요구 사항으로 시작합니다. 소프트웨어 개발은 지속적인 프로세스이므로 필수 기능과 위협 환경의 변화를 반영하도록 제품의 수명 주기 전체에서 이러한 요구 사항을 지속적으로 업데이트합니다. 보안 및 개인 정보 보호 요구 사항에 영향을 주는 요인으로는 개발 중인 소프트웨어의 특성, 알려진 보안 위협, 보안 인시던트에서 배운 내용, 법률 및 산업 요구 사항, 내부 표준 및 코딩 사례가 포함됩니다.
보안 및 개인 정보 요구 사항을 정의하는 최적의 시간은 제품 또는 기능의 초기 디자인 및 계획 단계 동안 나타납니다. 이를 통해 개발 팀은 보안 기능을 제품의 핵심 기능에 통합할 수 있습니다. 예를 들어 디자인 단계에서 모든 제품에 대해 질문하는 한 가지 질문은 제품이 고객 데이터와 같은 중요한 정보를 처리할지 여부입니다. Microsoft의 SDL에는 개발자가 중요한 데이터 처리에 대한 모범 사례를 구현하고 소프트웨어가 관련 요구 사항을 준수하여 중요한 데이터를 안전하게 수집, 처리 및 저장하는 데 도움이 되는 보안 및 개인 정보 보호 요구 사항이 포함되어 있습니다. 중요한 데이터 처리를 위한 SDL 요구 사항에는 중요한 데이터를 보호하고 Microsoft 보안 대응 팀에 잠재적 보안 인시던트 조사 및 대응에 필요한 감사 기능을 제공하기 위한 암호화, 로깅 및 인시던트 대응 준비가 포함됩니다.
위협 모델 및 DFD(데이터 흐름 다이어그램)
제품 설계에 명확하게 정의된 보안 및 개인 정보 보호 요구 사항이 포함되면 개발 팀은 위협 모델을 구축하여 제품에 가장 영향을 미칠 가능성이 높은 보안 및 개인 정보 위협을 시각화합니다. 위협 모델링은 개발자가 적절한 완화를 제안하고 구현할 수 있도록 위험에 따라 잠재적 위협을 식별, 분류 및 평가하는 데 도움이 됩니다. SDL을 사용하려면 Microsoft의 개발 팀이 모든 주요 서비스 구성 요소 및 기능에 대한 최신 위협 모델 및 DFD(데이터 흐름 다이어그램)를 유지 관리해야 합니다.
위협 모델링은 제품 또는 기능의 구성 요소를 정의하고 인증 또는 민감한 데이터 처리와 같은 주요 기능 시나리오에 대해 서로 간의 관계를 다이어그램으로 표현하는 작업으로 시작됩니다. 위협 모델링 다이어그램에는 서비스에 대한 위협을 시각화하는 데 도움이 되는 관련 데이터 흐름, 함수 및 프로세스가 포함됩니다. 위협 모델링 프로세스의 일부로 서비스 팀은 서비스 구성 요소 또는 기능에서 사용하는 모든 데이터 흐름, 포트 및 프로토콜을 문서화하는 DFD를 만들고 유지 관리합니다.
완성된 다이어그램은 시스템에 대한 위협을 식별하고 완화를 위해 위협의 우선 순위를 지정하는 데 사용됩니다. 개발 팀은 위협 모델에 의해 노출되는 위험에 대한 완화 기능을 제안하고 구현합니다. 새로운 완화 기능이 제품의 보안 요구사항에 추가되고, 수동 코드 검토 및 자동 테스트 중에 코드에서 검증되며, 출시 전에 승인 프로세스의 일부로 검토됩니다.
Agile을 사용한 최신 소프트웨어 개발은 고객에게 신속한 기능 제공을 강조하므로 위협 모델링은 지속적인 프로세스입니다. 개발 팀 간에 일관성을 유지하고 위협 모델을 최신 상태로 유지하기 위해 Microsoft는 개발자가 모든 위협 모델에 Microsoft의 위협 모델링 도구를 사용하도록 요구합니다. 위협 모델링 도구를 사용하면 Microsoft의 모든 개발자 또는 소프트웨어 설계자가 다음을 수행할 수 있습니다.
- 시스템의 보안 설계에 대해 소통합니다.
- 검증된 방법론을 사용하여 잠재적인 보안 문제에 대한 보안 설계를 분석합니다.
- 보안 문제에 대한 완화를 제안하고 관리합니다.
릴리스 전 보안 검토 중에 허용할 수 없는 위험에 대한 완화를 포함하여 모든 위협 모델의 정확성과 완전성이 검토됩니다. 이러한 검토는 책임을 유지하고 보안 지향적인 설계를 장려합니다.
수동 코드 검토
Microsoft 개발 팀은 모든 새 코드 리포지토리에서 버전 제어를 위해 Azure DevOps Git을 사용합니다. Microsoft에서 개발한 모든 코드가 SDL 및 설계 요구 사항을 준수하는지 확인하려면 SDL에서 별도의 검토자가 코드 변경 사항을 릴리스 분기에 체크인하기 전에 수동으로 코드를 검토해야 합니다. 코드 검토자는 코딩 오류를 확인하고 코드 변경 사항이 SDL 및 설계 요구 사항을 충족하는지 확인하고 기능 및 보안 테스트를 통과하고 안정적으로 수행합니다. 또한 관련 문서, 구성 및 종속성을 검토하여 코드 변경 사항이 적절하게 문서화되고 의도하지 않은 부작용이 발생하지 않도록 합니다.
검토자가 코드 검토 중에 문제를 발견하면 제출자에게 제안된 변경 사항 및 추가 테스트와 함께 코드를 다시 제출하도록 요청할 수 있습니다. 코드 검토자는 요구 사항을 충족하지 않는 코드에 대한 체크인을 완전히 차단하기로 결정할 수도 있습니다. 릴리스를 위해 제출된 코드에 대한 모든 변경 사항은 분명히 단일 개발자에게 귀속되어야 하며 책임을 유지하기 위해 별도의 검토자가 검토해야 합니다. 또한 릴리스 코드에 대한 모든 변경 사항은 작성자, 비즈니스 정당성, 테스트 결과 및 변경 사항을 승인한 검토자와 함께 모든 코드 변경 사항에 대한 감사 가능한 기록을 제공하기 위해 최소 18개월 동안 기록 및 보관해야 합니다.