정처기5: 정보시스템 구축 관리

Starman·2021년 7월 29일
0

[ 정보시스템 구축 관리 ]

1장. 소프트웨어 개발 방법론 활용

157 소프트웨어 개발 방법론

  • 소프트웨어 개발, 유지보수 등에 필요한 여러 가지 일들의 수행 방법과 이러한 일들을 효율적으로 수행하려는 과정에서 필요한 각종 기법 및 도구를 체계적으로 정리하여 표준화한 것
  • 소프트웨어 개발 방법론의 목적은 소프트웨어의 생산성과 품질 향상

구조적 방법론

  • 정형화된 분석 절차에 따라 사용자 요구사항을 파악하여 문서화하는 처리(Process) 중심의 방법론
  • 쉬운 이해와 검증이 가능한 프로그램 코드를 생성하는 것이 목적
  • 복잡한 문제를 다루기 위해 분할과 정복(Divide and Conquer) 원리를 적용
  • 구조적 방법론의 절차
    • 타당성 검토 단계 -> 계획 단계 -> 요구사항 단계 -> 설계 단계 -> 구현 단계 -> 시험 단계 -> 운용/유지보수 단계

정보공학 방법론

  • 정보 시스템의 개발을 위해 계획, 분석, 설계, 구축에 정형화된 기법들을 상호 연관성 있게 통합 및 적용하는 자료(Data) 중심의 방법론
  • 정보 시스템 개발 주기를 이용하여 대규모 정보 시스템을 구축하는데 적합함.
  • 정보공학 방법론의 절차
    • 정보 전략 계획 수립 단계 -> 업무 영역 분석 단계 -> 업무 시스템 설계 단계 -> 업무 시스템 구축 단계

객체지향 방법론

컴포넌트 기반(CBD; Component Based Design) 방법론

  • 기존의 시스템이나 소프트웨어를 구성하는 컴포넌트를 조합하여 하나의 새로운 애플리케이션을 만드는 방법론
  • 컴포넌트의 재사용이 가능하여 시간과 노력을 절감할 수 있음.
  • 유지 보수 비용을 최소화하고 생산성 및 품질을 향상시킴.
  • 컴포넌트 기반 방법론의 절차
    • 개발 준비 단계 -> 분석 단계 -> 설계 단계 -> 구현 단계 -> 테스트 단계 -> 전개 단계 -> 인도 단계

애자일(Agile) 방법론

제품 계열 방법론

  • 특정 제품에 적용하고 싶은 공통된 기능을 정의하여 개발하는 방법론
  • 임베디드 소프트웨어를 만드는데 적합
  • 구분
    • 영역공학: 영역 분석, 영역 설계, 핵심 자산을 구현하는 영역
    • 응용공학: 제품 요구 분석, 제품 설계, 제품을 구현하는 영역
  • 영역공학과 응용공학의 연계를 위해 제품의 요구사항, 아키텍처, 조립 생산이 필요

158 비용 산정 기법

  • 소프트웨어의 개발 규모를 소요되는 인원, 자원, 기간 등으로 확인하여 실행 가능한 계획을 수립하기 위해 필요한 비용을 산정하는 것
  • 하향식 비용 산정 기법상향식 비용 산정 기법이 있음.

소프트웨어 비용 결정 요소

  • 프로젝트 요소
    • 제품 복잡도
    • 시스템 크기
    • 요구되는 신뢰도
  • 자원 요소
    • 인적 자원
    • 하드웨어 자원
    • 소프트웨어 자원
  • 생산성 요소
    • 개발자 능력
    • 개발 기간

159 비용 산정 기법 - 하향식

  • 하향식 비용 산정 기법: 과거의 유사한 경험을 바탕으로 전문 지식이 많은 개발자들이 참여한 회의를 통해 비용을 산정하는 비과학적인 방법.

전문가 감정 기법

  • 전문가 감정 기법: 조직 내에 있는 경험이 많은 두 명 이상의 전문가에게 비용 산정을 의뢰하는 기법

델파이 기법

  • 델파이 기법: 전문가 감정 기법의 주관적인 편견을 보완하기 위해 많은 전문가의 의견을 종합하여 산정하는 기법
  • 한 명의 조정자와 여러 전문가로 구성됨.
  • 비용 산정 순서
    1. 조정자는 각 비용 산정 요원에게 시스템 정의서와 산정한 비용 내역을 기록할 서식을 제공함.
    2. 산정 요원들은 정의서를 분석하여 익명으로 그들 나름대로의 비용을 산정함.
    3. 조정자는 산정 요원들의 반응을 요약하여 배포함.
    4. 산정 요원들은 이전에 산정한 결과를 이용하여 다시 익명으로 산정함.
    5. 요원들 간의 의견이 거의 일치할 때까지 이 과정을 반복함.

160 비용 산정 기법 - 상향식

  • 상향식 비용 산정 기법: 프로젝트의 세부적인 작업 단위별로 비용을 산정한 후 집계하여 전체 비용을 산정하는 방법.
  • LOC(원시 코드 라인 수) 기법, 개발 단계별 인월수 기법, 수학적 산정 기법 등이 있음.

LOC(원시 코드 라인 수, source Line Of Code) 기법

  • 소프트웨어 각 기능의 원시 코드 라인 수의 비관치, 낙관치, 기대치를 측정하여 예측치를 구하고 이를 이용하여 비용을 산정하는 기법
  • 측정이 용이하고 이해하기 쉬워 가장 많이 사용됨.
  • 예측치를 이용하여 생산성, 노력, 개발 기간 등의 비용을 산정함.
    • 예측치 = (a + 4m + b) / 6 # 단, a: 낙관치, b: 비관치, m: 기대치(중간치)
  • 산정 공식
    • 노력(인월) = 개발 기간 X 투입 인원 = LOC / 1인당 월평균 생산 코드 라인 수
    • 개발 비용 = 노력(인월) X 단위 비용(1인당 월평균 인건비)
    • 개발 기간 = 노력(인월) / 투입 인원
    • 생산성 = LOC / 노력(인월)

개발 단계별 인원수(Effort Per Task) 기법

  • LOC 기법을 보완하기 위한 기법으로, 각 기능을 구현시키는 데 필요한 노력을 생명 주기의 각 단계별로 산정함.

161 수학적 산정 기법

  • 상향식 비용 산정 기법으로, 경험적 추정 모형, 실험적 추정 모형 이라고도 하며, 개발 비용 산정의 자동화를 목표로 함.
  • COCOMO 모형, Putnam 모형, 기능 점수(FP) 모형 등이 있음.

COCOMO 모형 개요

  • COCOMO(COnstructive COst MOdel) 모형은 원시 프로그램의 규모인 LOC(원시 코드 라인 수)에 의한 비용 산정 기법
  • 개발할 소프트웨어의 규모(LOC)를 예측한 후 이를 소프트웨어 종류에 따라 다르게 책정되는 비용 산정 방정식에 대입하여 비용을 산정
  • 비용 견적의 강도 분석 및 비용 견적의 유연성이 높아 소프트웨어 개발비 견적에 널리 통용됨.
  • 같은 규모의 프로그램이라도 그 성격에 따라 비용이 다르게 산정됨.
  • 비용 산정 결과는 프로젝트를 완성하는데 필요한 노력(Man-Month)으로 나타냄.

COCOMO의 소프트웨어 개발 유형

  • 소프트웨어의 복잡도 혹은 원시 프로그램의 규모에 따라 조직형, 반분리형, 내장형으로 분류
조직형(Organic Mode)
  • 기관 내부에서 개발된 중·소 규모의 소프트웨어로 일괄 자료 처리나 과학기술 계산용, 비즈니스 자료 처리용으로 5만(50KDSI) 라인 이하의 소프트웨어를 개발하는 유형
  • 사무 처리용, 업무용, 과학용 응용 소프트웨어 개발에 적합
  • 산정 공식
    • 노력(MM) = 2.4 X (KDSI)^1.05
    • 개발 기간(TDEV) = 2.5 X (MM)^0.38
반분리형(Semi-Detached Mode)
  • 조직형과 내장형의 중간형으로 트랜잭션 처리 시스템이나 운영체제, 데이터베이스 관리 시스템 등의 30만(300KDSI) 라인 이하의 소프트웨어를 개발하는 유형
  • 컴파일러, 인터프리터와 같은 유틸리티 개발에 적합
  • 산정 공식
    • 노력(MM) = 3.0 X (KDSI)^1.12
    • 개발 기간(TDEV) = 2.5 X (MM)^0.35
내장형(Embedded Mode)
  • 최대형 규모의 트랜잭션 처리 시스템이나 운영체제 등의 30만(300KDSI) 라인 이상의 소프트웨어를 개발하는 유형
  • 신호기 제어 시스템, 미사일 유도 시스템, 실시간 처리 시스템 등의 시스템 프로그램 개발에 적합
  • 산정 공식
    • 노력(MM) = 3.6 X (KDSI)^1.20
    • 개발 기간(TDEV) = 2.5 X (MM)^0.32

COCOMO 모형의 종류

  • 비용 산정 단계 및 적용 변수의 구체화 정도에 따라 기본, 중간, 발전형으로 구분
기본(Basic)형 COCOMO
  • 기본형 COCOMO는 소프트웨어의 크기(생산 코드 라인 수)와 개발 유형만을 이용하여 비용을 산정하는 모형
  • 산정 공식
    • 개발 노력(Effort, MM, PM) = a X (KDSI)^b
    • 개발 기간(TDEV) = c X (MM)^d
    • 적정 투입 인원(FPS) = MM / TDEV
    • 인적 비용(COST) = MM X (1인당 월평균 급여)
    • // a,b,c,d는 소프트웨어 개발 유형, 즉 조직형이냐 반분리형이냐 내장형이냐에 따라 정해진 값을 사용함.
