본문 바로가기
Security

[Security] 보안 공학 원칙 (SA-8: Security Engineering Principles)

by gungle 2024. 8. 5.

조직은 주로 새로운 개발 정보 시스템이나 주요 업그레이드를 진행 중인 시스템에 보안 공학 원칙을 적용한다. 기존 시스템의 경우, 현재 하드웨어, 소프트웨어 및 펌웨어 상태를 고려하여 시스템 업그레이드 및 수정에 보안 공학 원칙을 적용한다. 이 글에서는 NIST(National Institute of Standards and Technology)에서 가이드하고 있는 SA-8 항목에 따라 보안 공학 원칙을 설명한다.

 

보안 공학 원칙 (Security Engineering Principles)

NIST Special Publication 800-53 에서 보안 공학 원칙에는 다음과 같은 요소들이 포함된다:

  1. 계층화된 보호 개발 (Developing Layered Protections): 여러 보안 계층을 구축하여 침입자가 시스템에 접근하는 것을 어렵게 만든다. 각 계층은 독립적으로 동작하면서도 서로를 보완하여 종합적인 방어를 제공한다.
  2. 안전한 보안 정책, 아키텍처 및 제어 수립 (Establishing Sound Security Policy, Architecture, and Controls): 설계의 기초로 안전한 보안 정책, 아키텍처 및 제어를 확립한다. 이는 시스템 개발 초기 단계에서 정의되어야 하며, 일관되게 적용되어야 한다.
  3. 시스템 개발 생명 주기에 보안 요구 사항 포함 (Incorporating Security Requirements into the System Development Life Cycle): 시스템 개발 과정의 모든 단계에서 보안 요구 사항을 통합하여 시스템의 전반적인 보안을 강화한다.
  4. 물리적 및 논리적 보안 경계 구분 (Delineating Physical and Logical Security Boundaries): 시스템의 물리적 및 논리적 보안 경계를 명확히 구분한다. 물리적 보안은 데이터 센터와 같은 장소의 접근을 제한하고, 논리적 보안은 네트워크, 애플리케이션, 데이터의 접근 제어를 포함한다.
  5. 보안 소프트웨어 구축 방법에 대한 교육 제공 (Ensuring That System Developers Are Trained on How to Build Secure Software): 시스템 개발자가 최신 보안 위협과 방어 기법을 숙지하고, 이를 자신의 개발 작업에 반영할 수 있도록 교육을 제공한다.
  6. 조직 및 운영 요구에 맞춘 보안 제어 맞춤화 (Tailoring Security Controls to Meet Organizational and Operational Needs): 조직의 특성과 운영 필요에 맞게 보안 제어를 맞춤화하여, 효율적이고 효과적인 보안을 구현한다.
  7. 위협 모델링 수행 (Performing Threat Modeling): 사용 사례, 위협 행위자, 공격 벡터 및 공격 패턴을 식별하여, 이를 기반으로 보완 제어 및 설계 패턴을 통해 위험을 완화한다.
  8. 위험을 허용 가능한 수준으로 감소 (Reducing Risk to Acceptable Levels): 정보에 입각한 위험 관리 결정을 내릴 수 있도록 위험을 허용 가능한 수준으로 감소시킨다.

 

계층화된 보호 개발 (Developing Layered Protections)

계층화된 보호는 보안 시스템의 다층 방어를 의미한다. 이를 통해 한 계층이 무너져도 다른 계층이 침입을 방지할 수 있도록 한다. 각 계층은 독립적으로 동작하면서도 서로를 보완하여 종합적인 방어를 제공한다. 이 원칙은 여러 보안 기술과 절차를 결합하여 효과적인 방어 시스템을 구축하는 데 필수적이다.

 

안전한 보안 정책, 아키텍처 및 제어 수립 (Establishing Sound Security Policy, Architecture, and Controls)

