ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 5. 정보시스템 구축 관리
    정보처리기사 개정 2021. 5. 26. 12:00

    5. 정보시스템 구축 관리.pdf
    2.33MB

    정보시스템 구축 관리

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

    소프트웨어 개발 방법론 선정

    상용 소프트웨어

    상용 소프트웨어의 분류

    %E1%84%8C%E1%85%A5%E1%86%BC%E1%84%87%E1%85%A9%E1%84%89%E1%85%B5%E1%84%89%E1%85%B3%E1%84%90%E1%85%A6%E1%86%B7%20%E1%84%80%E1%85%AE%E1%84%8E%E1%85%AE%E1%86%A8%20%E1%84%80%E1%85%AA%E1%86%AB%E1%84%85%E1%85%B5%20c893307a9c854849b0b0bb2ba8847af0/Untitled.png

    응용 소프트웨어

    응용소프트웨어 개요

    특정 업무를 처리하기 위한 목적을 가지고 작성된 프로그램과 데이터로 구성

    응용소프트웨어 분류와 종류

    • 기업용 소프트웨어
    • 영상 처리 소프트웨어
    • CG / VR 소프트웨어
    • 콘텐츠 배포 소프트웨어
    • 자연어 처리 소프트웨어
    • 음성 처리 소프트웨어

    소프트웨어 개발

    소프트웨어 개발 프로세스

    1. 계획타당성 분석 : 경제적, 기술적, 법적 측면에서 검토
    2. 무엇을 개발할 것인지 결정
    3. 요구 분석시스템이 만족시켜야 할 요구사항 발견, 모델링, 명세화
    4. 시스템의 목표를 확립
    5. 설계
      • 상위 설계
        • 구조 설계 → 시스템 구조도
        • 데이터베이스 설계 → 외부 파일, 데이터베이스 설계도
        • 인터페이스 설계 → 화면, 출력 레이아웃
      • 하위 설계
        • 컴포넌트 기반
        • 자료구조 설계
        • 알고리즘 설계
    6. 본격적인 프로그램의 구현에 들어가기 전 소프트웨어를 구성하는 뼈대를 정의해 구현의 기반을 만드는 것
    7. 구현각 모듈의 코딩, 디버깅 수행
    8. 프로그래밍을 하는 단계
    9. 테스트테스트 절차
      1. 테스트 계획
      2. 테스트 케이스 설계
      3. 테스트 실행 및 평가
      4. 테스트 결과 분석
      5. 오류 추적 및 수정테스트 결과, 테스트 수행 방법 및 기술에 따른 평가와 권고 사항 기술
      6. 보고서 작성
    10. 소프트웨어의 오류를 발견할 목적으로 개발 과정에서 생성되는 문서나 프로그램에 있는 오류를 검출
    11. 유지보수
    12. 오류 수정, 환경 변화에 따른 적응, 기능 향상에 따른 요구사항 변경 고려

    프로젝트 선정 프로세스

    프로젝트 정의 : 유일한 제품, 서비스를 만들기 위해 수행되어야 할 일시적 행동

    프로젝트 구성 요소 : 목표, 참여자, 관리자, 기술, 기간, 비용, 고객

    절차

    1. 소프트웨어 제품 구상
    2. 소프트웨어 제안 요청서 배포
    3. 제안서 제출
    4. 제안서 심사
    5. 계약서 작성
    6. 프로젝트 시작 및 수행
    7. 프로젝트 종료 및 제품 인도

    프로젝트 관리

    프로젝트의 요구 사항을 만족시키기 위해 지식, 기술, 틀, 기법을 프로젝트 활동에 적용하는 것

    • 프로젝트 통합 관리
    • 프로젝트 범위 관리
    • 프로젝트 일정 관리
    • 프로젝트 비용 관리
    • 프로젝트 품질 관리
    • 프로젝트 인적 자원 관리
    • 프로젝트 의사소통 관리
    • 프로젝트 위험 관리
    • 프로젝트 조달 관리

    %E1%84%8C%E1%85%A5%E1%86%BC%E1%84%87%E1%85%A9%E1%84%89%E1%85%B5%E1%84%89%E1%85%B3%E1%84%90%E1%85%A6%E1%86%B7%20%E1%84%80%E1%85%AE%E1%84%8E%E1%85%AE%E1%86%A8%20%E1%84%80%E1%85%AA%E1%86%AB%E1%84%85%E1%85%B5%20c893307a9c854849b0b0bb2ba8847af0/Untitled%201.png

    프로젝트 관리 지식 체계의 9가지 관점

    소프트웨어 개발 방법론

    소프트웨어 개발 방법론의 개요 및 목적

    개요

    소프트웨어 개발 전 과정에 지속적으로 적용할 수 있는 방법, 절차, 기법

    소프트웨어 전 생애를 형상화한 것

    목적

    생산성과 소프트웨어 품질을 향상시키는 방안

    종류

    %E1%84%8C%E1%85%A5%E1%86%BC%E1%84%87%E1%85%A9%E1%84%89%E1%85%B5%E1%84%89%E1%85%B3%E1%84%90%E1%85%A6%E1%86%B7%20%E1%84%80%E1%85%AE%E1%84%8E%E1%85%AE%E1%86%A8%20%E1%84%80%E1%85%AA%E1%86%AB%E1%84%85%E1%85%B5%20c893307a9c854849b0b0bb2ba8847af0/Untitled%202.png

    소프트웨어 개발 방법론 및 특징

    구조적 방법론

    쉽게 이해할 수 있고 검증할 수 있는 프로그램의 코드를 작성하는 것

    절차

    1. 타당성 검토
    2. 계획
    3. 요구 분석
    4. 설계
    5. 구현
    6. 검사
    7. 운용, 유지보수

    정보 공학 방법론

    정보 시스템 개발에 필요한 관리 절차와 작업 기법을 체계화한 방법론

    개발 주기를 이용해 대형 프로젝트를 수행하는 체계적인 방법론

    • 수직적 구조 방법론
      1. 정보 전략 계획
      2. 업무 영역 분석
      3. 업무 시스템 설계
      4. 기술 설계
      5. 업무 시스템 구축
      6. 업무 시스템 실행
    • 수평적 구조 방법론
      1. 데이터
      2. 업무 활동
      3. 상호작용

    객체지향 방법론

    데이터와 데이터에 관련된 동작을 모두 포함하는 방법론

    절차

    1. 요구 분석
    2. 설계
    3. 구현
    4. 시험
    5. 인수

    컴포넌트 기반 방법론

    소프트웨어를 구성하는 컴포넌트를 조립해서 하나의 새로운 응용 프로그램을 작성하는 방법론

    절차

    1. 개발 준비
    2. 분석
    3. 설계
    4. 구현
    5. 시험
    6. 전개
    7. 인도

    애자일 방법론

    고객의 요구사항을 바로바로 반영하고 상황에 따라 주어지는 문제를 풀어나가는 방법론

    방법

    • 익스트림 프로그래밍
    • 스크럼
    • 크리스털
    • 칸반

    절차

    • 유저 스토리
    • 스파이크 솔루션
    • 주기 계획
    • 주기 개발
    • 시험
    • 페어 프로그래밍

    제품 계열 방법론

    특정 제품에 적용하고 싶은 공통된 기능을 정의하여 개발하는 방법론

    • 영역 공학 : 영역 분석, 영역 설계, 핵심 자산 구현
    • 응용 공학 : 제품 요구 분석, 제품 설계, 제품 구현

    요구공학 방법론

    요구사항을 기준으로 하는 개발 방법론

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

    %E1%84%8C%E1%85%A5%E1%86%BC%E1%84%87%E1%85%A9%E1%84%89%E1%85%B5%E1%84%89%E1%85%B3%E1%84%90%E1%85%A6%E1%86%B7%20%E1%84%80%E1%85%AE%E1%84%8E%E1%85%AE%E1%86%A8%20%E1%84%80%E1%85%AA%E1%86%AB%E1%84%85%E1%85%B5%20c893307a9c854849b0b0bb2ba8847af0/Untitled%203.png

    소프트웨어 개발 모델

    폭포수 모델

    특징

    단순하고, 이해하기 쉽고, 관리가 쉽다.

    요구사항이 초기에 모두 식별되어야 한다.

    SW 개발을 단계적으로 정의한 체계이며 순차적 접근 방법을 사용한다.

    적용 범위

    • 요구사항 변경이 거의 없을 경우
    • 소규모이고, 위험성이 적은 프로젝트
    • 기술적인 검증이 끝난 경우

    폭포수 모델의 장단점

    장점

    • 사례 풍부
    • 이해 용이
    • 관리 용이

    단점

    • 초기 요구사항 정의가 어려움
    • 중요 문제점 발견이 늦어짐
    • 전 단계가 종결되어야 다음 단계 수행
    • 재사용 기회 감소

    프로토타입 모델

    개발하려는 시스템의 주요 기능을 초기에 실제 운영할 모델로 개발하는 것

    특징

    요구사항을 초기에 명세하기 어려운 상황에 적합

    사용자 인터페이스를 시험제작

    사용자와 개발자 모두에게 공통의 참조 모델 제공

    구성 요소 및 절차

    1. 구성 요소 요구사항 수집
    2. 프로토타입 설계
    3. 프로토타입 구현
    4. 고객 평가
    5. 프로토타입 정제

    적용 분야

    • 빠른 기간 내에 소프트웨어를 개발하고자 할 때
    • 사용자 요구가 불투명할 때
    • 프로젝트의 타당성이 의심스러운 경우

    프로토타입 모델의 장단점

    장점

    • 요구사항 도출 용이
    • 시스템의 이해와 품질 향상
    • 개발자와 사용자 간 의사소통 원활
    • 개발의 타당성 검증

    단점

    • 프로토타입 중간단계 결과를 최종결과물로 오해 및 기대심리 유발
    • 폐기시 비경제적
    • 중간 단계 산출물 문서화 어려움
    • 전체 SW 품질과 장기적 유지보수의 어려움
    • 프로젝트 관리 소홀, 문서화 경시 가능
    • 시스템의 극한 상황 등에 대한 성능 평가 어려움

    프로토타이핑 종류

    • 실험적 프로토타이핑 : 프로토타입을 의사소통의 도구로써 활용
    • 진화적 프로토타이핑 : 프로토타입을 지속적으로 발전시켜 최종 소프트웨어로 개발

    나선형 모델

    프로토타입을 요구분석 도구로만 활용 + 이미 개발 된 프로토타입을 지속적으로 발전시켜 최종 시스템 개발

    미리 소프트웨어 개발의 형태를 완벽하게 결정할 수 없다.

    특징

    선형 모델의 체계적 측면과 프로토타이핑의 반복적 특성을 결합한 것

    대규모 시스템 및 위험부담이 큰 시스템 개발에 적합

    반복적 접근법으로 위험 최소화

    나선형 모델의 장 단점

    장점

    • 정확한 사용자 요구사항 파악
    • 위험부담 감소
    • 품질 확보

    단점

    • 프로젝트 개발에 많은 시간 소요
    • 프로젝트 관리 어려움
    • 충분한 검증 미흡

    나선형 모델의 단계

    • 계획 수립
    • 위험 분석
    • 개발
    • 고객 평가

    반복적 개발 모델

    사용자 요구사항의 일부분 또는 제품의 일부분을 반복적으로 개발하여 최종 제품을 완성하는 모델

    특징

    프로젝트 진행이 가시적이다.

    반복적 개발 모델의 종류

    • 증분적 개발 모델SW의 구조적 관점에서 하향식 계층 구조의 수준별 증분을 개발하여 통합하는 방식
    • 폭포수 모델의 변형
    • 진화적 개발 모델
    • 구성요소의 핵심 부분을 개발한 후 각 구성 요소를 개선시켜나 나가는 방법
    • 점증적, 증분석 개발 모델
    • 고객에게 인도할 최종 시스템을 점증적인 단위로 여러 번 전달하는 방식

    적용 분야

    고객의 요구사항을 초기에 명확히 알 수 없는 경우

    단점

    증분의 수가 많고 병행 개발이 빈번하면 프로젝트 관리가 어려워지고 프로젝트 관리자는 증분개발 활동 간의 조율에 많은 노력을 기울여야 한다.

    진화적 개발 모델

    고객의 요구사항이 명확하지 않은 경우 각 반복에서 이를 수용하고 시스템의 버전을 업그레이드하는 방식

    특징

    강도 높은 요구사항 관리가 필수

    RAD

    제한된 범위의 단독 시스템을 CASE를 사용하여 신속하게 개발하는 방법

    RAD 기법의 요소

    시스템 개발 조직

    • 신속한 의사결정 요구
    • 시스템 분석, 설계를 위한 워크숍 수행
    • 사용자의 프로토타이핑 과정 참여, 긴밀하고 적극적인 협력

    최신 개발도구

    • 모델링 단계에서 자동으로 설계 명세서, 데이터베이스 스키마, 프로그램 코드 자동 생성

    GUI 개발도구

    • 사용자와 개발자의 원활한 의사소통 가능
    • 시각적 효과, 변경 용이성, 신속성
    • 자동 문서화 기능

    RAD의 특징

    CASE 도구, RDB, 재사용 라이브러리 등 도구 활용

    Prototyping 사용

    RAD의 진행 단계

    1. 정의분석
    2. 현업 관리자와 개발 관리자 간의 면담 및 공동요구 정의
    3. 설계
    4. 사용자 참여 공동설계 워크숍을 통해 사용자와 개발자가 함께 분석, 설계 수행
    5. 구현
    6. 대상 시스템 상세 설계를 완료하고 소프트웨어 생성
    7. 이전
    8. 운용에 필요한 지침서 작성, 현업 부서로 이전

    RAD vs 전통적 개발 생명주기 모델

    %E1%84%8C%E1%85%A5%E1%86%BC%E1%84%87%E1%85%A9%E1%84%89%E1%85%B5%E1%84%89%E1%85%B3%E1%84%90%E1%85%A6%E1%86%B7%20%E1%84%80%E1%85%AE%E1%84%8E%E1%85%AE%E1%86%A8%20%E1%84%80%E1%85%AA%E1%86%AB%E1%84%85%E1%85%B5%20c893307a9c854849b0b0bb2ba8847af0/Untitled%204.png

    4세대 개발 모델

    절차

    1. 요구 분석
    2. 설계
    3. 구현
    4. 검사
    5. 유지보수

    CASE를 비롯한 자동화 도구들을 이용하여 요구사항 명세서로부터 실행코드 자동 생성

    특징

    그래프 표기법을 사용해 소프트웨어를 명시하는 능력에 초점을 맞춘다.

    4세대 개발 모델 장단점

    장점

    • 생산성 향상

    단점

    • 불필요한 많은 양의 코드 생성
    • 유지보수 어려움
    • 4GT 도구의 활용이 활성화되지 않음

    소프트웨어 개발 비용 산정

    비용 산정 개념

    소프트웨어 개발에 필요한 기능과 규모를 기반으로 비용을 예측하는 활동

    소프트웨어 비용의 종류와 내용

    %E1%84%8C%E1%85%A5%E1%86%BC%E1%84%87%E1%85%A9%E1%84%89%E1%85%B5%E1%84%89%E1%85%B3%E1%84%90%E1%85%A6%E1%86%B7%20%E1%84%80%E1%85%AE%E1%84%8E%E1%85%AE%E1%86%A8%20%E1%84%80%E1%85%AA%E1%86%AB%E1%84%85%E1%85%B5%20c893307a9c854849b0b0bb2ba8847af0/Untitled%205.png

    소프트웨어 개발 비용 결정 요소

    %E1%84%8C%E1%85%A5%E1%86%BC%E1%84%87%E1%85%A9%E1%84%89%E1%85%B5%E1%84%89%E1%85%B3%E1%84%90%E1%85%A6%E1%86%B7%20%E1%84%80%E1%85%AE%E1%84%8E%E1%85%AE%E1%86%A8%20%E1%84%80%E1%85%AA%E1%86%AB%E1%84%85%E1%85%B5%20c893307a9c854849b0b0bb2ba8847af0/Untitled%206.png

    소프트웨어 개발 비용 산정 기법의 종류

    하향식 산정 기법

    과거의 유사 경험을 바탕으로 회의를 통해 산정하는 비과학적인 기법

    • 전문가 판단 기법 : 여러 전문가가 프로젝트 수행 비용을 평가한 금액을 개발 비용으로 산정
    • 델파이 기법
      1. 전문가가 모여 각자의 의견대로 비용 산정
      2. 그 결과를 서로 공유하여 의견을 조율
      3. 최종적으로 일치되는 결과값이 나오면 이를 개발 비용으로 산정

    상향식 산정 기법

    세부 작업 단위별로 비용을 산정한 후 전체 비용을 합산하여 산정하는 방법

    • 원시 코드 라인 수
    • 각 기능의 원시 코드 라인 수의 기대치를 측정하여 비용을 산정하는 방식
    • 개발 단계별 노력
    • LOC 기법을 보완하기 위해 각 기능을 구현하는 데 필요한 M/M을 소프트웨어 개발 생명주기의 각 단계에 적용하여 단계별로 산정

    수학적 산정 기법

    상향식 비용 산정 기법으로 경험적 추정 기법, 실험적 추정 기법이라고도 한다.

    • COCOMO : 소프트웨어 개발 비용 산정시 원시 코드의 크기를 중점에 둔다.
    • Putnam : 소프트웨어 생명주기 전 과정에 사용될 노력의 분포를 가정해주는 방식
    • 기능 점수 : 기능 점수를 구한 후 이를 이용해 비용을 산정하는 방식

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

    소프트웨어 구조 설계

    소프트웨어 구조 설계

    소프트웨어 구조 설계

    1. 시스템의 구조 설계
    2. 기능 분해
    3. 모듈 구조
    4. 모듈간의 관계 정립
    5. 자료 설계
    6. 결과

    소프트웨어 구조 상세 설계

    1. 모듈내부 설계
    2. 사용자 인터페이스
    3. 자료 구조 설계
    4. 결과

    구조적 방법론

    정의 및 개념

    전체 시스템을 기능에 따라 분할하여 개발하고, 이를 통합하는 정보 접근 방식의 방법론

    업무 활동 중심의 방법론

    프로세스 중심의 하향식 방법론

    장단점

    장점

    • 일괄처리 방식의 자료 변환 중심 응용 소프트웨어 개발에 적합
    • 소프트웨어 및 시스템 개발의 전형적 접근법

    단점

    • 기능의 불안정 요소
    • 데이터 정보은닉 불가
    • 재사용 보수성 낮음
    • 시스템 분석, 설계, 개발 구분이 명확하여 단계별 전환 필요

    원리

    • 추상화
    • 구조화
    • 단계별 상세화
    • 모듈화
    • 정보 은닉

    단계별 산출물

    • 계획 : 도메인 분석서, 프로젝트 계획서
    • 분석 : 데이터 흐름 다이어그램
    • 설계 : 구조도

    정보공학 방법론

    정의 및 개념

    데이터 중심 방법론

    1980년대 자료 구조 중심 방법론

    대표 방법론 : 프로토타입, 정보공학 방법론

    특징

    데이터 중심의 분석과 설계 진행

    프로젝트를 관리 가능한 단위로 분할, 정복

    적극적인 사용자 참여 유도

    정보 시스템 개발의 자동화를 지향

    원리 및 구성 요소

    • 업무 시스템 설계
    • 데이터 흐름도
    • 결정 트리
    • 액션 다이어그램
    • 자료 구조 다이어그램

    단계별 산출물

    계획 : 도메인 분석서, 프로젝트 계획서

    분석 : E-R 다이어그램, 기능 차트, Event 모델

    설계 : 애플리케이션 구조도, 프로그램 사양서, Table 정의서, 목록

    기술 설계 및 구축

    데이터 사용 분석

    물리적 데이터베이스 설계

    분산 분석

    정보공학의 목적

    정보공학 방법론 수행 단계

    %E1%84%8C%E1%85%A5%E1%86%BC%E1%84%87%E1%85%A9%E1%84%89%E1%85%B5%E1%84%89%E1%85%B3%E1%84%90%E1%85%A6%E1%86%B7%20%E1%84%80%E1%85%AE%E1%84%8E%E1%85%AE%E1%86%A8%20%E1%84%80%E1%85%AA%E1%86%AB%E1%84%85%E1%85%B5%20c893307a9c854849b0b0bb2ba8847af0/Untitled%207.png

    객체지향 방법론

    정의 및 개념

    요구분석, 설계, 구현, 시험 등의 소프트웨어 생명주기에 객체지향 개념을 접목해 일관된 모델을 가지고 소프트웨어를 개발하는 방법론

    객체, 클래스 및 이들 간의 관계를 식별하여 실제 모델로 변환하는 방법론

    특징

    • 모형의 적합성
    • 모형의 일관성
    • 모형의 추적성
    • 고도의 모듈화
    • 상속에 의한 재사용

    장단점

    장점 : 자연스럽고 유연하며, 재사용이 용이하다.

    단점 : 기본적 SW 기술이 필요하며, 실질적인 재사용이 힘들다.

    원리

    업무 요건 정의

    1. 요구사항 수집
    2. 업무 요건 정의

    객체 지향 분석

    1. 객체 모델링
    2. 동적 모델링
    3. 기능 모델링

    객체 지향 설계

    1. 시스템 설계
    2. 객체 설계
    3. 구현

    테스트 / 배포

    1. 테스트
    2. 패키지
    3. 프로젝트 평가

    단계별 산출물

    계획 : 비즈니스 프로세스, 컨셉 모델, 프로젝트 계획서

    분석 : 유스케이스 다이어그램, 시퀀스 다이어그램, 클래스 다이어그램

    설계 : 시퀀스 다이어그램, 클래스 다이어그램, 컴포넌트 다이어그램, 배포 다이어그램

    객체지향 방법론의 종류 및 특징

    • OOSE : 유스케이스에 의한 접근방식. 유스케이스를 모든 모델의 근간으로 활용
    • OMT : 객체지향 분석, 시스템 설계, 오브젝트 설계, 구현의 4단게로 구성
    • OOD : 설계 문서화를 강조하여 다이어그램 중심으로 개발하는 방법론

    컴포넌트 기반 방법론

    정의 및 개념

    재사용 가능한 컴포넌트들의 개발 또는 컴포넌트들을 조합하여 애플리케이션 개발 생산성과 품질을 높이고 시스템 유지보수 비용을 최소화 할 수 있는 개발 방법론

    절차

    1. 개발 준비
    2. 분석 단계
    3. 설계 단계
    4. 구현 단계
    5. 테스트 단계
    6. 전개 단계
    7. 인도 단계

    특징

    • 객체 개발 방법론의 진화된 형태
    • 인터페이스를 중시
    • 컴포넌트 기반, 재사용성 중시, 반복과 통합 중시
    • 생산성
    • 변경 용이성
    • 재사용성
    • 고품질

    장단점

    장점 : 생산성, 품질, 비용, 위험개선

    단점 : 컴포넌트 유통환경 개선 필요, 컴포넌트 평가, 인증 환경 미흡

    단계별 산출물

    계획 : 비즈니스 프로세스, 컨셉 모델, 프로젝트 모델

    분석 : 유스케이스 다이어그램, 컴포넌트 다이어그램, 재사용 계획서

    설계 : 시퀀스 다이어그램, 클래스 다이어그램, 컴포넌트 다이어그램

    분류

    요소 컴포넌트 : 더 이상 나누어 질 수 없는 최소단위의 컴포넌트

    기능 컴포넌트 : 하나 이상의 요소 컴포넌트가 결합하여 하나의 기능 구현

    서비스 컴포넌트 : 하나의 사용자 서비스를 수행하는 컴포넌트

    애플리케이션 컴포넌트 : 여러 서비스를 수행하는 시스템 컴포넌트

    소프트웨어 구조 설계 원리

    소프트웨어 구조 설계 원리

    설계 원리의 정의

    시스템 개발 조건이나 운영 환경 조건의 제약 안에서 가능한 여러 설계 중에서 최적의 설계안을 발견하는 것

    설계 평가 특성

    • 단순성
    • 효율성
    • 분할, 계층화
    • 추상화
    • 모듈화

    소프트웨어 설계의 중심이 되는 원리

    추상화

    • 기능 추상화
    • 자료 추상화
    • 제어 추상화

    정보 은닉

    인터페이스가 모듈 안의 구체적 사항을 최소한으로 반영

    모듈 단위의 수정, 시험, 유지보수에 큰 장점

    단게적 분해

    문제를 기본 단위로 분해

    독립된 문제로 구별

    점증적인 구체화 작업

    테일러링 기준

    테일러링 정의

    프로젝트 상황 특성에 맞도록 소프트웨어 개발 방법론의 절차, 기법, 산출물 등을 수정 및 보완하는 작업

    테일러링 고려사항

    %E1%84%8C%E1%85%A5%E1%86%BC%E1%84%87%E1%85%A9%E1%84%89%E1%85%B5%E1%84%89%E1%85%B3%E1%84%90%E1%85%A6%E1%86%B7%20%E1%84%80%E1%85%AE%E1%84%8E%E1%85%AE%E1%86%A8%20%E1%84%80%E1%85%AA%E1%86%AB%E1%84%85%E1%85%B5%20c893307a9c854849b0b0bb2ba8847af0/Untitled%208.png

    테일러링 기법

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

    테일러링을 위한 품질 관리

    ISO 12207 표준

    소프트웨어 생명주기 프로세스

    소프트웨어 이해관계자들이 각자의 입장에서 수행해야 할 일을 정의하고 지속적으로 개선하기 위한 활동

    프로세스 구성

    • 기본 공정 프로세스
    • 지원 공정 프로세스
    • 조직 공정 프로세스

    CMMI 모델

    조직의 개발 프로세스 역량 성숙도를 평가

    프로세스 영역

    • 프로세스 관리 영역
    • 프로젝트 관리 영역
    • 엔지니어링 영역
    • 지원 영역

    프로젝트 성숙도

    • 초기
    • 관리
    • 정의
    • 정량적 관리
    • 최적화

    SPICE 모델

    소프트웨어 프로세스 평가를 위한 국제 표준을 제정하는 프로젝트

    SPICE의 목적

    개발 기관이 프로세스 개선을 위해 스스로 평가

    기관에서 정한 요구조건을 만족하는지 개발 조직 스스로 평가

    계약을 맺기 위해 수탁 기관의 프로세스를 평가

    프로세스 수행 능력 6단계

    • 불안정 단계
    • 관리 단계
    • 확립 단계
    • 예측 단계
    • 최적화 단계

    프로세스 범주

    • 고객-공급자 프로세스
    • 공학 프로세스
    • 지원 프로세스
    • 관리 프로세스
    • 조직 프로세스

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

    프레임워크의 개념

    소프트웨어 애플리케이션, 솔루션의 개발을 수월하게 하기 위해 소프트웨어의 구체적 기능, 설계, 구현을 재사용할 수 있도록 협업화 된 형태로 제공하는 소프트웨어 환경

    소프트웨어 개발 방법론 프레임워크

    %E1%84%8C%E1%85%A5%E1%86%BC%E1%84%87%E1%85%A9%E1%84%89%E1%85%B5%E1%84%89%E1%85%B3%E1%84%90%E1%85%A6%E1%86%B7%20%E1%84%80%E1%85%AE%E1%84%8E%E1%85%AE%E1%86%A8%20%E1%84%80%E1%85%AA%E1%86%AB%E1%84%85%E1%85%B5%20c893307a9c854849b0b0bb2ba8847af0/Untitled%209.png

    프레임워크의 특징

    애플리케이션 구축시 개발 환경들의 공통적인 부분을 제공함으로써 개발 시간, 인력 등의 비용을 절감할 수 있다.

    특정 개념들의 추상화를 제공하는 여러 클래스와 컴포넌트로 구성되며, 컴포넌트의 재사용이 가능하다.

    프레임워크의 종류

    • 스프링 프레임워크 : JAVA
    • 스트럿츠 프레임워크 : JSP
    • 전자정부 프레임워크 : Spring
    • 앵귤러 JS : JS
    • 닷넷 프레임워크 : C#
    • 장고 프레임워크 : Python

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

    네트워크 구축 관리

    IT 신기술 및 네트워크 장비 트렌드 정보

    스마트 공간

    인간과 기술 시스템이 더욱 개방, 연결, 조율되고, 지능적인 생태계에서 상호작용하는 물리적, 디지털 환경

    IOT

    각종 사물에 센서와 통신 기능을 내장하여 인터넷에 연결하는 기술

    자율 사물

    인간이 수행하던 기능들을 자동화하는 데 AI를 활용한 실제 디바이스

    클라우드 컴퓨팅

    집적 공유된 정보통신기기, 정보통신설비, 소프트웨어 등 정보통신자원을 이용자의 요구, 수요 변화에 따라 신축적으로 이용할 수 있도록 하는 정보처리체계

    분산형 클라우드

    퍼블릭 클라우드 서비스가 다양한 장소에 배포되는 것

    5G

    방대한 데이터를 아주 빠르게 전송하고 실시간으로 모든 것을 연결하는 4차 산업혁명의 핵심 인프라

    매시 네트워크

    각각의 노드가 네트워크에 대해 데이터를 릴레이션하는 네트워크 토폴로지

    SDN

    소프트웨어 프로그래밍을 통해 네트워크 경로 설정, 제어 및 복잡한 운용관리를 편리하게 처리할 수 있는 차세대 네트워킹 기술

    RFID

    주파수를 이용해 ID를 식별하는 방식

    NFC

    근거리 무선 통신

    USN

    필요한 모든 곳에 전자 태그를 부착하고 이를 통해 사물의 인식정보, 주변 환경정보를 탐지하여 실시간으로 네트워크에 연결해 정보를 관리하는 것

    SON

    주변 상황에 자동으로 적응하여 스스로 망을 구성하는 네트워크

    저전력 블루투스 기술

    저전력 기능과 쉬운 상호연결성을 모두 가진 통신 기술

    에지 컴퓨팅

    다양한 단말 기기에서 발생하는 데이터를 클라우드와 같은 중앙 집중식 데이터센터로 보내지 않고 데이터가 발생하는 현장, 근거리에서 실시간 처리하는 방식

    네트워크 장비 라우터, 백본 스위치 등

    네트워크 구축 기술

    • LAN
    • MAN
    • WAN

    네트워크 설치 구조 및 구축 환경 파악

    버스형 구조

    하나의 통신 회선에 여러 대의 컴퓨터가 멀티 포인트로 연결된 구조

    장단점

    장점

    간단한 구조로 설치가 용이하고, 비용이 적게 든다.

    통신 회선에 컴퓨터 추가, 삭제가 쉽다.

    단점

    무분별한 컴퓨터 추가시 통신 성능 저하

    통신 회선의 특정 부분에 고장이 나면 전체 네트워크에 영향을 미침

    트리형 구조

    버스형 토폴로지의 확장된 형태로 적절한 분기 장치를 사용해 링크를 덧붙여 나갈 수 있는 구조의 토폴로지

    장단점

    장점

    허브만 준비되어 있다면 많은 단말 노드들을 쉽게 연결할 수 있다.

    중앙의 한 곳이 고장 나더라도 하부의 시스템은 운영될 수 있다.

    단점

    허브 고장 발생시 연결된 단말 노드는 통신이 제한됨

    링형 구조

    컴퓨터 등 단말 노드가 양쪽의 컴퓨터와 점 대 점으로 연결되어 순환형으로 구성된 방식

    이중 토큰링 방식

    데이터를 시계 방향과 반시계 방향의 두 고리로 전달함으로써 링형 토폴로지의 취약성을 극복할 수 있다.

    장단점

    장점

    통신 회선에 단말 노드 추가, 삭제 등의 네트워크 재구성이 용이

    단점

    링의 어느 한 부분에 문제가 발생하면 전체 네트워크에 영향을 미친다.

    성형 구조

    각 단말 노드가 허브라는 네트워크 장비에 점 대 점으로 연결되어 있는 구성 형태

    장단점

    장점

    소규모의 네트워크 설치 및 재구성이 간편하다.

    단점

    중앙 허브 고장시 전체 네트워크에 영향을 미친다.

    매시형 구조

    네트워크상의 모든 컴퓨터가 연결되도록 한 형태의 토폴로지

    장단점

    장점

    어떠한 경우에도 네트워크가 동작한다.

    회선 오류 발생시에도 두 장치에만 영향을 미친다.

    단점

    비용이 많이 들고 설치 및 재연결이 까다롭다.

    네트워크 장비 유형

    스위칭, 라우팅 장비

    스위치

    OSI 2계층에서 사용한다.

    네트워크 내의 패킷 전달을 담당한다.

    라우터

    OSI 3계층에서 사용한다.

    스위치를 서로 연결하여 네트워크 간 트래픽의 최적 라우팅 경로를 설정하고, 결정된 경로를 따라 트래픽을 전달한다.

    광전송 장비

    네트워크의 스위칭 노드를 묶어주는 시스템

    액세스 장비

    최종 사용자와 공중 네트워크를 연결해 주는 시스템

    액세스 망 관련 기술

    스위치 방식 : 이더넷 스위치로만 구성

    PON 방식 : 광선로를 공유하여 사용

    네트워크 구축 장비를 이용한 망 구축

    허브나 스위치에 여러 대의 PC를 연결하여 하나의 이더넷 랜 구축

    스위치의 각 포트는 하나의 LAN 세그먼트 구축 가능

    라우터의 각 포트는 독립적인 네트워크를 구축

    스위치와 라우터의 브로드캐스팅 데이터 처리 방식

    스위치 : 모든 포트로 데이터 전달

    라우터 : 모든 네트워크로 전달되는 위험성 때문에 데이터 전달은 무조건 차단

    네트워크 기술 요소

    TCP/IP 프로토콜

    TCP

    연결 지향적인 프로토콜로 컴퓨터 간에 정보를 교환하기 위해 우선 연결부터 수립해야 한다.

    UDP

    별도의 연결절차 없이 일방적으로 정보를 주거나 받는 프로토콜

    네트워크 구축 장비

    허브

    단순 신호를 전달

    1계층 기능을 수행

    라우터

    각각의 독립된 네트워크를 연결하는 장치로 전달받은 패킷은 목적지 주소에 따라 적절한 경로로 전송

    3계층 기능을 수행

    라우터의 경로 결정 방식

    • 정적 라우팅
    • 동적 라우팅

    스위치

    데이터 필터링 기능 제공

    2계층 기능 수행

    스위치의 동작 원리

    러닝

    MAC Address를 자동으로 학습하여 테이블에 저장

    플러딩

    목적지를 모르는 프레임이 도착하면 도착한 포트를 제외한 모든 포트로 해당 프레임을 전송

    포워딩, 필터링

    MAC Address Table을 참조하여 프레임 전송

    목적지가 아닌 포트들로는 해당 프레임을 전송하지 않음

    스위치의 종류

    • L2 스위치
    • 스위치 허브
    • L3 스위치
    • 라우팅 기능이 추가된 L2 스위치
    • L4 스위치여러 IP 주소를 하나의 가상 IP로 지정하여 트래픽을 라운드로빈 방식으로 분해
    • 부하 분산 기능이 추가된 L3 스위치
    • L7 스위치IP, 포트번호 이외에도 URL, 쿠키, 플레이로드 정보들을 이용하여 부하 분담
    • 부하 분산 기능이 있는 L3 스위치

    소프트웨어 구축 관리

    IT 신기술 및 소프트웨어 개발 트렌드 정보

    인간 증강

    기술이 인간 경험의 필수적인 부분으로서 어떻게 인간의 인식과 실체에 향상점을 제공할 수 있는지를 탐구

    초자동화

    다수의 머신러닝, 패키징된 소프트웨어, 자동화 툴을 결합시켜 업무를 수행하는 것

    디지털 트윈

    현실 세계에 존재하는 대상이나 시스템의 디지털 버전

    그레이웨어

    정상 소프트웨어와 바이러스 소프트웨어의 중간에 속한다.

    시맨틱 웹

    컴퓨터가 이해할 수 있는 웹

    서비스 지향 아키텍처

    기업의 정보 시스템을 공유와 재사용이 가능한 서비스 단위나 컴포넌트 중심으로 구축되는 정보 기술 아키텍처

    리치 인터넷 애플리케이션

    데스크톱 환경처럼 응답 속도가 빠르고 사용하기 쉬운 기능과 특징을 제공하는 웹 제작 기술

    소프트웨어 개발 보안 정책

    보안 정책 개념

    SW 개발 생명주기의 각 단계별로 수행하는 일련의 보안 활동을 통해 안전한 SW를 개발, 운영하기 위한 목적으로 적용하는 개발체계

    소프트웨어 개발 프로세스별 보안 활동

    1. 요구사항 분석 단계
    2. 요구사항 중 보안 항목 요구사항을 식별하는 보안 활동을 추가한다.
    3. 설계 단계
    4. 개발 보안 가이드가 제시하는 작업을 기존 개발 프로세스에 추가해 진행한다.
    5. 구현 단계
    6. 표준코딩정의서 또는 소프트웨어 개발 보안 가이드를 모든 개발자가 준수하여 개발
    7. 테스트 단계
    8. 설계 단계에서 수행된 위협 모델링을 통해 도출된 위협들이 구현 단계에서 해당 취약점들이 없는 애플리케이션으로 개발되었는지를 동적 분석 도구나 모의 침투 테스트를 통해 검증
    9. 유지보수 단계
    10. 각 개발단계에서 안전한 소프트웨어를 만들기 위해 노력하였음에도 발생될 수 있는 보안 사고에 대한 관리, 사고 대응, 패치 관리 병행

    소프트웨어 개발 역할별 보안 활동

    프로젝트 관리자

    • 팀 구성원들에게 응용 프로그램 보안 전략 공표
    • 조직의 상태 모니터링

    요구사항 분석가

    • 아키텍트가 고려해야 할 여러가지 보안 관련 비즈니스 요구사항을 자세히 설명할 수 있어야 한다.

    아키텍트

    • 명백한 보안 오류가 발생하지 않도록 충분히 보안기술 문제를 이해할 수 있어야 한다.

    설계자

    • 특정 기술이 보안 요구사항을 만족하는지 확인하고 그 기술이 적절히 사용될 수 있도록 방법을 파악해야 한다.
    • 애플리케이션 보안 노력에 대한 품질측정을 지원해야 한다.

    구현 개발자

    • 시큐어 코딩 표준을 준수하여 개발하여야 한다.

    테스트 분석가

    • 요구사항과 구현결과를 반복적으로 확인해야 한다.

    보안 감사자

    • 프로젝트의 현재 상태의 보안을 보장한다.
    • 프로젝트의 전 단계에서 활동해야 한다.

    관련 제도 및 법규정

    개인정보보호 관련 법규

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

    특정 IT 기술 관련 규정

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

    하드웨어 구축 관리

    IT 신기술 및 서버 장비 트렌드 정보

    하드웨어 신기술

    4D 프린팅

    미리 설계된 시간이나 임의 환경 조건이 충족되면 스스로 모양을 변경, 제조하여 새로운 형태로 바뀌는 제품을 3D 프린팅하는 기술

    고가용성

    바람직한 정보로 긴 시간동안 지속적으로 운영이 가능한 시스템이나 컴포넌트

    패블릿

    5인치 이상의 대화면 스마트폰

    멤리스터

    메모리와 레지스터의 합성어, 전류의 방향 크기 등 기존의 상태를 기억하는 소자

    Secure OS

    컴퓨터 운영체제의 커널에 보안 기능을 추가한 것

    신 클라이언트

    하드디스크나 주변 장치 없이 기본적인 메모리만 갖추고 서버와 네트워크로 운용되는 PC

    N-Screen

    하나의 멀티미디어 콘텐츠를 PC, TV, 핸드폰 등 여러 개의 단말기에서 자유롭게 이용할 수 있는 기술

    인프라 시스템 구성 요소

    인프라 아키텍처

    IT 정보들을 유지 관리하는 기반 시설을 어떤 구조로 구성하였는가를 의미한다.

    중앙집중형 아키텍처

    메인 프레임과 같은 대형 컴퓨터를 중앙에 두고 모든 요구를 처리하는 방식

    분할형 아키텍처

    2계층 모델

    클라이언트는 사용자의 인터페이스를 제공하고 서버는 데이터 조회 및 저장을 처리

    3계층 모델

    클라이언트와 서버 사이에 애플리케이션 서버를 두고 미들웨어를 이용해 서로를 연결함으로써 부하를 분산하도록 구성

    인프라 시스템 기술 동향

    서버 기술 동향

    컨버지드 인프라 : 서버, 스토리지, 네트워크 인프라를 조합해 이를 프로비저닝하고 관리할 수 있는 소프트웨어와 함께 판매하는 것

    SDI

    SDN에서 시작한 소프트웨어 정의를 인프라에 접목한 기술

    서버 장비 운용

    인프라 기술의 기초 지식 및 서버 장비 운영 요소

    서버 탑재 SW 유형

    • OS
    • DBMS
    • 보안 솔루션
    • 클라우드 컴퓨팅 솔루션
    • WEB 운영

    스토리지

    DAS

    서버에 직접 연결되는 장치로 확장성은 없다.

    NAS

    장비와 소프트웨어가 결합된 형태로 제공

    대표적인 소프트웨어

    • NAS SAMBA : OS2, Windows, UNIX에서 사용 가능한 NAS 프로그램
    • NAS NFS : 썬 마이크로시스템에서 개발한 프로토콜

    SAN

    여러 대의 컴퓨터가 하나의 저장소 풀에 접근하도록 구성하는 방식

    파이버 채널 사용

    iSCSI

    TCP/IP 네트워크 통신 기반으로 동작되는 SCSI 장치

    Ethernet 사용

    인프라 구성 요소

    전통적인 인프라 구성

    • 자체 IDC
    • IDC
    • 데디케이트 서비스
    • 쉐어드 서비스

    가상화 기반의 인프라 구성

    하나의 서버에서 여러 개의 서비스를 독립적인 가상 머신을 통해 구현하는 것

    가상화 구현 방법

    • IaaSEx) EC2
    • 사용자에게 PaaS보다 더 많은 권한 할당
    • PaaSEx) Herocu
    • 사용자는 관리자가 제공하는 가상 머신 사용
    • SaaSEx) Dropbox
    • 사용자는 플랫폼이나 서비스 구성에 대해 고려할 필요 없이 바로 서비스를 사용할 수 있다.

    컨테이너 기반의 인프라 구성

    소프트웨어적으로 소프트웨어 격리

    운영체제의 역할

    커널

    운영체제의 다른 모든 부분에 여러가지 기본적인 서비스 제공

    자원을 효율적으로 관리하는 역할 수행

    운영체제의 기능

    운영체제 동작 모드

    • 커널 공간에서 수행되는 프로그램
    • 하드웨어를 통제하기 위한 프로그램
    • 유저 공간에서 수행되는 프로그램
    • 사용자에게 편리한 커널의 기능을 사용할 수 있도록 제공하는 프로그램

    운영체제의 기능적 모듈

    • 프로세스 관리 기능
    • 주기억 장치 관리 기능
    • 파일시스템 관리 기능
    • 입출력 장치 관리 기능

    펌웨어

    소프트웨어와 하드웨어의 중간에 해당하는 것, 소프트웨어를 하드웨어화한 것

    운영체제의 구조

    커널 구조

    • 단일체 구조
    • 하나의 거대한 프로그램 덩어리로 필요할 때 다른 프로시저를 호출할 수 있는 여러 프로시저로 구성
    • 계층적 구조최상위 계층 : 사용자 인터페이스
    • 모듈화를 통해 각 계층은 바로 아래 계층에서 제공하는 기능과 서비스만을 제공한다.
    • 최하위 계층 : 하드웨어

    클라이언트/서버 모델

    서버용 운영체제

    • 유닉스 계열
    • 리눅스 계열

    클라이언트용 운영체제

    • 윈도우 계열
    • 애플 계열

    클라이언트/서버 시스템의 일반적 모델

    메시지 전송 모델 : 운영체제에서 제공하는 통신 기능을 이용하여 프로세스 간 정보 교환을 수행

    공유 기억장치 모델 : 하드웨어적인 공유 기억 공간을 통해서 상호 정보를 교환

    리눅스

    배포판

    %E1%84%8C%E1%85%A5%E1%86%BC%E1%84%87%E1%85%A9%E1%84%89%E1%85%B5%E1%84%89%E1%85%B3%E1%84%90%E1%85%A6%E1%86%B7%20%E1%84%80%E1%85%AE%E1%84%8E%E1%85%AE%E1%86%A8%20%E1%84%80%E1%85%AA%E1%86%AB%E1%84%85%E1%85%B5%20c893307a9c854849b0b0bb2ba8847af0/linux-history.png

    리눅스의 구조

    • 응용 프로그램
    • 커널
    • 하드웨어

    리눅스 서버 사용자 관리

    그룹 관리

    사용자를 효과적으로 관리하기 위해 일반 사용자들을 그룹으로 묶어 관리

    리눅스 서버 파일 시스템 관리

    파일 시스템의 의미

    컴퓨터에서 파일이나 자료를 쉽게 발견하고 접근할 수 있도록 보관, 조직하는 체제

    대표적인 파일 시스템의 종류

    • ext3서브 디렉터리 32,000개까지 가능
    • 2TB ~ 16TB
    • ext4서브 디렉터리 64,000개까지 가능
    • 16TB ~ 1EB
    • xfs
    • SGI에서 개발한 64비트 고성능 저널링 파일 시스템
    • btrfs
    • 기업의 확장성 문제를 해결하기 위한 차세대 리눅스 파일 시스템

    리눅스 서버 시스템 관리

    부트로더 : 운영체제의 부팅을 제어하는 프로그램

    윈도우

    윈도우 서버를 사용하는 주요 환경

    • 수 많은 클라이언트를 관리하는 경우
    • 회사 내의 인증 체계 및 자원을 통합해서 관리하는 경우
    • 수많은 접속자를 처리하는 경우

    액티브 디렉터리

    윈도우 서버에서 사용자, 그룹 등을 포함한 여러 관리 정보들을 쉽게 찾을 수 있도록 모아두는 전반적인 체계

    액티브 디렉터리의 장점

    • 여러 컴퓨터를 하나로 묶어 통합 관리할 수 있다.
    • 사용자 계정에 대한 인증 관리를 중앙에서 할 수 있어 보안상 안전하다.
    • 그룹 정책을 이용하여 각 컴퓨터를 중앙에서 관리할 수 있다.

    모니터링 도구

    서버에 예상하지 못한 문제가 발생했을 때 이를 정확하게 파악하기 위한 모든 행동

    • 리소스 모니터
    • 안정성 모니터
    • 성능 모니터
    • 기타
      • 이벤트 뷰어
      • 튜닝
      • 작업 관리자
      • 프로세스 카운터
      • 메모리 카운터
      • 디스크 카운터
      • 윈도우 로그

    RAID와 디스크

    RAID

    디스크를 묶어서 사용하는 표준 기술

    • 스팬 볼륨
    • 파일을 직렬 저장
    • 스트라이프 볼륨 (RAID-0)
    • 파일을 병렬 저장
    • 미러 볼륨 (RAID-1)
    • 두 개의 디스크에 동일한 내용을 기록
    • RAID-5 볼륨하나의 디스크 장애 발생시에도 데이터가 손실되지 않는다.
    • 여러 개의 디스크를 묶어 하나의 파티션으로 사용

    디스크

    디스크 타입

    • IDE : 과거 일반 컴퓨터에서 사용되던 디스크 컨트롤러
    • SCSI : 서버나 워크스테이션 환경에서 사용
    • SATA : 개인용 컴퓨터, 서버 환경에서 사용

    MBR과 GPT

    %E1%84%8C%E1%85%A5%E1%86%BC%E1%84%87%E1%85%A9%E1%84%89%E1%85%B5%E1%84%89%E1%85%B3%E1%84%90%E1%85%A6%E1%86%B7%20%E1%84%80%E1%85%AE%E1%84%8E%E1%85%AE%E1%86%A8%20%E1%84%80%E1%85%AA%E1%86%AB%E1%84%85%E1%85%B5%20c893307a9c854849b0b0bb2ba8847af0/Untitled%2010.png

    디스크 분류

    • 기본 디스크디스크 오류 발생시 복구를 지원하지 않는다.
    • 파티션으로 구분
    • 동적 디스크오류 발생시 복구를 지원하는 디스크 구조를 만들 수 있다.
    • 볼륨으로 구분

    데이터 관리

    파일압축 과정

    • 아카이빙 : 여러 파일과 폴더를 묶어 하나의 파일을 만드는 작업
    • 컴프레싱 : 여러 파일과 폴더를 묶은 후 용량을 줄여 저장하는 방식

    윈도우 서버 파일 압축 특징

    폴더를 한 번 압축 해 놓으면 이후 폴더에 생성되는 모든 파일과 디렉터리는 생성 시점에 자동 압축

    윈도우 서버 파일 암호화 특징

    폴더를 암호화 하면 해당 폴더에서 만들어지는 모든 파일과 하위 폴더에 자동으로 암호화 설정

    사용자가 파일을 읽는 동안에는 자동으로 암호화가 해제되고 파일 사용을 마치면 다시 암호화

    암호화된 파일은 암호화한 사용자만 사용할 수 있다.

    하이퍼브이 서버

    윈도우 서버 운영체제에서 가상화 기능을 구현하는 하이퍼바이저

    DB 구축 관리

    IT 신기술 및 데이터베이스 기술 트렌드

    단순화

    • 클라우드 컴퓨팅
    • 모바일 인터넷
    • 새로운 사용자 인터페이스
    • 강력한 도구와 단순한 표준

    지능화

    데이터를 통합, 분석하고 시스템 및 망을 효율적으로 관리하는 모든 서비스

    융합화

    IT 신기술 용어

    빅데이터

    빅데이터 처리 기술

    %E1%84%8C%E1%85%A5%E1%86%BC%E1%84%87%E1%85%A9%E1%84%89%E1%85%B5%E1%84%89%E1%85%B3%E1%84%90%E1%85%A6%E1%86%B7%20%E1%84%80%E1%85%AE%E1%84%8E%E1%85%AE%E1%86%A8%20%E1%84%80%E1%85%AA%E1%86%AB%E1%84%85%E1%85%B5%20c893307a9c854849b0b0bb2ba8847af0/Untitled%2011.png

    디지털 아카이빙

    인터넷에 디지털로 이루어진 거대한 문서 저장고

    브로드 데이터

    전에 사용하지 않았거나 몰랐던 새로운 데이터, 기존 데이터에 새로운 가치를 더하는 데이터

    DB 기술 트렌드 정보

    DB 기술 트렌드

    • GPU 컴퓨팅
    • 비휘발성 메모리
    • 스케일 아웃 SQL
    • 공간 정보 데이터베이스
    • 그래프 데이터베이스
    • 클라우드 데이터베이스
    • 인공지능
    • 블록체인

    데이터베이스 구축 관리

    DB 시스템

    DB 시스템의 구성 요소

    • DB
    • DBMS
    • 데이터 언어
    • DB 사용자
    • DB 컴퓨터

    IT 프로젝트 DB 구축 공정

    DB 구축 공정별 업무 내용

    1. 준비 / 계획
      1. 현황 조사
      2. 구축 대상 선정
      3. 계획 수립
      4. 실행 계획
      5. 자료 준비
      6. 자료 반입
    2. 구축
    3. HTML / XML 변환
    4. 검수
    5. 품질

    IT 프로젝트 DB 구축 일정 관리 개념

    IT 프로젝트를 납부 기간 내에 완료하는 데 필요한 DB 구축 계획 수립, DB 구축 진행 등을 수행하는 관리 활동

    DB 구축 일정 통제 방안

    • 크래싱 기법 : DB 구축 프로젝트에 투입되는 인적, 물적 자원과 비용을 더 투입해 일정을 단축시키는 기법
    • 중첩 실행 기법 : 순차적으로 진행되는 작업 활동의 연관 관계를 동시에 병렬로 진행함으로써 일정을 단축하는 기법

    DB 구축 단계별 산출물 유형

    DB 구축 단계별 산출물 현황

    분석 단계

    • 사용자 요구사항 정의서
    • 유스케이스 명세서
    • 요구사항 추적표

    설계 단계

    • 총괄시험계획서
    • 시스템시험 / 통합시험 시나리오
    • 엔티티 관계모형 기술서
    • 데이터베이스 설명서
    • 단위테스트케이스
    • 데이터 전환 및 초기데이터 설계서

    구현 단계

    • 단위시험결과서
    • DB 생성스크립트

    시험 단계

    • 통합 시험, 시스템 시험, 시스템 설치 결과서
    • 사용자 / 운영자 지침서
    • 인수시험 시나리오
    • 인수시험 결과서

    데이터베이스 관리 기능

    데이터베이스 관리 시스템

    데이터베이스를 생성 및 관리해 주는 기능을 제공하는 소프트웨어 패키지, 시스템

    데이터베이스 관리 시스템의 필수 기능 및 효과

    • 데이터 정의 기능
    • 데이터 조작 기능
    • 데이터 제어 기능

    트랜잭션의 특성을 지원하는 DBMS의 기능

    %E1%84%8C%E1%85%A5%E1%86%BC%E1%84%87%E1%85%A9%E1%84%89%E1%85%B5%E1%84%89%E1%85%B3%E1%84%90%E1%85%A6%E1%86%B7%20%E1%84%80%E1%85%AE%E1%84%8E%E1%85%AE%E1%86%A8%20%E1%84%80%E1%85%AA%E1%86%AB%E1%84%85%E1%85%B5%20c893307a9c854849b0b0bb2ba8847af0/Untitled%2012.png

    회복

    장애

    • 트랜잭션 장애
    • 시스템 장애
    • 미디어 장애

    회복

    회복 방법

    • 덤프
    • 로그

    로그 파일을 이용한 회복

    트랜잭션이 종료된 경우에는 종료 확정을 위해 REDO를 수행하고 중단된 경우에는 UNDO를 수행한다.

    • REDO
    • UNDO

    병행제어 기능

    동시의 여러 개의 트랜잭션을 병행 수행할 때, 트랜잭션들이 DB의 일관성을 파괴하지 않도록 트랜잭션 간의 상호작용을 제어하는 것

    병행제어의 목적

    • DB의 공유도 최대화
    • 시스템 활용도 최대화
    • 응답 시간 최소화
    • 단위 시간당 트랜잭션 처리 건수 최대화
    • DB 일관성 유지

    병행제어가 없을 경우의 문제점

    갱신 분실

    같은 데이터를 공유하여 갱신할 때 갱신 결과의 일부가 사라지는 현상

    모순성

    동시에 같은 데이터를 갱신할 때, 데이터의 상호 불일치가 발생하는 현상

    연쇄 복귀

    트랜잭션중 하나에 문제가 생겨 Rollback되는 경우, 다른 트랜잭션들도 함께 Rollback되는 현상

    잠금

    하나의 트랜잭션이 사용중인 데이터를 다른 트랜잭션이 접근하지 못하게 하는 것

    DB 보안기능

    암호화 기법

    • 개인키 암호화 기법
    • 공개키 암호화 기법

    접근 통제 방법

    • 접근 통제
    • 인증된 사용자에게 허가된 범위 내에서 시스템 내부의 정보에 대해 접근을 허용하는 기술적 방법
    • 추론 통제
    • 간접적으로 노출된 데이터를 통해 다른 데이터를 추론하여 다른 데이터가 공개되는 것을 방지하는 것
    • 흐름 통제보안 등급이 높은 객체에서 낮은 객체로의 정보 흐름을 제어해야 한다.
    • 접근이 가능한 객체 간의 정보에 흐름을 조정하는 것

    데이터 표준화

    데이터 관리 필요성

    데이터 활용상의 문제점

    • 데이터의 중복, 조직, 업무 시스템별 데이터 불일치 발생
    • 데이터에 대한 의미 파악 지연으로 정보 제공의 적시성 결여
    • 데이터 통합의 어려움
    • 정보 시스템 변경 및 유지보수 곤란

    데이터 문제점의 원인

    • 동시다발적인 정보시스템 개발
    • 전사 데이터 관리 마인드 미형성
    • 전사 데이터 관리 인력 부재
    • 전사 데이터 표준 관리 도구 부재

    데이터 관리 개선방안

    • 데이터 표준화, 규격화를 위한 기본 방침 설정
    • 전사적인 정보 공유를 위해 유지되어야 할 공통 데이터 요소의 도출
    • 전사적인 데이터 요소 등록 및 관리체계 구축
    • 정보 시스템 개발 및 유지보수 시 승인된 데이터 요소를 활용함으로써 시스템 개발의 효율성 및 데이터 공유성 향상

    데이터 표준화 기대호과

    • 명칭의 통일로 인한 명확한 의사소통의 증대
    • 필요한 데이터의 소재 파악에 소요되는 시간 및 노력 감소
    • 일관된 데이터 형식 및 규칙의 적용으로 인한 데이터 품질 향상
    • 정보시스템 간 데이터 인터페이스 시 데이터 변환, 정제 비용 감소

    데이터 표준화 개념

    데이터 표준화 정의

    시스템별로 산재해 있는 데이터 정보 요소에 대한 명칭, 정의, 형식, 규칙에 대한 원칙을 수립하여 이를 전사적으로 적용하는 것

    데이터 명칭

    • 유일성 : 데이터 명칭은 해당 개념을 유일하게 구분해 주는 이름이어야 한다.
    • 업무적 관점의 보편성 : 데이터 명칭은 업무적 관점에서 보편적으로 인지되는 이름이어야 한다.
    • 의미 전달의 충분성 : 데이터 명칭은 그 이름만으로 데이터의 의미 및 범위가 파악될 수 있어야 한다.

    데이터 정의

    데이터 정의 시 고려사항

    사용자가 데이터의 의미를 가장 잘 이해할 수 있도록 업무 관점에서 범위와 자격 요건을 명시해야 한다.

    데이터 형식

    데이터 표현 형태의 정의를 통해 데이터 입력 오류와 통제 위험을 최소화하는 역할을 한다.

    데이터 규칙

    발생 가능한 데이터 값을 사전에 정의하는 것

    데이터의 입력 오류와 통제 위험을 최소화 하는 역할을 한다.

    데이터 규칙의 유형

    • 기본 값
    • 허용 값

    데이터 표준화 구성 요소

    전사적인 데이터 표준화를 추진하기 위해 수립해야 할 표준화 구성 요소

    데이터 표준

    일반적으로 데이터 표준으로 관리되는 대상에는 용어, 단어, 도메인, 코드가 있다.

    데이터 표준 관리 조직

    데이터 관리자 주요 역할

    • 데이터에 대한 정책과 표준 정의
    • 부서 간 데이터 구조 조율
    • 데이터 보안 관리
    • 데이터 모델 관리
    • 데이터의 효율적인 활용 방안 계획

    데이터 관리자 세부 역할

    • 전사 데이터 관리자 : 데이터 표준화에 대한 정책 결정
    • 업무 데이터 관리자 : 담당 업무 기능의 데이터 요구사항 반영을 위해 필요한 데이터 표준 정의
    • 업무 시스템 데이터 관리자 : 시스템 관리 목적의 데이터 요구사항을 위해 필요한 데이터 표준 정의

    데이터 표준화 절차

    데이터 표준화 절차별 활동

    • 데이터 표준화 요구사항 수집
      • 개별 시스템 데이터 표준 수집
      • 데이터 표준화 요구사항 수집
      • 표준화 현황 진단
    • 데이터 표준 정의
      • 표준화 원칙 정의
      • 데이터 표준 정의
    • 데이터 표준 확정
      • 데이터 표준 검토 및 확정
      • 데이터 표준 공표
    • 데이터 표준 관리
      • 데이터 표준 이행
      • 데이터 표준 관리 절차 수립

    소프트웨어 개발 보안 구축

    소프트웨어 개발 보안 설계

    Secure SDLC

    소프트웨어 개발 생명주기

    %E1%84%8C%E1%85%A5%E1%86%BC%E1%84%87%E1%85%A9%E1%84%89%E1%85%B5%E1%84%89%E1%85%B3%E1%84%90%E1%85%A6%E1%86%B7%20%E1%84%80%E1%85%AE%E1%84%8E%E1%85%AE%E1%86%A8%20%E1%84%80%E1%85%AA%E1%86%AB%E1%84%85%E1%85%B5%20c893307a9c854849b0b0bb2ba8847af0/Untitled%2013.png

    • 정의 단계
    • 무엇을 처리하는 소프트웨어를 개발할 것인지 정의하는 단계
    • 개발 단계
    • 어떻게에 초점을 두고 실제로 소프트웨어를 개발하는 단계
    • 유지보수 단계
    • 소프트웨어를 직접 운영하며, 변경에 초점을 두고 여러 환경 변화에 따라 소프트웨어를 적응, 유지하는 단계

    소프트웨어 개발 보안 적용 사례

    • MS-SDL
      %E1%84%8C%E1%85%A5%E1%86%BC%E1%84%87%E1%85%A9%E1%84%89%E1%85%B5%E1%84%89%E1%85%B3%E1%84%90%E1%85%A6%E1%86%B7%20%E1%84%80%E1%85%AE%E1%84%8E%E1%85%AE%E1%86%A8%20%E1%84%80%E1%85%AA%E1%86%AB%E1%84%85%E1%85%B5%20c893307a9c854849b0b0bb2ba8847af0.png
    • 마이크로소프트에서 보안 수준이 높고 안전한 소프트웨어를 개발하기 위해 자체 수립한 SDL 방법론
    • Seven Touchpoints소프트웨어 보안의 모범 사례를 개발 라이프사이클에 통합한 것
    • %E1%84%8C%E1%85%A5%E1%86%BC%E1%84%87%E1%85%A9%E1%84%89%E1%85%B5%E1%84%89%E1%85%B3%E1%84%90%E1%85%A6%E1%86%B7%20%E1%84%80%E1%85%AE%E1%84%8E%E1%85%AE%E1%86%A8%20%E1%84%80%E1%85%AA%E1%86%AB%E1%84%85%E1%85%B5%20c893307a9c854849b0b0bb2ba8847af0/_(1).png
    • 실무적으로 검증된 개발 보안 방법론 중 하나
    • CLASP
      %E1%84%8C%E1%85%A5%E1%86%BC%E1%84%87%E1%85%A9%E1%84%89%E1%85%B5%E1%84%89%E1%85%B3%E1%84%90%E1%85%A6%E1%86%B7%20%E1%84%80%E1%85%AE%E1%84%8E%E1%85%AE%E1%86%A8%20%E1%84%80%E1%85%AA%E1%86%AB%E1%84%85%E1%85%B5%20c893307a9c854849b0b0bb2ba8847af0/_(2).png
    • 소프트웨어 개발 생명주기 초기 단계에 보안 강화를 목적으로 하는 정형 프로세스

    세션 통제

    세션 통제

    이미 연결이 종료된 클라이언트의 정보가 삭제되지 않고 사용 가능한 상태로 방치되는 경우 침해 사고를 발생시킬 수 있으므로 인전한 세션 통제 정책이 적용되어야 한다.

    불충분한 세션 관리

    사용자 로그인시 일정한 패턴이 존재하는 세션 ID가 발급되거나, 세션 타임아웃을 너무 길게 설정했을 경우 공격자가 다른 사용자의 세션을 재사용하여 해당 사용자의 권한을 탈취할 수 있다.

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

    다중 스레드 환경에서 멤버 변수에 정보를 저장할 때 발생하는 취약점

    소프트웨어 개발 보안 구현

    소프트웨어 개발 보안 구현

    소프트웨어 개발 보안 구현을 위한 시큐어 코딩

    시큐어코딩의 목적

    • 보안 취약점, 결함 방지
    • 안전한 대고객 서비스 확대
    • 안정성 및 신뢰성 확보

    시큐어 코딩 적용 방안

    • 보안 정책의 수립
    • 소프트웨어 개발 보안을 위한 시큐어 코딩 가이드 작성
    • 시큐어 코딩 가이드 교육
    • 시큐어 코딩 자동화 도구

    보안성이 강화된 응용 프로그램 구현을 위한 일정 계획 수립

    조직의 개발 업무 현황을 수집하고 보안 등급으로 구분한다.

    보안 기능 강도와 보안 등급의 구분

    %E1%84%8C%E1%85%A5%E1%86%BC%E1%84%87%E1%85%A9%E1%84%89%E1%85%B5%E1%84%89%E1%85%B3%E1%84%90%E1%85%A6%E1%86%B7%20%E1%84%80%E1%85%AE%E1%84%8E%E1%85%AE%E1%86%A8%20%E1%84%80%E1%85%AA%E1%86%AB%E1%84%85%E1%85%B5%20c893307a9c854849b0b0bb2ba8847af0/Untitled%2014.png

    조직의 업무 현황 파악

    • 입력 데이터 검증 및 표현
    • 보안 기능
    • 시간 및 상태
    • 에러 처리
    • 코드 오류
    • 캡슐화
    • API 오용

    응용 프로그램 개발 환경 및 구현 계획 수립

    개발환경 구현

    • 개발용 시스템 접근 계정은 권한에 맞게 개발자별로 개별 부여하고 공용 계정 사용을 지양한다.
    • 개발 PC에 백신을 설치하고 불필요한 인터넷 접속을 차단한다.
    • 개발 PC에 항상 암호를 사용하고, 허가되지 않은 저장장치 사용을 차단한다.

    응용 프로그램 구현 게획

    • 신뢰성이 높은 개발 도구와 안전한 상용 소프트웨어를 사용해야 하며, 조직이 인가하지 않은 소프트웨어를 사용하지 않는다.
    • 개발 일정을 준수하여 기한 내에 응용 프로그램 보안 코딩을 한다.

    보안에 적용될 조직의 정책을 검토한다.

    보안 대상과 위협, 위협에 대한 대책, 보안 관련 소요 예산, 침해 시 영향 범위, 보안 사고 발생시 대응책을 사전에 계획한다.

    암호 알고리즘

    대칭키 암호화

    암호화키와 복호화키가 동일한 암호화 기법

    안전한 키 전달, 공유 방식이 필요하며, 대용량 데이터 암호화에 적합하다.

    대칭키 암호화 종류

    • 스트림 암호
    • 블록 암호

    공개키 암호화

    공개키, 개인키 두 개의 키를 사용해 암호화, 복호화를 수행한다.

    공개키 암호화 종류

    • Diffe Helllman
    • RSA
    • DSA
    • ECC

    대칭키 암호화와 공개키 암호화 방식의 차이점

    %E1%84%8C%E1%85%A5%E1%86%BC%E1%84%87%E1%85%A9%E1%84%89%E1%85%B5%E1%84%89%E1%85%B3%E1%84%90%E1%85%A6%E1%86%B7%20%E1%84%80%E1%85%AE%E1%84%8E%E1%85%AE%E1%86%A8%20%E1%84%80%E1%85%AA%E1%86%AB%E1%84%85%E1%85%B5%20c893307a9c854849b0b0bb2ba8847af0/Untitled%2015.png

    해시

    하나의 문자열을 이를 상징하는 더 짧은 길이의 값이나 키로 변환하는 것으로 단방향 암호화 방식이다.

    해시 알고리즘 종류

    • MD
    • SHA
    • RMD160
    • TIGER
    • HAVAL

    입력 데이터 검증 및 표현

    SQL 삽입

    검증되지 않은 외부 입력값이 SQL 쿼리 생성에 사용되어 악의적 쿼리가 실행될 수 있는 보안 약점

    경로 조작 및 자원 삽입

    검증되지 않은 외부 입력값이 시스템 자원 접근경로 또는 자원 제어에 사용되어 공격자가 입력값을 조작해 공격할 수 있는 보안 약점

    크로스 사이트 스크립트 (XSS)

    검증되지 않은 외부 입력값에 의해 사용자 브라우저에서 악의적인 스크립트가 실행될 수 있는 보안 약점

    운영체제 명령어 삽입

    검증되지 않은 외부 입력값이 운영체제 명령문 생성에 사용되어 악의적인 명령어가 실행될 수 있는 보안 약점

    위험한 형식 파일 업로드

    파일 형식에 대한 검증 없이 업로드를 허용하여 발생할 수 있는 보안약점

    신뢰되지 않는 URL 주소로 자동 접속 연결

    검증되지 않은 외부 입력값이 URL 링크 생성에 사용되어 악의적인 사이트로 자동 접속될 수 있는 보안 약점

    XQuery 삽입

    검증되지 않은 외부 입력값이 XQuery 쿼리 생성에 사용되어 악의적인 쿼리가 실행될 수 있는 보안 약점

    XPath 삽입

    검증되지 않은 외부 입력값이 XPath 쿼리 생성에 사용되어 악의적인 쿼리가 실행될 수 있는 보안 약점

    LDAP 삽입

    검증되지 않은 입력값이 LDAP 명령문 생성에 사용되어 악의적인 명령어가 실행될 수 있는 보안 약점

    크로스 사이트 요청 위조

    검증되지 않은 외부 입력값에 의해 브라우저에서 악의적 스크립트가 실행되어 공격자가 원하는 요청이 다른 사용자의 권한으로 서버로 전송되는 보안 약점

    HTTP 응답 분할

    검증되지 않은 외부 입력값이 HTTP 응답 헤더에 삽입되어 악의적인 코드가 실행될 수 있는 보안 약점

    정수형 오버플로우

    정수를 사용한 연산의 결과가 정수값의 범위를 넘는 경우, 프로그램이 예기치 않게 동작될 수 있는 보안약점

    보안기능 결정에 사용되는 부적절한 입력값

    검증되지 않은 입력값이 보안 결정에 사용되어 보안 메커니즘 우회 등을 야기할 수 있는 보안약점

    메모리 버퍼 오버플로우

    메모리 버퍼의 경게값을 넘어 메모리값을 읽거나 저장하여 예기치 않은결과를 발생시킬 수 있는 보안 약점

    포맷 스트링 삽입

    외부 입력값으로 포맷스트링을 제어할 수 있는 함수를 사용하여 발생할 수 있는 보안 약점

    보안 기능

    적절한 인증 없는 중요 기능 허용

    적절한 인증 없이 중요 정보를 열람, 수정할 수 있게 하는 보안 약점

    부적절한 인가

    적절한 접근 제어 없이 외부 입력값을 포함한 문자열로 중요 자원에 접근할 수 있는 보안 약점

    중요한 자원에 대한 잘못된 권한 설정

    중요 자원에 대한 적절한 접근 권한을 부여하지 않아 인가되지 않은 사용자에 의해 중요 정보가 노출, 수정되는 보안 약점

    취약한 암호화 알고리즘 사용

    중요 정보의 기밀성을 보장할 수 없는 취약한 알고리즘을 사용하여 정보가 노출될 수 있는 보안 약점

    중요 정보 평문 저장

    중요 정보 전송 시 암호화하지 않거나 안전한 통신 채널을 이용하지 않아 정보가 노출될 수 있는 보안 약점

    하드코드된 비밀번호

    소스코드 유출시 노출 우려 및 주기적 변경 등 수정이 용이하지 않은 보안 약점

    충분하지 않은 키 길이 사용

    데이터의 기밀성, 무결성 보장을 위해 사용되는 키의 길이가 충분하지 않아 기밀정보 누출, 무결성이 깨지는 보안 약점

    적절하지 않은 난수값 사용

    예측 가능한 난수 사용으로 공격자가 다음 숫자를 예상하여 시스템 공격이 가능한 보안 약점

    하드코드된 암호화 키

    소스코드 내에 암호화키가 하드코드되어 소스코드 유출 시 노출 우려 및 키 변경이 용이하지 않은 보안 약점

    취약한 비밀번호 허용

    비밀번호 조합규칙 미흡 및 길이가 충분하지 않아 노출될 수 있는 보안 약점

    사용자 하드디스크에 저장되는 쿠키를 통한 정보 노출

    쿠키를 사용자 하드디스크에 저장함으로써 개인정보 등 기밀 정보가 노출될 수 있는 보안 약점

    주석문 안에 포함된 시스템 주요 정보

    소스코드 내의 주석문에 인증정보 등 시스템 주요 정보가 포함되어 소스코드 유출 시 노출될 수 있는 보안 약점

    솔트 없이 일방향 해쉬함수 사용

    공격자가 솔트 없이 생성된 해시값을 얻게 된 경우, 미리 계산된 레인보우 테이블을 이용하여 원문을 찾을 수 있는 보안 약점

    무결성 검사 없는 코드 다운로드

    원격으로부터 소스코드 또는 실행 파일을 무결성 검사 없이 다운로드 받고 이를 실행하는 경우, 공격자가 악의적인 코드를 실행할 수 있는 보안 약점

    반복된 인증시도 제한기능 부재

    인증 시도의 수를 제한하지 않아 공격자가 무작위 인증시도를 통해 계정 접근 권한을 얻을 수 있는 보안 약점

    시간 및 상태

    검사지점과 사용지점

    멀티 프로세스 상에서 자원을 검사하는 시점과 사용하는 시점이 달라 발생하는 보안 약점

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

    종료 조건 없는 제어문 사용으로 반복문, 재귀함수가 무한히 반복되어 발생할 수 있는 보안 약점

    에러 처리

    오류 메세지를 통한 정보 노출오류 상황 대응 부재

    개발자가 생성한 오류 메시지에 시스템 내부 구조 등이 포함되어 민감한 정보가 노출될 수 있는 보안 약점

    오류 상황 대응 부재

    시스템에서 발생하는 오류 상황을 처리하지 않아 프로그램 실행정지 등 의도하지 않은 상황이 발생할 수 있는 보안 약점

    부적절한 예외처리

    예외에 대한 부적절한 처리로 인해 의도치 않은 상황이 발생할 수 있는 보안 약점

    코드 오류

    Null 포인터 역참조

    공격자가 의도적으로 Null 포인터 역참조를 발생시키는 경우, 그 결과 발생하는 예외 상황을 이용하여 추후의 공격을 계획하는 데 사용할 수 있다.

    부적절한 자원해제

    프로그램 오류 또는 에러로 사용이 끝난 자원을 반환하지 못 하는 상황

    해제된 자원 사용

    해제한 메모리를 참조하게 되면 예상치 못한 값, 코드를 실행하게 되어 의도하지 않은 결과가 발생하게 된다.

    초기화되지 않은 변수 사용

    초기화되지 않은 변수를 사용하게 될 경우 임의값을 사용하게 되어 의도하지 않은 결과를 출력하거나 예상치 못한 동작을 수행할 수 있다.

    캡슐화

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

    다중 스레드 환경에서는 싱글톤 객체 필드에 경쟁조건이 발생할 수 있다.

    다중 스레드 환경에서는 정보를 저장하는 멤버변수가 포함되지 않도록 하여 서로 다른 세션에서 데이터를 공유하지 않도록 해야 한다.

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

    공격자가 식별 과정을 우회하거나 의도하지 않은 정보와 제어 정보가 노출될 수 있다.

    시스템 데이터 정보 노출

    시스템, 관리자, DB 정보 등 시스템 내부 데이터가 공개되면, 공격자에게 또 다른 공격의 빌미를 제공한다.

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

    Private 배열을 Public 메소드가 반환하면 배열 주소값이 외부 공개됨으로써 외부에서 배열 수정이 가능하다.

    Pwrivate 배열에 Public 데이터 할당

    Public으로 선언된 데이터, 메소드 파라미터를 Private 배열에 저장하면 Private 배열을 외부에서 접근할 수 있다.

    API 오용

    DNS Lockup에 의존한 보안 결정

    공격자가 DNS 엔트리를 속일 수 있으므로 도메인명에 의존해 보안 결정을 하지 않아야 한다.

    취약한 API 사용

    취약한 API는 보안상 금지된 함수이거나, 부주의하게 사용될 가능성이 많은 API를 의미한다.

    보안상 문제가 없다 하더라도 잘못된 방식으로 함수를 사용할 때 보안 문제를 발생시킬 수 있다.

    시스템 보안 구축

    시스템 보안 설계

    서비스 공격 유형

    해킹의 분류

    목적에 따른 분류

    • 또 다른 해킹을 위한 침입
    • 서비스가 불가능하도록 시스템 자원을 소진
    • 정보의 도용, 수집을 통해 수익을 창출

    위치에 따른 분류

    • 지역적 공격
    • 이미 시스템에 진입할 수 있는 자격을 가진 상태에서 루트의 권한을 획득하는 것을 주목적으로 하는 해킹 방법
    • 원격 공격
    • 소프트웨어 보안 버그 공격 방법

    해킹 수법의 분류

    %E1%84%8C%E1%85%A5%E1%86%BC%E1%84%87%E1%85%A9%E1%84%89%E1%85%B5%E1%84%89%E1%85%B3%E1%84%90%E1%85%A6%E1%86%B7%20%E1%84%80%E1%85%AE%E1%84%8E%E1%85%AE%E1%86%A8%20%E1%84%80%E1%85%AA%E1%86%AB%E1%84%85%E1%85%B5%20c893307a9c854849b0b0bb2ba8847af0/Untitled%2016.png

    해킹 방지 관련 기술 분류

    %E1%84%8C%E1%85%A5%E1%86%BC%E1%84%87%E1%85%A9%E1%84%89%E1%85%B5%E1%84%89%E1%85%B3%E1%84%90%E1%85%A6%E1%86%B7%20%E1%84%80%E1%85%AE%E1%84%8E%E1%85%AE%E1%86%A8%20%E1%84%80%E1%85%AA%E1%86%AB%E1%84%85%E1%85%B5%20c893307a9c854849b0b0bb2ba8847af0/Untitled%2017.png

    유형별 공격 종류

    시스템과 서비스 설정의 취약점을 이용한 공격

    시스템과 시스템이 제공하는 각종 서비스 설정과 관련된 취약점을 이용하는 것

    프로그램의 취약점을 이용한 공격

    • 버퍼 오버플로 공격
    • 힙 버퍼 오버플로 공격
    • 경쟁 상태 공격
    • 포맷 스트링 공격
    • 트랩도어
    • 부르트 포스 공격

    프로토콜의 취약점을 이용한 공격

    • 서비스 거부 공격
    • 분산 서비스 거부 공격
    • 스니핑
    • 이더넷 스니핑
    • 세션 하이재킹
    • 스푸핑
    • ARP 스푸핑
    • IP 스푸핑
    • 분산 반사 서비스 공격 (DRDoS)
    • 랜드 공격
    • 죽음의 핑
    • 패스 더 해시 공격

    보안 도구

    • 침입 방지 시스템
    • 침입 탐지 시스템
    • 방화벽
    • 패킷 필터링 라우터
    • 프록시 서버

    서버 인증

    시스템 인증 개념 및 방법

    시스템 인증 방법

    • 알고 있는 것
    • 가지고 있는 것
    • 스스로의 모습
    • 위치하는 곳

    지식 기반 인증

    • 패스워드
      • 동적 패스워드
      • 정적 패스워드
    • 패스프레이즈
    • 아이핀

    소유 기반 인증

    • 메모리 카드
    • 스마트 카드
    • OTP

    생체 기반 인증

    • 지문
    • 홍채
    • 얼굴
    • 음성
    • 정맥

    위치 기반 인증

    • 콜백
    • GPS
    • IP주소

    서버 인증

    • TLS 프로토콜
    • 클라이언트 및 서버가 서로를 인증하고 세션 중에 사용되는 암호화 유형을 지정할 수 있도록 하는 핸드셰이크 통신을 송신하여 서버에 접속
    • SSL 프로토콜
    • 클라이언트는 서버에 접속하여 서버가 유효한 인증서를 보유하고 있는지 검사한다.

    서버 인증 방식 및 구현

    SSL Connection 인증 과정

    1. SSL Server Authentication
    2. SSL Client Authentication
    3. Encrypt Connection

    SSL 웹 서버 인증서의 사용 목적

    • 보안 : 웹 사이트에서 일어나는 모든 정보 전송이 https 프로토콜을 이용하여 안전하게 전송
    • 인증 : 웹 서버 인증서는 신뢰된 기업에게만 발급하는 인터넷상의 신원증명서

    SSL 웹 서버 인증서의 효과

    • 정보 유출 방지
    • 위조 사이트 방지
    • 데이터 변조 방지
    • 기업 신뢰도 향상
    • 개인정보보호정책

    AAA (인증, 권한 부여, 계정 관리)

    AAA 기능 구현을 위한 인증 프로토콜

    • RADIUS
    • DIAMETER
    • TACACS
    • Kerberos

    AAA 특징

    분산된 클라이언트, 서버 구조

    AAA 서버 : 분산된 정보를 중앙에서 저장, 관리, 허용 여부 통지

    AAA 클라이언트 : 원격 사용자의 인증용 정보를 중앙의 서버에 전달

    서버 접근 통제

    접근 통제 정책 종류

    • 임의적 접근 통제 정책
    • 강제적 접근 통제 정책
    • 역할기반 접근 통제 정책

    접근 통제 및 제어

    • 접근 통제 행렬
    • 접근 제어 (AC)

    접근 통제 시스템 보안

    시스템 구성 요소들 및 자원들의 기밀성, 무결성, 가용성을 보장하기 위해 취해지는 활동

    접근 통제 시스템 보안 범위

    • 계정
    • 패스워드
    • 세션 관리
    • 접근 제어
    • 권한 관리
    • 로그 관리
    • 취약점 관리

    정의된 시스템 보안 요구사항 파악

    • 시스템 내역 파악
    • 시스템 보안 정책 파악
    • 시스템 보안 절차서 파악
    • 시스템 보안 요구사항 파악

    파악된 요구사항에 따라 시스템 보안 요구사항 명세

    • 시스템 보안의 인증에 대한 요구사항 명세
    • 접근 통제에 대한 요구사항 명세
    • 로깅, 감사에 대한 요구사항 명세
    • 암호화 요구사항에 대해 명세
    • 프라이버시에 대한 보안 요구사항 명세
    • 침해사고 예방, 대응에 대한 보안 요구사항

    보안 아키텍처 및 프레임워크

    시스템 보안 설계의 개념

    악성코드, 개인정보 유출, 중요정보 노출 및 비밀 데이터 손실 등의 비즈니스 문제를 방지하고 해결하기 위해 안전한 정보 시스템 환경을 구축하고자 정보 시스템 보안 구축 계획을 수립하고 정보 시스템 보안 설계서를 작성하는 것

    시스템 보안 설계 원칙

    • 원칙 1
      • 자원에 적용되는 보안 수준은 조직에 주는 가치에 비추어 적절해야 한다.
      • 보안에 소요되는 비용은 그것이 주는 혜택에 비추어 합리적이어야 한다.
    • 원칙 2
      • 보안 아키텍처는 변화하는 보안의 필요, 요구사항을 수용할 수 있어야 한다.
      • 보호의 레벨이 변화할 경우에도 기본 보안 아키텍처 수정 없이 지원할 수 있어야 한다.
      • 보안의 서비스가 여러가지 보호 레벨을 수용하고 미래의 확장되는 필요성을 수용할 수 있도록 충분히 확장성이 있어야 한다.
    • 원칙 3
      • 보안 아키텍처는 통합적인 보안 서비스를 제공해야 한다.
    • 원칙 4
    • 모든 컴퓨터 플랫폼에 걸쳐 일관성 있는 프레임워크를 제공해야 한다.

    시스템 보안 설계 범위

    시스템 보안의 개념적 설계

    • 계정과 패스워드 관리
    • 세션 관리
    • 접근 제어
    • 권한 관리
    • 로그 관리
    • 취약점 관리

    정보 시스템 보안 계층 구성

    • 클라이언트
    • 네트워크
    • 서버
    • 어플리케이션
    • 데이터

    정보보호 기술영역 구성

    • 인증
    • 접근 통제
    • 암호화
    • 로깅 및 감사
    • 프라이버시
    • 침해사고 예방 및 대응

    시스템 보안 설계 대상 선정

    • 시스템 보안 설계
      • 패스워드 생성 규칙 정의
      • 시스템에 대한 로그인 시도 시 비밀번호 실패 횟수가 기준을 넘을 경우 차단
      • 비밀번호 변경 주기 설계
      • 비밀번호에 대해 암호화가 되도록 설계
    • 인증 보안 설계
      • 인증시 다양한 방법으로 강화된 복합 인증방식 적용
    • 로그인 보안 설계
      • 로그인 실패 원인에 대한 구체적인 내용의 게시 금지
    • 세션 관리 보안 설계
      • 일정시간 입력이 없는 경우 로그오프 또는 세션 종료
    • 접근 통제 보안 설계
      • 시스템 접속시 불필요한 서비스를 제한하도록 설계
    • 권한 관리 보안 설계
      • 시스템에 대한 접속 권한을 꼭 필요한 관리자에게만 부여하도록 설정
    • 로그 관리 보안 설계
      • 시스템 접근 권한의 변경 시 변경 이력에 기록
    • 취약점 보안 설계
      • 시스템에 대한 악성 프로그램이 발생하지 않도록 설계
      • 시스템에 대한 보안 취약점을 주기적으로 점검하고 조치하도록 취약점 진단, 조치 기준을 설정

    시스템 보안 구현 준비

    시스템 보안 구현 환경 정의

    기밀성, 무결성, 가용성이 보장된 안전하고 신뢰성 있는 시스템 보안을 구현하기 위한 조건, 장소, 기타 여러 가지 여건

    시스템 보안 구현 환경의 유형

    • 관리적 시스템 보안 구현 환경
      • 기업의 시스템 보안 정책
      • 시스템 보안 규정 및 절차서
      • 시스템 보안 조직 및 인원
    • 기술적 시스템 보안 구현 환경
      • 시스템 보안 솔루션 및 패키지
    • 물리적 시스템 보안 구현 환경
      • IDC
      • 보안 통제 공간
      • 잠금장치, 출입 통제 장비

    시스템 보안 구현 계획 정의

    시스템의 보안 설계 내용대로 실제 현장에서 구현하기 위해 세부 범위, 일정, 장소, 인원, 도구, 메뉴얼, 절차서를 포함하여 실행방안을 구체화하는 작업

    시스템 보안 구현 계획에 포함될 사항

    • 범위
    • 일정
    • 장소
    • 인원
    • 기타 준비사항

    시스템 보안 구현 도구의 종류

    • MBSA : Windows 시스템에서 틀리기 쉬운 보안 관련 설정을 간단히 확인하는 기능을 갖추고 있다.
    • Nmap : 다른 포트가 열려 있는지 등을 확인하는 도구
    • NBTScan : NetBIOS name 정보를 얻기 위해 네트워크를 점검하는 프로그램

    관리적 시스템 보안 구현 환경 구축

    • 기업의 시스템 보안 정책 준비
    • 기업의 시스템 보안 규정 및 가이드 준비
    • 시스템 보안 조직 및 역할 준비

    기술적 시스템 보안 구현 환경 구축

    • 시스템 보안 아키텍처 및 설계서 준비
    • 시스템 보안 구현을 위한 솔루션 및 소프트웨어 준비
    • 시스템 보안 구현을 위한 솔루션 및 소프트웨어의 세부 구현 절차서 준비

    물리적 시스템 보안 구현 환경 구축

    • 시스템 보안 구현을 위한 물리적 장소 확보
    • 시스템 보안 구현을 위한 출입 통제, 시건 장비, 캐비넷 등 준비

    시스템 보안 구현 일정계획 수립

    • 추진 목표 설정
    • 범위 및 수행 업무 세분화
    • 조직 및 역할 정의
    • 추진 일정 수립

    시스템 보안 구현

    로그 분석

    로그

    시스템이 운영되는 모든 기록을 담고 있는 데이터

    로그 관리의 필요성

    • 해킹 및 부정 행위에 대한 탐지, 대응
    • 분산된 이기종 장비의 대량 로그 관리

    로그 관리의 어려움

    • 로그의 생성과 저장 : 수 많은 로그, 로그 내용 불일치, 로그 포맷 불일치, Timestamp 불일치
    • 로그 보호 : 로그의 기밀성, 무결성, 가용성 보호
    • 로그 분석 : 로그 분석 관리자에 대한 교육 부족

    윈도우 운영체제의 로그 관리

    이벤트라고 불리는 중앙 집중 형태로 로그를 수집하여 저장 및 관리

    윈도우 시스템에서 기록할 수 있는 로그 정보의 종류

    • 개체 액세스
    • 계정 관리
    • 계정 로그온 이벤트
    • 권한 사용 감사
    • 로그온 이벤트
    • 디렉터리 서비스 액세스
    • 정책 변경
    • 프로세스 추적
    • 시스템 이벤트

    유닉스 운영체제에서 로그 관리

    중앙 집중화 관리되지 않고 분산되어 생성된다.

    로그 종류

    • lastlog : 각 사용자의 로그인 아이디, 포트, 최근 로그인 시간
    • loginlog : 실패한 로그인 시도
    • messages : 콘솔에 출력된 결과 기록
    • sulog : su 명령어 내용 기록
    • utmp : 현재 로그인한 사용자의 아이디, 사용자 프로세스, 실행 레벨, 로그인 종류 등
    • utmpx : utmp 확장
    • wtmp : 사용자의 로그인/로그아웃 시간, IP, 세션 지속 시간 기록, 시스템의 시작/종료 시간 기록
    • wtmpx : wtmp 확장
    • vo.log : 외부 매체에서 발생하는 에러 기록
    • xferlog : FTP 접속 기록

    네트워크 장비의 로그

    각 네트워크 장비에서 생성되는 로그를 네트워크를 통해 로그 서버에 전송

    침입 차단 시스템, 침입 탐지 시스템, 침입 방지 시스템 등 다양한 보안 시스템을 통해 로그를 기록할 수 있다.

    통합 로그 관리 시스템을 사용해 수집, 관리할 수 있다.

    보안 솔루션

    계정 관리

    • 루트 계정 원격 접속 제한
    • 불필요한 계정 제거
    • 관리자 그룹에 최소한의 계정을 포함하도록 구현

    패스워드 관리

    • 패스워드 파일 보호
    • 계정 잠금 임계값 설정
    • 패스워드 최소 길이 설정
    • 패스워드 최대 사용 기간 설정
    • 패스워드 최소 사용 기간 결정

    세션 관리

    • 세션 유지 시간 설정

    접근 제어

    • NFS 접근 통제
    • Apache 상위 디렉터리 접근 금지
    • NFS 설정 파일 접근 제한

    권한 관리

    • 홈 패스 디렉터리 권한 및 패스 설정
    • /etc/passwd 파일 소유자, 권한 설정
    • /etc/shadow 파일 소유자, 권한 설정
    • 파일 및 디렉터리 소유자 설정
    • /etc/(x)inetd.conf 파일 소유자, 권한 설정
    • 사용자 및 소유자의 권한 설정
    • /etc/service 파일 소유자 권한 설정
    • 홈 디렉터리 소유자 권한 설정
    • host.lpd 파일 소유자 권한 설정
    • cron 파일 소유자 권한 설정

    로그 관리

    로그를 정기적으로 분석, 보고

    정책에 따른 시스템 로깅 설정

    취약점 관리

    DoS 공격에 취약한 서비스 비활성화

    최신 보안 패치 및 벤더 권고사항 적용

    서버 시스템의 주요 취약점 진단 항목

    진단 대상

    • 시스템 책임자 지정 및 운영여부
    • 시스템 운영 매뉴얼 작성 여부
    • 정기적 유지보수 여부
    • 장애 기록 관리 여부
    • 계정 관리 여부
    • 파일 및 디렉터리 관리 여부
    • 서비스 관리 여부
    • 중요 패치 수행 여부

    안전한 패스워드 사용 여부 확인

    • 충분한 길이와 복잡도의 암호를 확보하는 것이 필요하다.

    안전한 원격 접속 사용 여부 확인

    • Telnet, FTP 사용 자제
    • SSL 접속 사용

    주요 파일 및 디렉터리에 적절한 접근 권한 부여 확인

    • OS가 사용하는 기타 중요 파일에 대하여 접근 권한을 제한하고 있는지 점검

    불필요한 서비스 중지 여부 확인

    SNMP 커뮤니티 문자열 복잡석 만족 여부 확인

    서비스 배너 변경 여부 확인

    로그 기록 설정 여부 확인

    최신 시스템 패치 적용 여부 확인

    네트워크 시스템의 주요 취약점 진단 항목

    • 네트워크 해킹 정보 수집
      • 풋 프린팅
      • 스캐닝
      • 목록화
      • 사회공학 기법
    • 수집 기법
    • MITM
    • Sniffing
    • Spoofing
    • VTY 접속 시 안전한 프로토콜 사용 여부 확인
      • 원격에서 적절한 인증과정을 거쳐 접근하여 관리할 수 있는 VTY 설정(SSH)
    • 세션 타임아웃 설정 여부 확인
    • Proxy ARP 차단 여부 확인

    애플리케이션 진단

    • SQL Injection
    • 인증 우회
    • 스크립트 삽입 (XSS)
    • 취약한 인증과 세션 관리
    • 안전하지 않은 직접 객체 참조
    • CSRF
    • 보안상 잘못된 구성
    • URL 접근 실패
    • 불충분한 전송 계층 보호

    취약점 분석

    시스템 보안 구현 검증

    테스트 개념 및 정의

    테스트 중인 소프트웨어 제품 또는 서비스의 품질에 대한 정보를 이해 관계자에게 제공하기 위해 수행된 평가

    테스트의 목적

    소프트웨어 결함을 탐지하여 결함을 발견하고 수정하는 것

    테스트 범위

    시스템에 대한 계정 관리, 패스워드 관리, 접속 관리. 권한 관리, 로깅, 취약점 관리 등

    결함 관리

    결함 관리 활동을 수행하여 발생한 결함의 재발생을 막고, 유사 결함 발견 시 처리 시간을 단축하기 위한 활동

    결함 관리의 절차

    • 에러 발견
    • 에러 등록
    • 에러 분석
    • 결함 확정
    • 결함 할당
    • 결함 조치
    • 결함 조치 검토 및 승인

    시스템 보안 테스트 개요

    시스템을 유지하고 있는 데이터 및 구조를 보호하고 사용자가 원하는 대로 기능을 유지하고 있는지 확인하는 것

    시스템 보안 테스트 대상

    • 계정과 패스워드 관리
    • 세션 관리
    • 접근 제어
    • 권한 관리
    • 로그 관리
    • 취약점 관리

    취약점의 정의

    예시

    • 서버에 실행되는 오래된 버전의 서비스
    • 제한 없는 네트워크 접근
    • 침입 차단 시스템의 열린 포트
    • 느슨한 통제 규정의 물리적 보안
    • 서버와 PC에 취약한 패스워드 설정

    취약점 점검 분류

    • 관리적 관점
      • 운영적 취약성
      • 정보보호 관리의 취약성
      • 인적 관리의 취약성
    • 정보보호 관리체계 보안 통제 항목에 근거하여 취약점 점검
    • 기술적 관점
      • 컴퓨터, 통신 관련 취약성
      • 정보보호 시스템 관련 취약성
      • 시스템 개발 관련 취약성
    • 개발 완료 후 기능을 수정하는 것에는 막대한 예산이 필요하므로, 개발 단계부터 취약점 점검이 필요
    • 물리적 관점
      • 물리적 취약성
      • 환경적 취약성
    • 서버, 네트워크, PC 보안 점검 등을 통한 취약점 점검

    취약점의 진단

    진단 대상 설정

    • 전수 조사 : 모든 자산을 대상으로 선정
    • 샘플링 : 자산의 규모가 매우 클 경우 비슷한 성격을 가진 자산을 한 개의 그룹으로 묶은 후 그룹 내 몇 개의 대상만 선정하여 취약점 진단 수행

    기술적 취약점 진단에서의 항목

    윈도우 서버 진단

    • 계정 관리 설정
    • 파일 및 디렉터리 보안 설정
    • 네트워크 서비스 보안 설정
    • 응용 프로그램 보안 설정
    • 로그 관리 및 보안 감사 설정
    • 시스템 보안 설정
    • 보안 패치 설정

    유닉스/리눅스 서버 진단

    • 계정 관리 설정
    • 시스템 환경 설정
    • 파일 및 디렉터리 보안 설정
    • 응용 프로그램 보안 설정
    • 네트워크 서비스 설정
    • 로그 설정
    • 패치 관리

    네트워크 장비 진단

    • 계정 관리 설정
    • SNMP 설정
    • 장비 운영 환경 설정
    • 로그 설정
    • 네트워크 서비스 설정
    • 패치 관리

    보안 솔루션 진단

    • 정책 관리
    • 운영 관리
    • 보안 장비 접근 및 권한 설정 관리
    • 방화벽 성능 관리
    • 로그 관리
    • 백업 관리
    • 패치 관리

    PC 진단

    • 사용자 계정 보안
    • 네트워크 보안
    • 공유 폴더 보안
    • 시스템 보안
    • 안티 바이러스
    • 보안 업데이트 및 패치

    웹 애플리케이션 진단 (모의 해킹)

    1. 모의 해킹 진행 수행 계획서 작성
    2. 모의 해킹에 필요한 정보 수집
    3. 모의 해킹을 수행하여 취약점 탐색
    4. 찾아낸 취약점의 종류, 내용, 대응 방법을 포함하는 결과 보고서 작성

    국제 웹 보안 표준 기구에서 선정한 10대 취약점

    • Injection
    • 취약한 인증
    • 민감한 데이터 노출
    • XML 외부 개체 XXE
    • 취약한 접근 통제
    • 잘못된 보안 구성
    • 크로스 사이트 스크립팅
    • 안전하지 않은 역직렬화
    • 알려진 취약점이 있는 구성요소 사용
    • 불충분한 로깅 및 모니터링

    '정보처리기사 개정' 카테고리의 다른 글

    4. 프로그래밍 언어 활용  (0) 2021.05.26
    3. 데이터베이스 구축  (0) 2021.05.26
    2. 소프트웨어 개발  (0) 2021.05.26
    1. 소프트웨어 설계  (0) 2021.05.26

    댓글