중간(Intermediate)형 COCOMO
  • 기본형 COCOMO의 공식을 토대로 사용하나, 다음 4가지 특성의 15가지 요인에 의해 비용을 산정하는 모형임.
    • 제품의 특성 : 요구되는 신뢰도, 데이터베이스 크기, 제품의 복잡도
    • 컴퓨터의 특성: 수행 시간의 제한, 기억장소의 제한, 가상 기계의 안정성, Turn Around Time
    • 개발 요원의 특성: 분석가의 능력, 개발 분야의 경험, 가상 기계의 경험, 프로그래머의 능력, 프로그래밍 언어의 경험
    • 프로젝트 특성: 소프트웨어 도구의 이용, 프로젝트 개발 일정, 최신 프로그래밍 기법의 이용
  • 산정 공식
    • 개발 노력(MM) = 기본 COCOMO의 MM X 요인별 노력 승수 # 요인별 노력 승수는 15가지 요인의 높고 낮음에 따라 정해진 값을 사용
    • 개발 기간(TDEV) = c X (MM)^d
    • 적정 투입 인원(FPS) = MM / TDEV
    • 인적 비용(COST) = MM X (1인당 월평균 급여)
발전(Detailed)형 COCOMO
  • 중간형 COCOMO를 보완. 개발 공정별로 보다 자세하고 정확하게 노력을 산출하여 비용을 산정하는 모형
  • 소프트웨어 환경과 구성 요소가 사전에 정의되어 있어야 하며, 개발 과정의 후반부에 주로 적용함.
  • 산정 공식 : 중간형 COCOMO 산정 공식을 그대로 사용하되, 노력 승수를 다음과 같이 적용하여 산정함.
    • 노력 승수 = 개발 공정별 노력 승수 X 개별 공정별 가중치

Putnam 모형

  • 소프트웨어 생명 주기의 전 과정 동안에 사용될 노력의 분포를 가정해 주는 모형
  • 생명 주기 예측 모형이라고도 함.
  • 시간에 따른 함수로 표현되는 Rayleigh-Norden 곡선의 노력 분포도를 기초로 함.
  • 대형 프로젝트의 노력 분포 산정에 이용되는 기법
  • 개발 기간이 늘어날수록 프로젝트 적용 인원의 노력이 감소함.
  • 산정 공식
    • 개발 노력(MM) = (그림)
      • L: 원시 코드 라인 수
      • Td: 개발 기간
      • Ck: 환경 상수 (빈약 환경=2000, 좋은 환경=8000, 최적 환경=12000)

기능 점수(FP) 모형

  • 기능 점수(Function Point) 모형은 소프트웨어의 기능을 증대시키는 요인별로 가중치를 부여하고, 요인별 가중치를 합산하여 총 기능 점수를 산출하며 총 기능 점수와 영향도를 이용하여 기능 점수(FP)를 구한 후 이를 이용해서 비용을 산정하는 기법

    • 기능 점수(FP) = 총 기능 점수 X [0.65 + (0.1 X 총 영향도)]
  • 최근에 그 유용성과 간편성으로 비용 산정 기법 가운데 최선의 평가를 받고 있음.

  • COCOMO나 Putnam 모형은 LOC를 중심으로 비용을 산정하는데 반해, 기능 점수 모형은 FP를 이용하여 비용을 산정함.

자동화 추정 도구

  • 비용 산정의 자동화를 위해 개발된 도구
    • SLIM: Rayleigh-Norden 곡선과 Putnam 예측 모델을 기초로 하여 개발된 자동화 추정 도구
    • ESTIMACS: 다양한 프로젝트와 개인별 요소를 수용하도록 FP모형을 기초로 하여 개발된 자동화 추정 도구

162 소프트웨어 개발 방법론 결정

  • 프로젝트 관리와 재사용 현황을 소프트웨어 개발 방법론에 반영하고, 확정된 소프트웨어 생명 주기와 개발 방법론에 맞춰 소프트웨어 개발 단계, 활동, 작업, 절차 등을 정의하는 것

소프트웨어 개발 방법론 결정 절차

  1. 프로젝트 관리와 재사용 현황을 소프트웨어 개발 방법론에 반영
  2. 개발 단계별 작업 및 절차를 소프트웨어 생명 주기에 맞춰 수립
  3. 결정된 소프트웨어 개발 방법론의 개발 단계별 활동 목적, 작업 내용, 산출물에 대한 매뉴얼을 작성

163 소프트웨어 개발 표준

ISO/IEC 12207

  • ISO/IEC 12207은 ISO(International Organization for Standardization, 국제표준화기구)에서 만든 표준 소프트웨어 생명 주기 프로세스로, 소프트웨어의 개발, 운영, 유지보수 등을 체계적으로 관리하기 위한 소프트웨어 생명 주기 표준을 제공
  • 구분
    • 기본 생명 주기 프로세스 : 획득, 공급, 개발, 운영, 유지보수 프로세스
    • 지원 생명 주기 프로세스 : 품질 보증, 검증, 확인, 활동 검토, 감사, 문서화, 형상 관리, 문제 해결 프로세스
    • 조직 생명 주기 프로세스 : 관리, 기반 구조, 훈련, 개선 프로세스

CMMI(Capability Maturity Model Integration)

  • CMMI(능력 성숙도 통합 모델)는 소프트웨어 개발 조직의 업무 능력 및 조직의 성숙도를 평가하는 모델

  • CMMI의 소프트웨어 프로세스 성숙도 구분

    • 초기(Initial) - 정의된 프로세스 없음 : 작업자 능력에 따라 성공 여부 결정
    • 관리(Managed) - 규칙화된 프로세스 : 특정한 프로젝트 내의 프로세스 정의 및 수행
    • 정의(Defined) - 표준화된 프로세스 : 조직의 표준 프로세스를 활용하여 업무 수행
    • 정량적 관리(Quantitatively Managed) - 예측 가능한 프로세스 : 프로젝트를 정량적으로 관리 및 통제
    • 최적화(Optimizing) - 지속적 개선 프로세스 : 프로세스 역량 향상을 위해 지속적인 프로세스 개선

SPICE(Software Process Improvement and Capability dEtermination)

  • SPICE(소프트웨어 처리 개선 및 능력 평가 기준)는 정보 시스템 분야에서 소프트웨어의 품질 및 생산성 향상을 위해 소프트웨어 프로세스를 평가 및 개선하는 국제 표준으로, 공식 명칭은 ISO/IEC 15504

  • 목적

    • 프로세스 개선을 위해 개발 기관이 스스로 평가하는 것
    • 기관에서 지정한 요구조건의 만족여부를 개발 조직이 스스로 평가하는 것
    • 계약 체결을 위해 수탁 기관의 프로세스를 평가하는 것
  • SPICE는 5개의 프로세스 범주와 40개의 세부 프로세스로 구성됨.

    • 고객-공급자(Customer-Supplier) 프로세스
    • 공학(Engineering) 프로세스
    • 지원(Support) 프로세스
    • 관리(Management) 프로세스
    • 조직(Organization) 프로세스
  • SPICE는 프로세스 수행 능력 단계를 불완전, 수행, 관리, 확립, 예측, 최적화의 6단계로 구분

    • 불완전(Incomplete)
    • 수행(Performed)
    • 관리(Managed)
    • 확립(Established)
    • 예측(Predictable)
    • 최적화(Optimizing)

164 소프트웨어 개발 방법론 테일러링

  • 소프트웨어 개발 방법론 테일러링은 프로젝트 상황 및 특성에 맞도록 정의된 소프트웨어 개발 방법론의 절차, 사용기법 등을 수정 보완하는 작업
  • 수행절차
    • 프로젝트 특징 정의 -> 표준 프로세스 선정 및 검증 -> 상위 수준의 커스터마이징 -> 세부 커스터마이징 -> 테일러링 문서화

소프트웨어 개발 방법론 테일러링 고려사항

  • 내부적 요건
    • 목표 환경
    • 요구사항
    • 프로젝트 규모
    • 보유 기술
  • 외부적 요건
    • 법적 제약사항
    • 표준 품질 기준

소프트웨어 개발 방법론 테일러링 기법

  • 프로젝트 규모와 복잡도에 따른 테일러링 기법
  • 프로젝트 구성원에 따른 테일러링 기법
  • 팀내 방법론 지원에 따른 테일러링 기법
  • 자동화에 따른 테일러링 기법

165 소프트웨어 개발 프레임워크

  • 프레임워크(Framework): 소프트웨어 개발에 공통적으로 사용되는 구성 요소와 아키텍처를 일반화하여 손쉽게 구현할 수 있도록 여러 가지 기능들을 제공해주는 반제품 형태의 소프트웨어 시스템

  • 프레임워크의 주요 기능에는 예외 처리, 트랜잭션 처리, 메모리 공유, 데이터 소스 관리, 서비스 관리, 쿼리 서비스, 로깅 서비스, 사용자 인증 서비스 등

  • 스프링 프레임워크

  • 전자정부 프레임워크

  • 닷넷 프레임워크(.NET Framework)

    • 닷넷 프레임워크는 코드 실행을 관리하는 CLR(Common Language Runtime, 공용 언어 런타임)이라는 이름의 가상머신 상에서 작동함.