안전한 보안 정책과 아키텍처, 제어는 시스템 설계의 기초를 이루며, 시스템의 보안을 확보하는 데 핵심적인 역할을 한다. 이러한 요소들은 시스템 개발 초기에 정의되어야 하며, 이후 개발 과정에서 일관되게 적용되어야 한다. 이를 통해 시스템의 보안을 처음부터 끝까지 유지할 수 있다.

 

시스템 개발 생명 주기에 보안 요구 사항 포함 (Incorporating Security Requirements into the System Development Life Cycle)

시스템 개발 생명 주기(SDLC)의 모든 단계에서 보안 요구 사항을 통합하는 것은 보안 공학의 중요한 원칙 중 하나이다. 초기 요구 사항 수집 단계부터 설계, 구현, 테스트, 배포, 유지보수에 이르기까지 모든 단계에서 보안 고려 사항을 포함하여 시스템의 전반적인 보안을 강화한다.

 

물리적 및 논리적 보안 경계 구분 (Delineating Physical and Logical Security Boundaries)

물리적 보안 경계와 논리적 보안 경계를 명확히 구분하는 것은 보안 공학의 중요한 요소이다. 물리적 보안은 데이터 센터와 같은 장소의 접근을 제한하는 것을 포함하며, 논리적 보안은 네트워크, 애플리케이션, 데이터의 접근 제어를 포함한다. 이 두 가지 보안 경계를 명확히 구분하여 관리함으로써, 각 경계 내에서의 보안을 보다 효과적으로 유지할 수 있다.

 

보안 소프트웨어 구축 방법에 대한 교육 제공 (Ensuring That System Developers Are Trained on How to Build Secure Software)

시스템 개발자가 보안 소프트웨어를 구축하는 방법에 대한 교육을 받는 것은 필수적이다. 교육을 통해 개발자는 최신 보안 위협과 방어 기법에 대해 숙지하고, 이를 자신의 개발 작업에 반영할 수 있다. 이를 통해 시스템의 전반적인 보안 수준을 향상시킬 수 있다.

 

조직 및 운영 요구에 맞춘 보안 제어 맞춤화 (Tailoring Security Controls to Meet Organizational and Operational Needs)

모든 조직은 고유한 특성과 운영 요구를 가지고 있기 때문에, 보안 제어도 이에 맞춰 맞춤화되어야 한다. 이를 통해 조직의 특성과 필요에 가장 적합한 보안 솔루션을 제공할 수 있다. 맞춤화된 보안 제어는 효율적이고 효과적인 보안을 구현하는 데 필수적이다.

 

위협 모델링 수행 (Performing Threat Modeling)

위협 모델링은 시스템의 잠재적 위협을 식별하고 분석하는 과정이다. 이를 통해 사용 사례, 위협 행위자, 공격 벡터, 공격 패턴 등을 식별하고, 이를 기반으로 보완 제어와 설계 패턴을 통해 위험을 완화할 수 있다. 위협 모델링은 보안 공학에서 중요한 단계 중 하나로, 시스템의 보안을 체계적으로 강화할 수 있다.

 

위험을 허용 가능한 수준으로 감소 (Reducing Risk to Acceptable Levels)

위험 관리의 궁극적인 목표는 위험을 완전히 제거하는 것이 아니라, 허용 가능한 수준으로 감소시키는 것이다. 이를 통해 조직은 정보에 입각한 위험 관리 결정을 내리고, 시스템의 보안을 효과적으로 유지할 수 있다. 위험을 허용 가능한 수준으로 감소시키는 것은 지속적인 보안 유지의 핵심이다.

 

결론

보안 공학 원칙은 시스템의 전반적인 보안을 강화하는 데 필수적인 요소이다. 계층화된 보호 개발, 안전한 보안 정책과 아키텍처 수립, SDLC에 보안 요구 사항 통합, 물리적 및 논리적 보안 경계 구분, 개발자 교육, 맞춤화된 보안 제어, 위협 모델링, 위험 감소 등은 모두 보안 공학의 핵심 원칙이다. 이러한 원칙을 적용하여 시스템의 보안을 체계적으로 강화하고, 조직의 보안 목표를 달성할 수 있다.