2장. IT프로젝트 정보시스템 구축 관리

166 네트워크 관련 신기술

IoT (Internet of Things, 사물 인터넷)
M2M (Machine to Machine, 사물 통신)
모바일 컴퓨팅 (Mobile Computing)
클라우드 컴퓨팅 (Cloud Computing)
모바일 클라우드 컴퓨팅 (MCC; Mobile Cloud Computing)
인터클라우드 컴퓨팅 (Inter-Cloud Computing)
메시 네트워크 (Mesh Network)
  • 메시 네트워크는 무선 랜의 한계를 극복하기 위해 라우터들을 기지국으로 활용하여 모든 구간을 동일한 무선망처럼 구성함.
  • 수십에서 수천 개의 디바이스 유기적으로 연결되어 있어야하는 건물 자동화, 센서 네트워크 등 IoT 솔루션에 적합한 기술
와이선 (Wi-SUN)
  • 와이선은 스마트 그리드와 같은 장거리 무선 통신을 필요로 하는 IoT 서비스를 위한 저전력 장거리(LPWA; Low-Power Wide Area) 통신 기술
  • 짧은 시간 동안 데이터 전송이 빈번한 검침 분야에 유용
NDN (Named Data Networking)
  • NDN은 콘텐츠 자체의 정보와 라우터 기능만으로 데이터 전송을 수행하는 기술
  • NDN은 콘텐츠 중심 네트워킹(CCN; Content Centric Networking) 과 같은 개념이며, 해시 테이블에 기반을 두는 P2P 시스템과 같이 콘텐츠에 담겨 있는 정보와 라우터 기능만으로 목적지를 확정
NGN (Next Generation Network, 차세대 통신망)
  • NGN은 ITU-T에서 개발하고 있는 유선망 기반의 차세대 통신망으로, 유선망뿐만 아니라 이동 사용자를 목표로 하며, 이동통신에서 제공하는 완전한 이동성(Full Mobility) 제공을 목표로 개발되고 있음.
  • NGN은 보통 Internet Protocol 기반으로 구축되므로 때때로 '올(all)-IP'라는 용어 또한 NGN을 향한 변화를 기술하는데 사용되기도 함.
    • 올(all)-IP: 유선 전화명, 무선 망, 패킷 데이터 망 등 기존의 통신망을 모두 IP 기반의 망으로 통합한 차세대 네트워크
SDN (Software Defined Networking, 소프트웨어 정의 네트워킹)
  • SDN은 네트워크를 컴퓨터처럼 모델링하여 여러 사용자가 각각의 소프트웨어들로 네트워킹을 가상화하여 제어하고 관리하는 네트워크
NFC (Near Field Communication, 근거리 무선 통신)
  • NFC는 고주파(HF)를 이용힌 근거리 무선 통신 기술
  • RFID 기술의 일종
UWB (Ultra WideBand, 초광대역)
  • UWB는 짧은 거리에서 많은 양의 디지털 데이터를 낮은 전력으로 전송하기 위한 무선 기술로 무선 디지털 펄스라고도 하며, 블루투스와 비교되는 기술
피코넷 (PICONET)
  • 피코넷은 여러 개의 독립적인 통신장치가 블루투스 기술이나 UWB 통신 기술을 사용하여 통신망을 형성하는 무선 네트워크 기술
WBAN (Wireless Body Area Network)
  • WBAN은 웨어러블 또는 몸에 심는 형태의 센서나 기기를 무선으로 연결하는 개인 영역 네트워킹 기술
GIS (Geographic Information System, 지리 정보 시스템)
USN (Ubiquitous Sensor Network, 유비쿼터스 센서 네트워크)
  • USN은 각종 센서로 수집한 정보를 무선으로 수집할 수 있도록 구성한 네트워크
SON (Self Organizing Network, 자동 구성 네트워크)
  • SON은 주변 상황에 맞추어 스스로 망을 구성하는 네트워크
애드 혹 네트워크 (Ad-hoc Network)
  • 애드 혹 네트워크는 재난 현장과 같이 별도의 고정된 유선망을 구축할 수 없는 장소에서 모바일 호스트만을 이용하여 구성한 네트워크로, 망을 구성한 후 단기간 사용되는 경우나 유선망을 구성하기 어려운 경우에 적합
네트워크 슬라이싱 (Network Slicing)
  • 5G의 핵심기술 주목 받고 있으며, PC나 노트북에서 하드디스크 한 개를 C드라이브, D드라이브와 같이 파티션을 나눠 독립적 영역으로 활용하는 것처럼 물리적인 네트워크 인프라를 가상화 기술로 분할해 사용하는 기술이다. 각각의 슬라이스는 완전히 격리되어 다른 슬라이스의 트래픽을 방해할 수 없다.
저전력 블루투스 기술 (BLE; Bluetooth Low Energy)
지능형 초연결망

167 네트워크 구축

네트워크 설치 구조

  • 통신망(Communication Network)은 정보를 전달하기 위해서 통신 규약에 의해 연결한 통신 설비의 집합

성형(Star, 중앙 집중형)

링형(Ring, 루프형)

버스형(Bus)

계층형(Tree, 분산형)

망형(Mesh)

  • 망형 연결 시 필요 회선 수 : n(n-1) / 2

네트워크 분류

  • 네트워크는 각 사이트들이 분포되어 있는 지리적 범위에 따라 LAN과 WAN으로 분류

  • 근거리 통신망(LAN; Local Area Network)

    • 주로 버스형이나 링형 구조를 사용
  • 광대역 통신망(WAN; Wide Area Network)

168 스위치

스위치(Switch) 분류

  • 스위치는 브리지와 같이 LAN과 LAN을 연결하여 훨씬 더 큰 LAN을 만드는 장치로, OSI 7계층의 Layer에 따라 L2, L3, L4, L7 으로 분류됨.
  • L2 스위치
    • OSI의 2계층에 속하는 장비
    • 일반적으로 부르는 스위치는 L2 스위치를 의미함.
    • MAC 주소를 기반으로 프레임을 전송함.
    • 동일 네트워크 간의 연결만 가능
  • L3 스위치
    • OSI의 3계층에 속하는 장비
    • L2 스위치에 라우터 기능이 추가된 것으로, IP 주소를 기반으로 패킷을 전송함.
    • 서로 다른 네트워크 간의 연결이 가능함.
  • L4 스위치
    • OSI 4계층에 속하는 장비
    • 로드밸런서가 달린 L3 스위치로, IP 주소 및 TCP/UDP를 기반으로 사용자들의 요구를 서버의 부하가 적은 곳에 배분하는 로드밸런싱 기능을 제공함.
  • L7 스위치
    • OSI 7계층에 속하는 장비
    • IP 주소, TCP/UDP 포트 정보에 패킷 내용까지 참조하여 세밀하게 로드밸런싱함.

스위칭(Switch) 방식

  • 스위치가 프레임을 전달하는 방식에 따라 Store and Forwarding, Cut-through, Fragment Free 가 있음.
  • Store and Forwarding: 데이터를 모두 받은 후 스위칭하는 방식
  • Cut-through: 데이터의 목적지 주소만을 확인한 후 바로 스위칭하는 방식
  • Fragment Free: Store and Forwarding과 Cut-through 방식의 장점을 결합한 방식

백본 스위치(Backbone Switch)

  • 여러 네트워크들을 연결할 때 중추적 역할을 하는 네트워크를 백본(Backbone)이라 하고, 백본에서 스위칭 역할을 하는 장비를 백본 스위치라고 함.
  • 백본 스위치는 모든 패킷이 지나가는 네트워크의 중심에 배치함.
  • 대규모 트래픽을 처리하려면 고성능의 백본 스위치를 사용해야 함.
  • 주로 L3 스위치가 백본 스위치의 역할을 함.

Hierarchical 3 Layer 모델

  • Hierarchical 3 Layer 모델은 네트워크 구성 시 사용되는 모델의 한 종류로, 액세스 계층, 디스트리뷰션 계층, 코어 계층으로 나뉨.
  • 액세스 계층 (Access Layer)
  • 디스트리뷰션 계층 (Distribution Layer)
  • 코어 계층 (Core Layer)

169 경로 제어/트래픽 제어

경로 제어(Routing)의 개요

  • 경로 제어: 송·수신 측 간의 전송 경로 중에서 최적 패킷 교환 경로를 결정하는 기능
  • 최적 패킷 교환 경로: 어느 한 경로에 데이터의 양이 집중하는 것을 피하면서, 최저의 비용으로 최단 시간에 송신할 수 있는 경로를 의미
  • 경로 제어는 경로 제어표(Routing Table)를 참조해서 이루어지며, 라우터에 의해 수행됨.
  • 경로 제어 요소: 성능 기준, 경로의 결정 시간과 장소, 정보 발생지, 경로 정보의 갱신 시간

경로 제어 프로토콜 (Routing Protocol)

  • 효율적인 경로 제어를 위해 네트워크 정보를 생성, 교환, 제어하는 프로토콜을 총칭
  • 대표적으로 IGP, EGP, BGP 가 있음.
    • IGP(Interior Gateway Protocol, 내부 게이트웨이 프로토콜)
      • 하나의 자율 시스템(AS) 내의 라우팅에 사용되는 프로토콜
      • RIP, OSPF
    • EGP(Exterior Gateway Protocol, 외부 게이트웨이 프로토콜)
      • 자율 시스템(AS) 간의 라우팅, 즉 게이트웨이 간의 라우팅에 사용되는 프로토콜
    • BGP(Border Gateway Protocol)
      • 자율 시스템(AS) 간의 라우팅 프로토콜로, EGP의 단점을 보완하기 위해 만들어짐.

트래픽 제어(Traffic Control)의 개요

  • 트래픽 제어: 네트워크의 보호, 성능 유지, 네트워크 자원의 효율적인 이용을 위해 전송되는 패킷의 흐름 또는 그 양을 조절하는 기능
  • 흐름 제어, 폭주(혼합) 제어, 교착상태 방지 기법이 있음.

흐름 제어(Flow Control)

  • 네트워크 내의 원활한 흐름을 위해 송·수신 측 사이에 전송되는 패킷의 양이나 속도를 규제하는 기능
  • 송신 측과 수신 측 간의 처리 속도 또는 버퍼 크기의 차이에 의해 생길 수 있는 수신 측 버퍼의 오버플로(Overflow)를 방지하기 위한 기능
    • 정지-대기(Stop-and-Wait)
      • 수신 측의 확인 신호(ACK)를 받은 후에 다음 패킷을 전송하는 방식
    • 슬라이딩 윈도우(Sliding Window)
      • 확인 신호, 즉 수신 통지를 이용하여 송신 데이터의 양을 조절하는 방식

폭주(혼잡) 제어(Congestion Control)

  • 흐름 제어가 송·수신 측 사이의 패킷 수를 제어하는 기능이라면, 폭주 제어는 네트워크 내의 패킷 수를 조절하여 네트워크의 오버플로(Overflow)를 방지하는 기능을 함.
    • 느린 시작(Slow Start)
    • 혼잡 회피(Congestion Avoidance)

교착상태(Dead Lock) 방지

  • 교착 상태: 교환기 내의 패킷들을 축적하는 기억 공간이 꽉 차 있을 때 다음 패킷들이 기억 공간에 들어가기 위해 무한정 기다리는 현상
  • 패킷이 같은 목적지를 갖지 않도록 할당하고, 교착상태 발생 시에는 교착상태에 있는 한 단말장치를 선택하여 패킷 버퍼를 폐기함.

170 SW 관련 신기술

전문가 시스템 (Expert System)
  • 전문가 시스템은 의료 진단 등과 같은 특정 분야의 전문가가 수행하는 고도의 업무를 지원하기 위한 컴퓨터 응용 프로그램
  • 지식 베이스(Knowledge Base)라는 데이터베이스와 지식 베이스에 기초하여 추론을 실행하는 추론 기구(Inference Engine)가 구성 요소에 포함돼 있음.
블록체인 (Blockchain)
분산 원장 기술 (DLT; Distributed Ledger Technology)
양자 암호키 분배 (QKD; Quantum Key Distribution)
프라이버시 강화 기술 (PET; Privacy Enhancing Technology)
공통 평가 기준 (CC; Common Criteria)
  • 공통 평가 기준(CC)는 ISO 15408 표준으로 채택된 정보 보호 제품 평가 기준
  • 정보화 순기능 역할을 보장하기 위해 정보화 제품의 정보보호 기능과 이에 대한 사용 환경 등급을 정한 기준
개인정보 영향평가 제도 (PIA; Privacy Impact Assessment)
  • 개인정보 영향평가 제도(PIA)는 개인 정보를 활용하는 새로운 정보시스템의 도입 및 기존 정보시스템의 중요한 변경 시 시스템의 구축 · 운영이 기업의 고객은 물론 국민의 사생활에 미칠 영향에 대해 미리 조사 · 분석 · 평가하는 제도
그레이웨어 (Grayware)
  • 그레이웨어는 소프트웨어를 제공하는 입장에서는 악의적이지 않은 유용한 소프트웨어라고 주장할 수 있지만 사용자 입장에서는 유용할 수도 있고 악의적일 수도 있는 애드웨어, 트랙웨어, 기타 악성 코드나 악성 공유웨어를 말함.
매시업 (Mashup)
  • 매시업은 웹에서 제공하는 정보 및 서비스를 이용하여 새로운 소프트웨어나 서비스, 데이터베이스 등을 만드는 기술
시맨틱 웹 (Semantic Web)
  • 시맨틱 웹은 컴퓨터가 사람을 대신하여 정보를 읽고 이해하고 가공하여 새로운 정보를 만들어 낼 수 있도록 이해하기 쉬운 의미를 가진 차세대 지능형 웹
  • 시맨틱 웹을 구성하는 핵심 기술로는 웹 자원(Resource)을 서술하기 위한 자원 서술 기술, 온톨로지(Ontology)를 통한 지식 서술 기술, 통합적으로 운영하기 위한 에이전트(Agent) 기술들을 들 수 있음.
증발품 (Vaporware)
  • 증발품은 판매 계획 또는 배포 계획은 발표되었으나 실제로 고객에게 판매되거나 배포되지 않고 있는 소프트웨어
오픈 그리드 서비스 아키텍처 (OGSA; Open Grid Service Architecture)
  • 오픈 그리드 서비스 아키텍처(OGSA)는 애플리케이션 공유를 위한 웹 서비스를 그리드 상에서 제공하기 위해 만든 개방형 표준
  • OGSA는 IBM을 비롯해 수백여 기업이 회원으로 가입해 있는 글로벌 그리드 포럼이 개발을 주도하고 있으며, 웹 서비스 표준을 적극적으로 따르고 기존의 웹 개발 툴들을 그대로 사용할 수 있다는 장점이 있음.
서비스 지향 아키텍처 (SOA; Service Oriented Architecture)
  • 서비스 지향 아키텍처(SOA)는 기업의 소프트웨어 인프라인 정보시스템을 공유와 재사용이 가능한 서비스 단위나 컴포넌트 중심으로 구축하는 정보기술 아키텍처
  • SOA는 기존 개념에 이벤트 기반 아키텍처(EDA; Event Driven Architecture)를 더해 비즈니스에 발생하는 각각의 상황을 실시간으로 처리하는 개념인 SOA 2.0을 도입하고 있음.
서비스형 소프트웨어 (SaaS; Software as a Service)
소프트웨어 에스크로(임치) (Software Escrow)
  • 소프트웨어 에스크로(임치)는 소프트웨어 개발자의 지식재산권을 보호하고 사용자는 저렴한 비용으로 소프트웨어를 안정적으로 사용 및 유지보수 받을 수 있도록 소스 프로그램과 기술 정보 등을 제3의 기관에 보관하는 것
복잡 이벤트 처리 (CEP; Complex Event Processing)
  • 복잡 이벤트 처리(CEP)는 실시간으로 발생하는 많은 사건들 중 의미가 있는 것만을 추출할 수 있도록 사건 발생 조건을 정의하는 데이터 처리 방법
  • CEP는 금융, 통신, 전력, 물류, 국방 등에서 대용량 데이터 스트림에 대한 요구에 실시간으로 대응하기 위하여 개발된 기술이며, 미들웨어에 접목시키면 기업이 독자적인 실시간 응용 애플리케이션을 개발할 수 있도록 도와줌.
디저털 트윈 (Digital Twin)
  • 디지털 트윈은 현실속의 사물을 소프트웨어로 가상화한 모델

171 소프트웨어 개발 보안

  • 소프트웨어 개발 보안은 데이터의 기밀성(Confidentiality), 무결성(Integrity), 가용성(Availability)을 유지하는 것을 목표로 함.

소프트웨어 개발 보안 관련 기관

  • 소프트웨어 개발 보안과 관련된 활동 주체는 정책기관인 행정안전부, 발전기관인 행정기관, 전문기관인 한국인터넷진흥원(KISA), 개발기관인 사업자, 보안 약점을 진단하는 감리법인 등

172 소프트웨어 개발 직무별 보안 활동

소프트웨어 개발 직무별 보안 활동

프로젝트 관리자(Project Manager)
요구사항 분석가(Requirement Specifier)
아키텍트(Architect)
설계자(Designer)
구현 개발자(Implementer)
테스트 분석가(Test Analyst)
보안 감시자(Security Auditor)

173 소프트웨어 개발 보안 활동 관련 법령 및 규정

개인정보 보호 관련 법령

  • 개인정보 보호법
  • 정보통신망 이용촉진 및 정보보호 등에 관한 법률
  • 신용정보의 이용 및 보호에 관한 법률
  • 위치정보의 보호 및 이용 등에 관한 법률
  • 표준 개인정보 보호 지침
  • 개인정보의 안전성 확보 조치 기준
  • 개인정보 영향평가에 관한 고시

IT 기술 관련 규정

  • RFID 프라이버시 보호 가이드라인
  • 위치정보의 보호 및 이용 등에 관한 법률
  • 위치정보의 관리적, 기술적 보호조치 권고 해설서
  • 바이오정보 보호 가이드라인
  • 뉴미디어 서비스 개인정보 보호 가이드라인

174 HW 관련 신기술

  • 멤스(MEMS; Micro-Electro Mechanical Systems): 멤스는 초정밀 반도체 제조 기술을 바탕으로 센서, 액추에이터(Actuator) 등 기계 구조를 다양한 기술로 미세 가공하여 전기기계적 동작 할 수 있도록 한 초미세 장치

  • 트러스트존 기술(TrustZone Technology): ARM에서 개발한 기술로, 하나의 프로세서 내에 일반 애플리케이션을 처리하는 일반 구역(Normal World)과 보안이 필요한 애플리케이션을 처리하는 보안 구역(Secure World)으로 분할하여 관리하는 하드웨어 기반의 보안 기술

  • 엠디스크(M-DISC, Millennial DISC): 한 번의 기록만으로 자료를 영구 보관할 수 있는 광 저장 장치

  • 멤리스터(Memristor): 메모리와 레지스터의 합성어로, 전류의 방향과 양 등 기존의 경험을 모두 기억하는 특별한 소자

175 Secure OS

  • Secure OS: 기존의 운영체제(OS)에 내재된 보안 취약점을 해소하기 위해 보안 기능을 갖춘 커널을 이식하여 외부의 침입으로부터 시스템 자원을 보호하는 운영체제를 의미
  • 보안 커널은 보안 기능을 갖춘 커널을 의미하며, TCB를 기반으로 참조 모니터의 개념을 구현하고 집행함.
    • TCB(Trusted Computing Base): OS, 하드웨어, 소프트웨어, 펌웨어 등 컴퓨터 시스템 내의 모든 장치가 보안 정책을 따르도록 설계한 보호 매커니즘
  • 보안 커널의 보호 대상에는 메모리와 보조기억장치, 그리고 그곳에 저장된 데이터, 하드웨어 장치, 자료 구조, 명령어, 각종 보호 메커니즘 등이 있음.
  • 보호 방법을 구현하기 복잡한 것부터 차례로 분류하면 다음과 같음.
    • 암호적 분리(Cryptographic Separation): 내부 정보를 암호화하는 방법
    • 논리적 분리(Logical Separation): 프로세스의 논리적 구역을 지정하여 구역을 벗어나는 행위를 제한하는 방법
    • 시간적 분리(Temporal Separation): 동일 시간에 하나의 프로세스만 수행되도록 하여 동시 실행으로 발생하는 보안 취약점을 제거하는 방법
    • 물리적 분리(Physical Separation): 사용자별로 특정 장비만 사용하도록 제한하는 방법
참조 모니터 (Reference Monitor)
  • 참조 모니터는 보호대상의 객체에 대한 접근통제를 수행하는 추상머신이며, 이것을 실제로 구현한 것이 보안 커널임.
  • 참조 모니터는 보안 커널 데이터베이스(SKDB; Scurity Kernel Database)를 참조하여 객체에 대한 접근 허가 여부를 결정함.
  • 참조 모니터와 보안 커널의 특징 3가지
    • 격리성(Isolation) : 부정 조작이 불가능해야 함.
    • 검증가능성(Verifiability) : 적절히 구현되었다는 것을 확인할 수 있어야 함.
    • 완전성(Completeness) : 우회가 불가능해야 함.

Secure OS의 보안 기능

  • 식별 및 인증
    • 각 접근 주체에 대한 안전하고 고유한 식별 및 인증 기능
  • 임의적 접근통제
    • 소속 그룹 또는 개인에 따라 부여된 권한에 따라 접근을 통제하는 기능
    • DAC(Discretionary Access Control) 또는 신분 기반 정책이라고도 함.
  • 강제적 접근통제
    • 접속 단말 및 접속 방법, 권한, 요청 객체의 특성 등 여러 보안 속성이 고려된 규칙에 따라 강제적으로 접근을 통제하는 기능
    • MAC(Mandatory Access Control) 또는 규칙 기반 정책이라고도 함.
  • 객체 재사용 보호
    • 메모리에 기존 데이터가 남아있지 않도록 초기화하는 기능
  • 완전한 조정
    • 우회할 수 없도록 모든 접근 경로를 완전하게 통제하는 기능
  • 신뢰 경로
    • 비밀번호 변경 및 권한 설정 등과 같은 보안 작업을 위한 안전한 경로를 제공하는 기능
  • 감사 및 감사기록 축소
    • 모든 보안 관련 사건 및 작업을 기록(Log)한 후 보호하는 기능
    • 막대한 양의 기록들을 분석하고 축소하는 기능

176 DB 관련 신기술

빅 데이터 (Big Data)
브로드 데이터 (Broad Data)
  • 브로드 데이터는 다양한 채널에서 소비자와 상호 작용을 통해 싱성된, 기업 마케팅에 있어 효율적이고 다양한 데이터이며, 이전에 사용하지 않거나 알지 못했던 새로운 데이터나, 기존 데이터에 새로운 가치가 더해진 데이터를 말함.
메타 데이터 (Meta Data)
디지털 아카이빙 (Digital Archiving)
  • 디지털 아카이빙은 디지털 정보 자원을 장기적으로 보존하기 위한 작업
하둡(Hadoop)
타조 (Tajo)
  • 타조는 오픈 소스 기반 분산 컴퓨팅 플랫폼인 아파치 하둡 기반의 분산 데이터 웨어하우스 프로젝트
  • 타조는 하둡의 빅데이터를 분석할 때 맵리듀스(MapReduce)를 사용하지 않고 SQL을 사용하여 하둡 분산 파일 시스템(HDFS; Hadoop Distributed File System) 파일을 바로 읽어낼 수 있음.
  • 타조는 대규모 데이터 처리와 실시간 상호 분석에 모두 사용할 수 있음.
데이터 다이어트 (Data Diet)
  • 데이터 다이어트는 데이터를 삭제하는 것이 아니라 압축하고, 중복된 정보는 중복을 배제하고, 새로운 기준에 따라 나누어 저장하는 작업

177 회복/병행제어

회복(Recovery)

  • 회복: 트랜잭션들을 수행하는 도중 장애가 발생하여 데이터베이스가 손상되었을 때 손상되기 이전의 정상 상태로 복구하는 작업
  • 장애의 유형
    • 트랜잭션 장애
    • 시스템 장애
    • 미디어 장애
  • 회복 관리기 (Recovery Management)
    • 회복 관리기는 DBMS의 구성 요소임.
    • 트랜잭션 실행이 성공적으로 완료되지 못하면 트랜잭션이 데이터베이스에 생성했던 모든 변화를 취소(Undo) 시키고, 트랜잭션 수행 이전의 원래 상태로 복구하는 역할을 담당함.
    • 메모리 덤프, 로그(Log)를 이용하여 회복을 수행함.

병행제어(Concurrency Control)

  • 다중 프로그램의 이점을 활용하여 동시에 여러 개의 트랜잭션을 병행수행할 때, 동시에 실행되는 트랜잭션들이 데이터베이스의 일관성을 파괴하지 않도록 트랜잭션 간의 상호 작용을 제어하는 것
  • 병행제어의 목적
    • 데이터베이스의 공유를 최대화
    • 시스템의 활용도를 최대화
    • 단위 시간당 트랜잭션 처리 건수를 최대화
    • 사용자에 대한 응답 시간을 최소화
    • 데이터베이스의 일관성을 유지
병행수행의 문제점
  • 병행제어 기법에 의한 제어 없이 트랜잭션들이 데이터베이스에 동시에 접근하도록 허용할 경우 갱신 분실, 비완료 의존성, 모순성, 연쇄 복귀 등의 문제점이 발생함.
    • 갱신 분실 (Lost Update)
    • 비완료 의존성 (Uncommitted Dependency)
    • 모순성 (Imconsistency)
    • 연쇄 복귀 (Cascading Rollback)

178 데이터 표준화

  • 시스템을 구성하는 데이터 요소의 명칭, 정의, 형식, 규칙에 대한 원칙을 수립하고 적용하는 것

데이터 표준

  • 데이터 표준은 데이터 모델이나 DB에서 정의할 수 있는 모든 오브젝트를 대상으로 데이터 표준화를 수행해야 함.
  • 데이터 표준의 종류
    • 표준 단어
    • 표준 도메인
    • 표준 코드
    • 표준 용어

데이터 관리 조직

  • 데이터 표준 원칙이나 데이터 표준의 준수 여부 등을 관리하는 사람들로, 대표적으로 데이터 관리자가 있음.
  • 데이터 관리자는 조직 내의 데이터에 대한 정의, 체계화, 감독 등의 업무를 담당함.

데이터 표준화 절차

  1. 데이터 표준화 요구사항 수집
  2. 데이터 표준 정의
  3. 데이터 표준 확정
  4. 데이터 표준 관리

데이터 표준화의 대상

  • 데이터 명칭
  • 데이터 정의
  • 데이터 형식
  • 데이터 규칙

데이터 표준화의 기대 효과

3장. 소프트웨어 개발 보안 구축

179 Secure SDLC

  • Secure SDLC: 보안상 안전한 소프트웨어를 개발하기 위해 SDLC에 보안 강화를 위한 프로세스를 포함한 것을 의미
  • 소프트웨어의 유지 보수 단계에서 보안 이슈를 해결하기 위해 소모되는 많은 비용을 최소화하기 위해 등장함.
  • 대표적인 방법론에는 Secure Software사의 CLASP, Microsoft사의 SDL
  • Secure SDLC는 요구사항 분석, 설계, 구현, 테스트, 유지 보수 등 SDLC 전체 단계에 걸쳐 수행되어야 할 보안 활동을 제시함.

요구사항 분석 단계에서의 보안 활동

  • 요구사항 분석 단계에서는 보안 항목에 해당하는 요구사항을 식별하는 작업을 수행

설계 단계에서의 보안 활동

  • 설계 단계에서는 식별된 보안 요구사항들을 소프트웨어 설계서에 반영하고, 보안 설계서를 작성함.

구현 단계에서의 보안 활동

  • 구현 단계에서는 표준 코딩 정의서 및 소프트웨어 개발 보안 가이드를 준수하며, 설계서에 따라 보안 요구사항들을 구현함.

테스트 단계에서의 보안 활동

  • 테스트 단계에서는 설계 단계에서 작성한 보안 설계서를 바탕으로 보안 사항들이 정확히 반영되고 동작되는지 점검함.

유지보수 단계에서의 보안 활동

  • 유지보수 단계에서는 이전 과정을 모두 수행하였음에도 발생할 수 있는 보안사고들을 식별하고, 사고 발생 시 이를 해결하고 보안 패치를 실시함.

180 세션 통제

  • 세션은 서버와 클라이언트의 연결을 의미. 세션 통제는 세션의 연결과 연결로 인해 발생하는 정보를 관리하는 것.
  • 세션 통제는 소프트웨어 개발 과정 중 요구사항 분석 및 설계 단계에서 진단해야 하는 보안 점검 내용임.
  • 세션 통제의 보안 약점에는 불충분한 세션 관리, 잘못된 세션에 의한 정보 노출이 있음.

불충분한 세션 관리

  • 일정한 규칙이 존재하는 세션ID가 발급되거나 타임아웃이 너무 길게 설정되어 있는 경우 발생할 수 있는 보안 약점
  • 세션 관리가 충분하지 않으면 침입자는 세션 하이재킹과 같은 공격을 통해 획득한 세션ID로 인가되지 않은 시스템의 기능을 이용하거나 중요한 정보에 접근할 수 있음.

잘못된 세션에 의한 정보 노출

  • 멀티 스레드 환경에서 멤버 변수에 정보를 저장할 때 발생하는 보안 약점
  • 싱글턴 패턴에서 발생하는 레이드컨디션으로 인해 동기화 오류가 발생하거나, 멤버 변수의 정보가 노출될 수 있음.
  • 멤버 변수보다 지역 변수를 활용하여 변수의 범위를 제한함으로써 방지할 수 있음.

세션 설계시 고려 사항

  • 시스템의 모든 페이지에서 로그아웃이 가능하도록 UI를 구성
  • 로그아웃 요청 시 할당된 세션이 완전히 제거되도록 함.
  • 세션 타임아웃은 중요도가 높으면 2~5분, 낮으면 15~30분으로 설정
  • 이전 세션이 종료되지 않으면 새 세션이 생성되지 못하도록 설계
  • 중복 로그인을 허용하지 않은 경우 클라이언트의 중복 접근에 대한 세션 관리 정책을 수립
  • 패스워드 변경 시 활성화된 세션을 삭제하고 재할당

세션 ID의 관리 방법

  • 세션ID는 안전한 서버에서 최소 128비트의 길이로 생성
  • 세션ID는 예측이 불가능하도록 안전한 난수 알고리즘을 적용
  • 세션ID가 노출되지 않도록 URL Rewrite 기능을 사용하지 않는 방향으로 설계
    • URL Rewrite: 쿠키를 사용할 수 없는 환경에서 세션ID 전달을 위해 URL에 세션ID를 포함시키는 것
  • 로그인 시 로그인 전의 세션ID를 삭제하고 재할당
  • 장기간 접속하고 있는 세션ID는 주기적으로 재할당되도록 설계

181 입력 데이터 검증 및 표현

  • 입력 데이터로 인해 발생하는 문제들을 예방하기 위해 구현 단계에서 검증해야 하는 보안 점검 항목들
    • 유효성 검증 체계를 갖추고, 검증되지 않은 데이터가 입력되는 경우 이를 처리할 수 있도록 구현해야 함.
    • 입력 데이터를 처리하는 객체에 지정된 자료형이 올바른지 확인하고, 일관된 언어셋(Character Set)을 사용하도록 코딩

입력 데이터 검증 및 표현의 보안 약점

  • SQL 삽입
  • 경로 조작 및 자원 삽입
  • 크로스 사이트 스크립팅(XSS)
  • 운영체제 명령어 삽입
  • 위험한 형식 파일 업로드
  • 신뢰되지 않는 URL 주소로 자동접속 연결

182 보안 기능

  • 보안 기능: 소프트웨어 개발의 구현 단계에서 코딩하는 기능인 인증, 접근제어, 기밀성, 암호화 등을 올바르게 구현하기 위한 보안 점검 항목들
  • 소프트웨어의 기능 또는 데이터에 접근하려는 사용자별로 중요도를 구분하고, 차별화된 인증 방안을 적용
  • 인증된 사용자가 이용할 기능과 데이터에 대해 개별적으로 접근 권한을 부여하여 인가되지 않은 기능과 데이터로의 접근을 차단
  • 개인정보나 인증정보와 같은 중요한 정보의 변조, 삭제, 오남용 등을 방지하기 위해 안전한 암호화 기술을 적용

보안 기능의 보안 약점

  • 적절한 인증 없이 중요기능 허용
  • 부적절한 인가
  • 중요한 자원에 대한 잘못된 권한 설정
  • 취약한 암호화 알고리즘 사용
  • 중요정보 평문 저장 및 전송
  • 하드코드된 비밀번호

183 시간 및 상태

  • 동시 수행을 지원하는 병렬 처리 시스템이나 다수의 프로세스가 동작하는 환경에서 시간과 실행 상태를 관리하여 시스템이 원할하게 동작되도록 하기 위한 보안 검증 항목들

TOCTOU 경쟁 조건

  • 검사 시점(Time Of Check)과 사용 시점(Time Of Use)을 고려하지 않고 코딩하는 경우 발생하는 보안 약점
  • 검사 시점에는 사용이 가능했던 자원이 사용 시점에는 사용할 수 없게 된 경우에 발생함.
  • 프로세스가 가진 자원 정보와 실제 자원 상태가 일치하지 않는 동기화 오류, 교착 상태 등이 발생할 수 있음.
  • 코드 내에 동기화 구문을 사용하여 해당 자원에는 한 번에 하나의 프로세스만 접근 가능하도록 구성하믕로써 방지할 수 있음.
  • 동기화 구문은 성능 감소를 동반하기 때문에 반드시 필요한 부분에 한정하여 사용해야 함.

종료되지 않는 반복문 또는 재귀함수

  • 반복문이나 재귀함수에서 종료 조건을 정의하지 않았거나 논리 구조상 종료될 수 없는 경우 발생하는 보안 약점

184 에러처리

  • 소프트웨어 실행 중 발생할 수 있는 오류(Error)들을 사전에 정의하여 오류로 인해 발생할 수 있는 문제들을 예방하기 위한 보안 점검 항목들

오류 메시지를 통한 정보노출

  • 오류 발생으로 실행 환경, 사용자 정보, 디버깅 정보 등의 중요 정보를 소프트웨어가 메시지로 외부에 노출하는 보안 약점
  • 예외처리 구문에 예외의 이름이나 스택 트레이스를 출력하도록 코딩한 경우 해커는 소프트웨어의 내부구조를 쉽게 파악할 수 있음.

오류 상황 대응 부재

  • 소프트웨어 개발 중 예외처리를 하지 않았거나 미비로 인해 발생하는 보안 약점

부적절한 예외처리

  • 함수의 반환값 또는 오류들을 세분화하여 처리하지 않고 광범위하게 묶어 한 번에 처리하거나, 누락된 예외가 존재할 때 발생하는 보안 약점

185 코드 오류

  • 소프트웨어 구현 단계에서 개발자들이 코딩 중 실수하기 쉬운 형 변환, 자원 반환 등의 오류를 예방하기 위한 보안 점검 항목들

널 포인터(Null Pointer) 역참조

  • 널 포인터가 가리키는 메모리에 어떠한 값을 저장할 때 발생하는 보안 약점
  • 많은 라이브러리 함수들이 오류가 발생할 경우 널 값을 반환하는데, 이 반환값을 포인터로 참조하는 경우 발생
  • 대부분의 운영체제에서 널 포인터는 메모리의 첫 주소를 가리키며, 해당 주소를 참조할 경우 소프트웨어가 비정상적으로 종료될 수 있음.
  • 공격자가 널 포인터 역참조로 발생하는 예외 상황을 악용할 수 있음.
  • 널이 될 수 있는 포인터를 이용하기 전에 널 값을 갖고 있는지 검사함으로써 방지할 수 있음.

부적절한 자원 해제

  • 자원을 반환하는 코드를 누락하거나 프로그램 오류로 할당된 자원을 반환하지 못했을 때 발생하는 보안 약점
  • 힙 메모리, 소켓 등의 유한한 시스템 자원이 계속 점유하고 있으면 자원 부족으로 인해 새로운 입력을 처리하지 못할 수 있음.
  • 프로그램 내에 자원 반환 코드가 누락되었는지 확인하고, 오류로 인해 함수가 중간에 종료되었을 때 예외처리에 관계없이 자원이 반환되도록 코딩함으로써 방지

해제된 자원 사용

  • 이미 사용이 종료되어 반환된 메모리를 참조하는 경우 발생하는 보안 약점
  • 반환된 메모리를 참조하는 경우 예상하지 못한 값 또는 코드를 수행하게 되어 의도하지 않은 결과가 발생할 수 있음.
  • 반환된 메모리에 접근할 수 없도록 주소를 저장하고 있는 포인터를 초기화함으로써 방지할 수 있음.

초기화되지 않은 변수 사용

  • 변수 선언 후 값이 부여되지 않은 변수를 사용할 때 발생하는 보안 약점
  • 변수가 선언되어 메모리가 할당되면 해당 메모리에 이전에 사용하던 내용이 계속 남아있어 변수가 외부에 노출되는 경우 중요정보가 악용될 수 있음.
  • 변수 선언 시 할당된 메모리를 초기화함으로써 방지

186 캡슐화

  • 정보 은닉이 필요한 중요한 데이터와 기능을 불충분하게 캡슐화하거나 잘못 사용함으로써 발생할 수 있는 문제를 예방하기 위한 보안 점검 항목들

잘못된 세션에 의한 정보 노출

  • 멀티 스레드 환경에서 멤버 변수에 정보를 저장할 때 발생하는 보안 약점

제거되지 않고 남은 디버그 코드

  • 개발 중에 버그 수정이나 결과값 확인을 위해 남겨둔 코드들로 인해 발생하는 보안 약점

시스템 데이터 정보 노출

  • 시스템의 내부 정보를 시스템 메시지 등을 통해 외부로 출력하도록 코딩했을 때 발생하는 보안 약점

Public 메소드로부터 반환된 Private 배열

  • 선언된 클래스 내에서만 접근이 가능한 Private 배열을 모든 클래스에서 접근이 가능한 Public 메소드에서 반환할 때 발생하는 보안 약점
  • Private 배열을 별도의 메소드를 통해 조작하거나, 동일한 형태의 복제본으로 반환받은 후 값을 전달하는 방식으로 방지할 수 있음.

Private 배열에 Public 데이터 할당

  • Private 배열에 Public으로 선언된 데이터 또는 메소드의 파라미터를 저장할 때 발생하는 보안 약점
  • Public으로 선언된 데이터를 Private 배열에 저장할 때, 레퍼런스가 아닌 값을 직접 저장함으로써 방지할 수 있음.

187 API 오용

  • 소프트웨어 구현 단계에서 API를 잘못 사용하거나 보안에 취약한 API를 사용하지 않도록 하기 위한 보안 검증 항목들

DNS Lookup에 의존한 보안 결정

  • 도메인명에 의존하여 인증이나 접근 통제 등의 보안 결정을 내리는 경우 발생하는 보안 약점
  • DNS 엔트리를 속여 동일한 도메인에 속한 서버인 것처럼 위장하거나, 사용자와 서버 간의 네트워크 트래픽을 유도하여 악성 사이트를 경유하도록 조작할 수 있음.
    • DNS 엔트리: 도메인 이름들과 도메인에 해당하는 IP들이 저장된 목록
  • 공격자는 DNS lookup을 이용하여 인증이나 접근 통제를 우회하는 수법으로 권한을 탈취함.
  • DNS 검색을 통해 도메인 이름을 비교하지 않고 IP 주소를 직접 입력하여 접근함으로써 방지

취약한 API 사용

  • 보안 문제로 사용이 금지된 API를 사용하거나, 잘못된 방식으로 API를 사용했을 때 발생하는 보안 약점
  • 보안 문제로 금지된 함수는 안전한 함수로 대체하고, API의 매뉴얼을 참고하여 보안이 보장되는 인터페이스를 사용함으로써 방지

188 암호 알고리즘

개인키 암호화(Private Key Encryption) 기법

공개키 암호화(Public Key Encryption) 기법

해시(Hash)

4장. 시스템 보안 구축

189 서비스 공격 유형

서비스 거부(DoS; Denial of Service) 공격

  • 표적이 되는 서버의 자원을 고갈시킬 목적으로 다수의 공격자 또는 시스템에서 대량의 데이터를 한 곳의 서버에 집중적으로 전송함으로써, 표적이 되는 서버의 정상적인 기능을 방해하는 것
  • 서비스 거부 공격의 유형에는 Ping of Death, SMURFING, SYN Flooding, TearDrop, Land, DDoS 등
Ping of Death(죽음의 핑)
  • Ping 명령을 전송할 때 패킷의 크기를 인터넷 프로토콜 허용 범위(65,536 바이트) 이상으로 전송하여 공격 대상의 네트워크를 마비시키는 서비스 거부 공격 방법
  • jolt, sPING, ICMP bug, IceNewk 등의 변종 공격에 대비하여 ICMP Ping 메시지가 전송되지 못하도록 방화벽에서 차단하는 기술이 개발됨.
SMURFING(스머핑)
  • IP나 ICMP의 특성을 악용하여 엄청난 양의 데이터를 한 사이트에 집중적으로 보냄으로써 네트워크를 불능 상태로 만드는 공격 방법
  • 공격자는 송신 주소를 공격 대상자의 IP 주소로 위장하고 해당 네트워크 라우터의 브로드캐스트 주소를 수신지로 하여 패킷을 전송하면, 라우터의 브로드캐스트 주소로 수신된 패킷은 해당 네트워크 내의 모든 컴퓨터로 전송된다.
  • 해당 네트워크 내의 모든 컴퓨터는 수신된 패킷에 대한 응답 메시지를 송신 주소인 공격 대상지로 집중적으로 전송하게 되는데, 이로 인해 공격 대상지는 네트워크 과부하로 인해 정상적인 서비스를 수행할 수 없게 된다.
  • SMURFING 공격을 무력화하는 방법 중 하나는 각 네트워크 라우터에서 브로드캐스트 주소를 사용할 수 없게 미리 설정해 놓는 것.
SYN Flooding
  • TCP는 신뢰성 있는 전송을 위해 3-way-handshake를 거친 후에 데이터를 전송하게 되는데, SYN Flooding은 공격자가 가상의 클라이언트로 위장하여 3-way-handshake 과정을 의도적으로 중단시킴으로써 공격 대상지인 서버가 대기 상태에 놓여 정상적인 서비스를 수행하지 못하게 하는 공격 방법
  • SYN Flooding에 대비하기 위해 수신지의 'SYN' 수신 대기 시간을 줄이거나 침입 차단 시스템을 활용
TearDrop
  • 데이터의 송·수신 과정에서 패킷의 크기가 커 여러 개로 분할되어 전송될 때 분할 순서를 알 수 있도록 Fragment Offset 값을 함께 전송하는데, TearDrop은 이 Offset 값을 변경시켜 수신 측에서 패킷을 재조립할 때 오류로 인한 과부하를 발생시킴으로써 시스템이 다운되도록 하는 공격 방법
  • TearDrop에 대비하기 위해 Fragment Offset이 잘못된 경우 해당 패킷을 폐기하도록 설정
Land
  • 패킷을 전송할 때 송신 IP 주소와 수신 IP 주소를 모두 공격 대상의 IP 주소로 하여 공격 대상에게 전송하는 것으로, 이 패킷을 받은 공격 대상은 송신 IP 주소가 자신이므로 자신에게 응답을 수행하게 되는데, 이러한 패킷이 계속해서 전송될 경우 자신에 대해 무한히 응답하게 하는 공격
  • Land에 대비하기 위해 송신 IP 주소와 수신 IP 주소의 적절성을 검사
DDoS(Distributed Denial of Service, 분산 서비스 거부) 공격
  • 여러 곳에 분산된 공격 지점에서 한 곳의 서버에 대해 분산 서비스 공격을 수행하는 것

  • 분산 서비스 공격용 툴: 에이전트(Agent)의 역할을 수행하도록 설계된 프로그램으로 데몬(Daemon)이라고 부름.

    • Trin00
    • TFN(Tribe Flooding Network)
    • TFN2k
    • Stacheldraht

네트워크 침해 공격 관련 용어

  • 스미싱(Smishing)
    • SMS를 이용해 사용자의 개인 신용 정보는 빼내는 수법
    • 메시지에 링크를 걸어 apk 파일을 설치하도록 유도하여 사용자 정보를 빼가는 수법으로 발전
  • 스피어 피싱(Spear Phishing)
    • 사회 공학의 한 기법으로, 특정 대상을 선정한 후 그 대상에게 일반적인 이메일로 위장한 메일을 지속적으로 발송하여, 발송 메일의 본문 링크나 첨부된 파일을 클릭하도록 유도해 사용자의 개인 정보를 탈취
  • APT(Advanced Persistent Threats, 지능형 지속 위협)
    • 다양한 IT기술과 방식들을 이용해 조직적으로 특정 기업이나 조직 네트워크에 침투해 활동 거점을 마련한 뒤 때를 기다리면서 보안을 무력화시키고 정보를 수집한 다음 외부로 빼돌리는 형태의 공격
    • 공격 방법
      • 내부자에게 악성코드가 포함된 이메일을 오랜 기간 동안 꾸준히 발송해 한번이라도 클릭되길 기다리는 형태
      • 스턱스넷(Stuxnet)과 같이 악성코드가 담긴 USB 등으로 전파하는 형태
      • 악성코드에 감염된 P2P 사이트에 접속하면 악성코드에 감염되는 형태 등
  • 무작위 대입 공격(Brute Force Attack)
    • 암호화된 문서의 암호키를 찾아내기 위해 적용 가능한 모든 값을 대압하여 공격하는 방식
  • 큐싱(Qshing)
    • QR코드를 통해 악성 앱의 다운로드를 유도하거나 악성 프로그램을 설치하도록 하는 금융사기 기법. (QR코드 + Fishing)
  • SQL 삽입(Injection) 공격
    • 전문 스캐너 프로그램 혹은 봇넷 등을 이용해 웹사이트를 무차별적으로 공격하는 과정에서 취약한 사이트가 발견되면 데이터베이스 등의 데이터를 조작하는 일련의 공격 방식
    • 스캐너 프로그램: 서비스를 제공하는 서버의 상태를 확인하는 프로그램으로, 네트워크 상의 서버들을 스캐닝하면서 서버의 열려있는 포트, 제공 서비스, OS, 취약점 등의 정보를 수집
  • 크로스 사이트 스크립팅(XSS; Cross Site Scripting)
  • 파밍(Pharming)
    • 합법적인 도메인을 탈취하거나 도메인 네임 시스템(DNS)을 변조하여 사용자들을 가짜 사이트로 유도해 개인정보를 빼냄.

정보 보안 침해 공격 관련 용어

  • 좀비(Zombie) PC
  • C&C 서버
    • 해커가 원격지에서 감염된 좀비 PC에 명령을 내리고 악성코드를 제어하기 위한 용도로 사용하는 서버
  • 봇넷(Botnet)
    • 악성 프로그램에 감염되어 악의적인 의도로 사용될 수 있는 다수의 컴퓨터들이 네트워크로 연결된 형태
  • 웜(Worm)
    • 네트워크를 통해 연속적으로 자신을 복제하여 시스템의 부하를 높임으로써 결국 시스템을 다운시키는 바이러스의 일종으로, 분산 서비스 거부 공격, 버퍼 오버플로 공격, 슬래머 등이 웜 공격의 한 형태
      • 슬래머(Slammer): SQL의 허점을 이용하여 SQL 서버를 공격하는 웜 바이러스의 형태로 SQL 슬래머라고도 함.
  • 제로 데이 공격(Zero Day Attack)
    • 보안 취약점이 발견되었을 때 발견된 취약점의 존재 자체가 널리 공표되기도 전에 해당 취약점을 통하여 이루어지는 보안 공격으로, 공격의 신속성을 의미
  • 키로거 공격(Key Logger Attack)
    • 컴퓨터 사용자의 키보드 움직임을 탐지해 ID, 패스워드, 계좌번호, 카드번호 등과 같은 중요 정보를 빼가는 해킹 공격
  • 랜섬웨어(Ransomeware)
    • 인터넷 사용자의 컴퓨터에 잡입해 내부 문서나 파일 등을 암호화해 사용자가 열지 못하게 하는 프로그램으로, 암호 해독용 프로그램의 전달을 조건으로 사용자에게 돈을 요구하기도 함.
  • 백도어(Back Door, Trap Door)
    • 시스템 설계자가 서비스 기술자나 유지 보수 프로그램 작성자(Programmer)의 액세스 편의를 위해 시스템 보안을 제거하여 만들어놓은 비밀 통로로, 컴퓨터 범죄에 악용되기도 함.
  • 트로이 목마(Trojan Horse)
    • 정상적인 기능을 하는 프로그램으로 위장하여 프로그램 내에 숨어 있다가 해당 프로그램이 동작할 때 활성화되어 부작용을 일으키는 것으로, 자기 복제 능력은 없음.

190 서버 인증

보안 서버의 개념

  • 보안 서버: 인터넷을 통해 개인정보를 암호화하여 송·수신할 수 있는 기능을 갖춘 서버
  • '개인정보의 기술적·관리적 보호조치 기준'에 따르면 보안 서버는 다음과 같은 기능을 갖춰야 함.
    • 서버에 SSL 인증서를 설치하여 전송 정보를 암호화하여 송·수신 하는 기능
    • 서버에 암호화 응용 프로그램을 설치하고 전송 정보를 암호화하여 송·수신하는 기능
  • 스니핑(Sniffing)을 이용한 정보 유출, 피싱(Phishing)을 이용한 위조 사이트 등에 대비하기 위해 보안 서버 구축이 필요함.

인증(Authentication)의 개념

지식 기반 인증(Something You Know)
소유 기반 인증(Something You Have)
생체 기반 인증(Something You Are)
기타 인증 기법
- 행위 기반 인증
- 위치 기반 인증

191 보안 아키텍처 / 보안 프레임워크

보안 아키텍처(Security Architecture)

  • 정보 시스템의 무결성, 가용성, 기밀성을 확보하기 위해 보안 요소 및 보안 체계를 식별하고 이들 간의 관계를 정의한 구조
  • 보안 아키텍처를 통해 관리적, 물리적, 기술적 보안 개념의 수립, 보안 관리 능력의 향상, 일관된 보안 수준의 유지를 기대할 수 있음.
  • 보안 아키텍처는 보안 수준에 변화가 생겨도 기본 보안 아키텍처의 수정 없이 지원할 수 있어야 함.
  • 보안 아키텍처는 보안 요구사항의 변화나 추가를 수용할 수 있어야 함.

보안 프레임워크(Security Framework)

  • 안전한 정보 시스템 환경을 유지하고 보안 수준을 향상시키기 위한 체계
  • ISO 27001
    • 정보보안 관리를 위한 국제 표준으로, 일종의 보안 인증이자 가장 대표적인 보안 프레임워크
    • ISO 27001은 영국의 BSI가 제정한 BS 7799를 기반으로 구성되어 있음.
    • 조직에 대한 정보보안 관리 규격이 정의되어 있어 실제 심사/인증용으로 사용됨.

192 로그 분석

리눅스(LINUX) 로그

  • 리눅스에서는 시스템의 모든 로그를 var/log 디렉터리에서 기록하고 관리함.
  • 로그 파일을 관리하는 syslogd 데몬은 etc/syslog.conf 파일을 읽어 로그 관련 파일들의 위치를 파악한 후 로그 작업을 시작함.
  • syslog.conf 파일을 수정하여 로그 관련 파일들의 저장 위치와 파일명을 변경할 수 있음.
리눅스의 주요 로그 파일

(p. 813)

윈도우(Windows) 로그

  • Windows 시스템에서는 이벤트 로그 형식으로 시스템의 로그를 관리함.
  • Windows의 이벤트 뷰어를 이용하여 이벤트 로그를 확인할 수 있음.
Windows 이벤트 뷰어의 로그

(p. 814)

193 보안 솔루션

방화벽(Firewall)
침입 탐지 시스템(IDS; Intrusion Detection System)
  • 침입 탐지 시스템은 컴퓨터 시스템의 비정상적인 사용, 오용, 남용 등을 실시간으로 탐지하는 시스템
  • 문제가 발생한 경우 모든 내·외부 정보의 흐름을 실시간으로 차단하기 위해 해커 침입 패턴에 대한 추적과 유해 정보 감시가 필요함.
  • 오용 탐지(Misuse Detection): 미리 입력해 둔 공격 패턴이 감지되면 이를 알려줌.
  • 이상 탐지(Anomaly Detection): 평균적인 시스템의 상태를 기준으로 비정상적인 행위나 자원의 사용이 감지되면 이를 알려줌.
  • 침입 탐지 시스템의 위치
    • 패킷이 라우터로 들어오기 전: 네트워크에 시도되는 모든 공격을 탐지할 수 있음.
    • 라우터 뒤: 라우터에 의해 패킷 필터링을 통과한 공격을 탐지할 수 있음.
    • 방화벽 뒤: 내부에서 외부로 향하는 공격을 탐지할 수 있음.
    • 내부 네트워크: 내부에서 내부 네트워크의 해킹 공격을 탐지할 수 있음.
    • DMZ: DMZ는 외부 인터넷에 서비스를 제공하는 서버가 위치하는 네트워크로, 강력한 외부 공격이나 내부 공격으로부터 중요 데이터를 보호하거나 서버의 서비스 중단을 방지할 수 있음.
침입 방지 시스템(IPS; Intrusion Prevention System)
  • 침입 방지 시스템은 방화벽과 침입 탐지 시스템을 결합한 것
데이터 유출 방지(DLP; Data Leakage/Loss Prevention)
  • 데이터 유출 방지는 내부 정보의 외부 유출을 방지하는 보안 솔루션
웹 방화벽(Web Firewall)
  • 웹 방화벽은 일반 방화벽이 탐지하지 못하는 SQL 삽입 공격, Cross-Site Scripting(XSS) 등의 웹 기반 공격을 방어할 목적으로 만들어진 웹 서버에 특화된 방화벽
VPN(Virtual Private Network, 가상 사설 통신망)
NAC(Network Access Control)
  • NAC은 네트워크에 접속하는 내부 PC의 MAC 주소를 IP 관리 시스템에 등록한 후 일관된 보안 관리 기능을 제공하는 보안 솔루션
  • 내부 PC의 소프트웨어 사용 현황을 관리하여 불법적인 소프트웨어 설치를 방지
  • 일괄적인 배포 관리 기능을 이용해 백신이나 보안 패치 등의 설치 및 업그레이드를 수행
  • 네트워크에 접속한 비인가된 시스템을 자동으로 검출하여 자산을 관리
ESM(Enterprise Security Management)
  • ESM은 다양한 장비에서 발생하는 로그 및 보안 이벤트를 통합하여 관리하는 보안 솔루션
  • 방화벽, IDS, IPS, 웹 방화벽, VPN 등에서 발생한 로그 및 보안 이벤트를 통합하여 관리함으로써 비용 및 자원을 절약할 수 있음.
  • 보안 솔루션 간의 상호 연동을 통해 종합적인 보안 관리 체계를 수립

194 취약점 분석·평가

  • 사이버 위협으로부터 정보 시스템의 취약점을 분석 및 평가한 후 개선하는 일련의 과정
  • 안정적인 정보 시스템의 운영을 방해하는 사이버 위협에 대한 항목별 세부 점검항목을 파악하여 취약점 분석을 수행함.
  • 취약점이 발견되면, 위험 등급을 부여하고 개선 방향을 수립함.

취약점 분석·평가 범위 및 항목

수행 절차 및 방법

  1. 취약점 분석·평가 계획 수립
  2. 취약점 분석·평가 대상 선별
  3. 취약점 분석 수행
    • 관리적 점검
    • 물리적 점검
    • 기술적 점검
  4. 취약점 평가 수행

0개의 댓글