25. 인터페이스 기능 구현

y55n·2022년 3월 28일
0

정보처리기사

목록 보기
26/50
post-custom-banner

수제비 2022 정보처리기사 실기 수험서를 보고 공부한 기록입니다.


👉인터페이스 기능 구현 정의

개발하고자 하는 응용 소프트웨어와 연계 대상 모듈 간의 세부 설계서를 확인하여 일관되고 정형화된 인터페이스 기능을 구현할 수 있다

(1) 모듈 간 세부 설계서 확인

각 모듈의 컴포넌트 명세서와 인터페이스 명세서 등 세부 설계서를 확인하여 인터페이스에 필요한 기능을 확인한다

1. 컴포넌트 명세서

컴포넌트 명세서는 컴포넌트의 개요, 내부 클래스의 동작, 인터페이스를 통해 외부와 통신하는 명세를 정의한다

2. 인터페이스 명세서

  • 인터페이스 명세서는 컴포넌트 명세서에 명시된 인터페이스 클래스의 세부적인 조건 및 기능을 명시한 명세서이다
  • 인터페이스 명칭, 사전/사후 조건, 인터페이스 데이터 및 인터페이스 완료 후 성공 여부를 반환받는 반환 값 등이 정의되어 있다

(2) 일관되고 정형화된 인터페이스 기능 정의

분석된 인터페이스의 기능, 데이터 표준, 모듈 설계 명세서를 통하여 일관되고 정형화된 인터페이스의 기능을 정의한다

(3) 정의된 인터페이스 기능에 대한 정형화

  • 정의된 인터페이스 기능을 표준화하고, 사람들이 보기 쉽게 정형화한다
  • 특정 하드웨어나 소프트웨어에 의존적이지 않게 작성하고, 가독성을 높이기 위해 프로세스 형태나 유스케이스 다이어그램의 형태로 작성한다

👉인터페이스 기능 구현

(1) 사전에 정의된 기능에 대한 구체적 분석

상세하게 정의된 기능 구현 정의 내용을 토대로 어떻게 구현할 것인지 분석한다

▼송신 측에서 필요 대상을 선택하여 수신 측에 데이터 전송

  • 대상자 선택: DB에 저장된 인사 정보를 SQL로 선택하여 인터페이스 대상을 확인
  • 인터페이스 데이터 생성: 제이슨 또는 인터페이스 테이블 형식에 맞게 DB에 있는 정보 가공
  • 인터페이스 데이터 전송 요청: 인터페이스 데이터를 생성 후 해당 데이터를 https에서 인터페이스 또는 수신 측으로 전송 요청

▼필요 항목에 대해서 데이터 전달

  • 인터페이스 데이터 전송: 수신지 주소에 REST 방식으로 전달될 수도 있으며 DB 커넥션을 이용하여 DB 프로시저, 트리거 등을 활용하여 전송
  • 인터페이스 데이터 수신
    • 인터페이스 데이터를 수신한 후 데이터의 형식이 맞는지 점검
    • 각 규칙을 사전에 정의하고 이를 활용
  • 인터페이스 데이터 파싱: 인터페이스 객체는 파서를 이용하여 파싱하거나 인터페이스 테이블에서 선택
  • 인터페이스 데이터 검증: 각 세부 데이터의 포맷과 논리적인 제약조건의 오류 검사
  • 후속 기능 수행: 각 세부 데이터를 활용해서 수신 시스템에서 정의된 동작을 진행

▼전달 후 수신 측으로부터 전달 여부에 대한 값을 반환

  • 인터페이스 수신 결과 생성, 전송: 정상적으로 수신되면 참, 아니면 거짓의 반환 값을 제이슨 형태로 전송
  • 수신 측에서 처리한 인터페이스 결과 반환: 수신 측에서 보낸 응답 제이슨을 통해 수행 여부를 확인하고 이를 화면상으로 표시

(2) 인터페이스 기능 구현 기술

1. JSON(Javascript Object Notation)

①JSON의 개념

  • JSON은 속성-값(Attribute-Value Pair) 쌍 또는 "키-값 쌍"으로 이루어진 데이터 오브젝트를 전달하기 위해 인간이 읽을 수 있는 텍스트를 사용하는 개방형 표준 포맷이다

②JSON의 특징

  • AJAX(Asynchronuous JavaScript and XML)에서 많이 사용되고 XML(eXtensible Markup Language)을 대체하는 주요 데이터 포맷이다
  • 언어 독립형 데이터 포맷으로 다양한 데이터 프로그래밍 언어에서 사용된다
  • 사람이 읽고 쓰기에 용이하며, 기계가 분석하고 생성하기에 용이하다

③JSON 표현 자료형

숫자(number)

  • 기본 자료형의 수는 정수, 실수(고정소수점), 실수(부동소수점)로 표현
  • ex)74, 3.14, 3.4e+4

문자열(String)

  • 항상 큰 따옴표(" ")로 묶어야 하며, 그 안에는 유니코드 문자들이 나열
  • ex)"ABCD", "1234"

배열(Array)

  • 배열은 대괄호[ ]로 표시, 배열의 각 요소는 기본 자료형이거나 배열, 객체임
  • 각 요소들은 쉼표(,)로 구별되고 각 요소가 나타나는 순서에 의미가 있음
  • ex)[10, {"v":20}, [30, "마흔"]]

객체(Object)

  • 객체는 이름/값 쌍의 집합으로, 중괄호{ }를 사용
  • 이름은 문자열이기 때문에 반드시 따옴표를 하며, 값은 기본 자료형
  • 각 쌍들은 쉼표(,)로 구별되고, 각 쌍이 나오는 순서는 의미가 없음
  • ex){"name2": 40, "name3": "값3", "name1": true}

④JSON 문법

[구조]

  • name/value 쌍으로 구성
  • '{' 로 시작하고 '}' 로 끝남
  • 배열은 대괄호[ ]로 나타냄

[사례]

{
	"이름": "수제비-빅데이터 분석기사",
   	"가격": 99999,
   	"출판사": "건기원",
   	"저자": "수제비 NCS 기술사 연구회",
   	"출간일": "2020-12-31",
   	"목차": ["빅데이터 수집", "빅데이터 저장", "빅데이터 처리"]
}

[도구]

  • Parser: JSON tex 파일을 해석하고자 자바 오브젝트로 변환
  • Renderer: 자바를 text로 표현
  • Serializer: POJO를 JSON 표현으로 직렬화
  • Mapper: POJO와 JSON을 매핑
  • Validator: JSON 스키마를 이용해서 파일 내용 유효성 체크

⑤JSON 장점 및 단점

[JSON 장점]

  • XML보다 가볍고 빠름
  • 자료 종류에 큰 제한이 없음
  • XML은 모두 string이고, JSON은 string, number, array, Boolean 등 다양
  • Javascript 코드 안에서 JSON 객체에 접근이 쉬움

[JSON 단점]

  • 태그가 없어서 가독성이 떨어짐
  • DTD 같은 것이 없기 때문에 데이터 형식이 틀렸을 경우 체크가 쉽지 않음

2. XML(Extensible Markup Language)

①XML의 개념

XML은 HTML의 단점을 보완한 인터넷 언어로, SGML의 복잡한 단점을 개선한 특수한 목적을 갖는 마크업 언어이다

②XML의 특징

  • XML은 송수신 시스템 간 데이터 연계의 편의성을 위해서 전송되는 데이터 구조를 동일한 형태로 정의한다
  • 인간과 기계가 모두 이해할 수 있는 텍스트 형태로 마크업 포맷을 정의하기 위한 메타언어이다
  • 사용자가 직접 문서의 태그를 정의할 수 있으며, 다른 사용자가 정의한 태그를 사용할 수 있다

③XML의 문서 구조

[XML 문서 작성 규칙]

  • 트리 구조로 구성되어 있어 상위 태그는 여러 개의 하위 태그를 가질 수 있음
  • 모든 태그는 종료 태그를 가져야 하고, 시작 태그와 종료 태그의 요소명칭은 동일해야 함
  • XML 태그의 여닫는 순서는 반드시 지켜져야 하고, 띄어쓰기는 인식
  • 속성값은 반드시 큰따옴표(" ")로 묶어줘야 하고, 대소문자는 구분

[XML 문서 구조]

<?xml version="1.0" encoding="UTF-8"?>
<shop city="인천" type="전자상가">
	<smart device>
    	<name>iphone</name>
        <sort>smart phone</sort>
        <cost>960,000</cost>
    </smart device>
    <smart device>
    	<name>삼성갤럭시탭</name>
        <sort>태블릿 PC</sort>
        <cost>1,160,000</cost>
    </smart device>
</shop>
  • XML 문서는 맨 첫 줄에 태그를 사용하여 XML 문서임을 명시
  • XML 문서에 단 하나만 존재하는 루트(root) 요소 생성
  • 자식(child) 요소로 두 개의 요소를 가짐
  • 첫 번째 요소는 요소, 요소, 요소의 총 세 개의 자식요소를 가짐
  • 두 번째 요소도 요소, 요소, 요소의 총 세 개의 자식요소를 가짐
  • XML 문서는 전자상가에서 판매하는 스마트 기기에 관한 정보를 담고 있는 문서임을 알 수 있음
  • 이처럼 XML 문서에서 요소의 이름만으로 데이터의 내용을 알 수 있는 구조

④XML 구성

  • XML의 문서는 크게 XML 프롤로그 부분과 XML 요소로 구성된다

㉮XML 프롤로그

  • XML 문서는 맨 첫 줄에 태그를 사용하여 XML 문서임을 명시하는 선언부이다
  • 태그의 이름은 소문자로만 사용한다

▼XML 프롤로그 문법

<?xml version="XML문서버전" encoding="언어셋" standalone="yes|no"?>

▼XML 프롤로그 문법 구성요소

  • version: XML 문서에 사용된 XML의 버전을 명시
  • encoding: XML의 언어 셋 명시. 생략이 가능하며, 생략 시 기본값은 UTF-8
  • standalone: XML 문서를 해석할 때 외부 문서의 참조 여부 명시, 생략이 가능하며, 생략 시 기본값은 no로 외부 문서를 참조한다는 의미

㉯XML 요소

XML 요소란 시작 태그부터 종료 태그까지의 모든 것이다

▼XML 요소 문법

<요소이름 속성1="속성값" 속성2="속성값" ...>내용</요소이름>

▼XML 요소 문법 구성요소

[요소 이름]

  • 요소의 이름으로 사용자가 임의로 지정 가능
  • 요소 이름의 작성 규칙
    1. 요소 이름은 영문자, 숫자, 하이픈(-), 언더스코어(_)와 점(.)만을 사용
    2. 영문자의 대소문자 구분
    3. 예약어인 xml, XML, Xml 등은 요소 이름으로 사용 불가
    4. 시작 태그의 이름과 종료 태그의 이름은 반드시 대소문자까지 동일

[속성-"속성값"]

  • XML 요소의 속성은 속성명-"속성값"의 형태로 정의
  • 속성 이름의 작성 규칙
    1. XML 속성의 이름은 하나의 요소 내에서 중복되어서는 안 됨
    2. 속성값은 반드시 따옴표로 둘러싸여야 하며, 작은따옴표와 큰따옴표의 차이는 없음

[내용]

  • 요소의 내용으로 생략이 가능

3. AJAX(Asynchronuos Javascript And XML)

①AJAX의 개념

  • AJAX는 자바스크립트를 사용하여 웹 서버와 클라이언트 간 비동기적으로 XML 데이터를 교환하고 조작하기 위한 웹 기술이다
  • 브라우저가 가지고 있는 XMLHttpRequest 객체를 이용해서 전체 페이지를 새로 로드하지 않고 필요한 일부 페이지의 데이터만을 로드하는 기법이다
  • 하이퍼텍스트 표기 언어(HTML)만으로는 어려운 다양한 작업을 웹 페이지에서 구현해서 이용자가 웹 페이지와 자유롭게 상호 작용할 수 있도록 구현하는 기법이다

②AJAX의 주요 기술

  • XMLHttpRequest
    • 웹 브라우저와 웹 서버 간에 메소드가 데이터를 전송하는 객체 폼의 API
    • 비동기 통신을 담당하는 자바스크립트 객체
  • JavaScript
    • 객체 기반의 스크립트 프로그래밍 언어
    • 웹 브라우저 내에서 주로 사용하며, 다른 응용 프로그램의 내장 객체에도 접근할 수 있는 기능 소유
  • XML(Extensible Markup Language)
    • HTML의 단점을 보완한 인터넷 언어로서 SGML의 복잡한 단점을 개선한 특수한 목적을 갖는 마크업 언어
  • DOM(Document Object Model)
    • XML 문서를 트리 구조의 형태로 접근할 수 있게 해주는 API
    • 플랫폼/언어 중립적으로 구조화된 문서를 표현하는 객체 지향 모델
  • XSLT(Extensible Stylesheet Language Transformations)
    • XML 문서를 다른 XML 문서로 변환하는 데 사용하는 XML 기반 언어
    • W3C에서 제정한 표준으로 XML 변환 언어를 사용하여 XML 문서로 바꿔주며, 탐색하기 위해 XPath를 사용
  • HTML(HyperText Markup Language)
    • 인터넷 웹(WWW) 문서를 표현하는 표준화된 마크업 언어
  • CSS(Cascading Style Sheets)
    • 마크업 언어가 실제 표시되는 방법을 기술하는 언어
    • 운영체제나 사용 프로그램과 관계없이 글자 크기, 글자체, 줄 간격, 색상 등을 자유롭게 선택할 수 있는 스타일 시트

③AJAX의 동작 원리

  1. 사용자에 의한 요청 이벤트 발생
  2. 요청 이벤트가 발생하면 이벤트 핸들러에 의해 자바스크립트 호출
  3. 자바스크립트는 XMLHttpRequest 객체를 사용하여 서버로 요청, 이때 웹 브라우저는 요청을 보내고 나서, 서버의 응답을 기다릴 필요 없이 다른 작업 처리 가능
  4. 서버는 전달받은 XMLHttpRequest 객체를 가지고 AJAX 요청을 처리
  5. 서버는 처리한 결과를 HTML, XML, JSON 형태의 데이터로 웹 브라우저에 전달
  6. 서버로 전달받은 데이터를 가지고 웹 페이지의 일부분만을 갱신하는 자바스크립트를 호출
  7. 결과적으로 웹 페이지의 일부분만이 다시 로딩되어서 표시

4. REST(Representational State Transfer)

①REST의 개념

  • REST는 웹과 같은 분산 하이퍼미디어 환경에서 자원의 존재/상태 정보를 표준화된 HTTP 메소드로 주고받는 웹 아키텍처이다
  • REST는 웹의 창시자(HTTP) 중의 한 사람인 Roy Fielding의 2000년 논문에 의해서 소개되었다

②REST의 기본 형태

  • REST는 크게 리소스(자원), 메소드(처리), 메시지 3가지 요소로 구성된다
HTTP POST, http://iiccbb/users/
{
	"users":{
    	"name": "페코페코"
    }
}

㉮행위에 대한 메소드

  • REST는 행위에 대한 메소드를 HTTP 메소드 중 CRUD에 해당되는 4가지 메소드만 사용한다
  • POST: Create(생성)
  • GET: Read(조회)
  • PUT: Update(수정)
  • DELETE: Delete(삭제)

㉯REST 리소스

③REST 특징

  • 클라이언트/서버 구조
    • 역할이 명확히 구분되기 때문에 클라이언트와 서버는 독립적으로 구현되어야 하고, 서로 간 의존성은 축소
  • 무 상태성
    • 작업을 위한 상태 정보를 따로 저장하고 관리하지 않기 때문에 API 서버는 들어오는 요청만 단순히 처리함
    • 서버에서 불필요한 정보를 관리하지 않음으로써 구현이 단순
  • 일관된 인터페이스
    • HTTP 표준에만 따른다면 특정 언어나 기술에 종속되지 않고 모든 플랫폼에 사용할 수 있으며, URI로 지정한 리로스에 대한 조작이 가능한 아키텍처 스타일
  • 캐시 처리 가능
    • HTTP가 가진 캐싱 기능 적용 가능
    • HTTP 프로토콜 표준에서 사용하는 Last-Modified 태그나 E-Tag를 이용하면 캐싱 구현 가능
  • 자체 표현 구조
    • API 메시지 자체만 보고도 API를 이해할 수 있는 구조를 가짐
    • 리소스와 메소드를 이용해서 어떤 메소드에 무슨 행위를 하는지를 알 수 있으며, 또한 메시지 포맷 역시 JSON을 이용해서 직관적으로 이해가 가능한 구조

(3)인터페이스 구현

인터페이스 구현 방법에는 데이터 통신을 사용하는 방법과 인터페이스 개체(Entitiy)를 사용하여 인터페이스를 구현하는 방법이 있다

1. 데이터 통신을 사용하는 인터페이스 구현

  • 인터페이스 객체 생성 구현
    • 인터페이스 객체를 생성하기 위해서 데이터베이스에 있는 정보를 SQL을 통하여 선택한 후 이를 제이슨(JSON)으로 생성
  • 인터페이스 객체 전송 후 전송 결과를 수신 측에서 반환 받고도록 구현
    • 송신 측에서 제이슨으로 작성된 인터페이스 객체를 AJAX 기술을 이용하여 수신 측에서 송신
    • 수신 측에서는 제이슨 인터페이스 객체를 수신받고 이를 파싱 후 처리
    • 수신 측의 처리 결과값은 송신 측에 True/False 값을 전달하여 인터페이스 성공 여부를 확인 전달

2. 인터페이스 개체(Entity)를 사용하는 인터페이스 구현

  • 송신 시스템의 인터페이스 테이블
    • 송신 관련 정보를 관리하기 위한 항목과 송신 시스템에서 필요한 항목 구현
    • 인터페이스 이벤트 발생 시 인터페이스 테이블에 인터페이스 내용이 기록되도록 구현
    • 데이터 전송을 위해서 DB 커넥션(DB Connection)이 수신 측 인터페이스 테이블과 연계되도록 구현
    • 프로시저, 트리거, 배치 작업 등의 방법을 통해서 수신 테이블로 데이터를 전송하도록 구현
  • 수신 시스템의 인터페이스 테이블
    • 수신 관련 정보를 관리하기 위한 항목과 수신 시스템에서 필요한 항목 구현
    • 수신 측 시스템에서는 인터페이스 데이터를 읽은 후 사전에 정의된 데이터 트랜잭션을 진행할 수 있도록 구현
    • 데이터를 읽을 때나 해당 트랜잭션이 진행될 때 오류가 발생하면 오류 코드 칼럼에 정의된 오류 코드와 오류 내용을 입력하도록 구현

👉인터페이스 예외 처리 방안

(1)데이터 통신을 사용한 인터페이스에서 예외 처리 방법

▼데이터 통신을 사용한 인터페이스에서 예외 처리 방법

  • 송신 측에서 예외 처리 방법
    • 예외 처리하는 방법은 AJAX 호출 후 반환 값을 받아 어떻게 처리할지를 호출하는 부분에서 사전 정의
    • 반환 값은 성공(Success)과 실패(Fail)로 나뉘며, 예외 처리는 실패 시 발생
  • 수신 측에서 예외 처리 방법
    • 수신 측에서 받은 JSON 객체를 처리 시에 try~catch 구문을 이용하여 발생한 예외를 처리하고 이를 송신 측에전달
    • 별도 예외 결과를 설정하지 않고도 에러 발생 시 에러 결과가 반환

▼데이터 통신을 사용한 인터페이스에서 예외 처리 사례

[송신 측에서 예외 처리 방법]

항목예외 원인예외 처리 방안
시스템 환경네트워크 불안정-post 이후 에러 메시지를 확인 -404 오류(서버를 찾지 못할 때)일 경우 네트워크, 서버 상태 확인
프로그램 자체 원인송신 데이터 생성 시 프로세스의 논리적 결함-프로세스에 따라 예상되는 예외를 알람을 통해 사용자에게 전달

[수신 측에서 예외 처리 방법]

항목예외 원인예외 처리 방안
시스템 환경네트워크 및 서버 불안정-입력 대기 큐를 통해서 요청을 쌓아 놓고 차례로 처리하여 서버 정상 가동 시 동작할 수 있도록 처리
수신 데이터데이터 정합성 체크-파싱 시 특수 문자는 오류가 나지 않은 문자로 대처한 후 추후 재처리
프로그램 자체 원인수신 인터페이스 데이터 처리 시 프로그램의 논리적 결함-프로세스에 따라 예상되는 예외를 알람을 통해 사용자에게 전달 -예외 사항이 들어오지 않도록 송신 측 프로그램 수정

(2)인터페이스 개체(Entity)를 사용하는 인터페이스에서 예외 처리 방법

인터페이스 테이블을 통하여 인터페이스 기능상 문제로 예외 상항이 발생하는 경우 예외 처리 메시지와 함께 예외 처리가 발생한 원인을 인터페이스 이력에 함께 기록한다

▼인터페이스 개체를 사용하는 인터페이스에서 예외 처리 방법

  • 송신 인터페이스 테이블에서 예외 처리 방법
    • 예외 발생 시 송신 인터페이스 테이블에 예외 유형에 따른 예외 코드와 상세한 원인을 함께 입력
    • 송신 인터페이스 테이블에 프로시저, 트리거 등을 통해 데이터 전송 시 발생하는 예외 유형을 정의하고, 예외 원인을 함께 입력
  • 수신 인터페이스 테이블에서 예외 처리 방법
    • 수신 측에서 데이터가 없거나 잘못된 값을 읽을 경우 예외 발생
    • 예외 발생 시 사전에 정의된 예외 코드를 입력하고 예외 발생 사유를 함께 기록
    • 수신된 인터페이스 정보를 활용할 때 예외 발생 시, 수신 인터페이스 테이블에 별도의 예외 사항을 기록

▼인터페이스 개체를 사용하는 인터페이스에서 예외 처리 사례

[송신 인터페이스 테이블에서 예외 처리 방법]

항목 예외 원인 예외 처리 방안
인터페이스 데이터 생성-선택 SQL, 프로그램 오류 -데이터 객체 생성 오류-사용자에게 오류 발생 시 알람(오류 원인을 포함) -예외 케이스가 재발하지 않도록 프로그램 개선
인터페이스 테이블 입력-입력 SQL 오류 -데이터 정합성 오류-입력 실패 결과와 원인을 인터페이스 테이블에 기록 -사용자에게 실패 결과 알람
인터페이스 데이터 전송-DB 연계 오류-통신 결과를 읽어서 실패 결과와 원인을 인터페이스 테이블에 기록 -실패 결과 및 원인을 사용자, 관리자에게 메일을 통해 알림

[수신 인터페이스 테이블에서 예외 처리 방법]

항목예외 원인예외 처리 방안
인터페이스 데이터 읽기-데이터 선택 시 오류(SQL, 프로그램)-수신 측 사용자에게 예외 발생 알람 전송 -인터페이스 테이블에 예외 사항 기록
데이터 트랜잭션-데이터 트랜잭션 시 프로그램의 논리상 오류-사용자에게 예외 알람 전송 -인터페이스 테이블에 예외 사항 기록
처리 결과 응답-DB 연계 오류-인터페이스 테이블에 예외 사항 기록 -송수신자에게 예외 사항 발생은 메일을 통해 알림

👉인터페이스 보안 기능 적용

(1) 인터페이스 보안 취약점

1. 데이터 통신 시 데이터 탈취 위협

인터페이스를 위한 송수신 시스템 간의 데이터 통신 시 스니핑을 통해 데이터 전송 내역을 감청하여 데이터를 탈취하는 위협이 존재한다

2. 데이터 통신 시 데이터 위변조 위협

인터페이스를 위한 송수신 시스템 간의 데이터 통신 시 전송 데이터에 대한 삽입, 삭제, 변조 공격을 통한 시스템 위협이 존재한다

(2) 인터페이스 보안 구현 방안

1. 시큐어 코딩 가이드 적용

인터페이스 개발 시 보안 취약점을 방지할 수 있는 시큐어 코딩 가이드에 따른 개발 수행이 필요하다

적용대상보안 약점대응 방안
입력데이터 검증 및 표현프로그램 입력값에 대한 검증 누락 · 부적절한 검증, 잘못된 형식 지정사용자 · 프로그램 입력 데이터에 대한 유효성 검증 체계를 수립하고 실패 시 처리 기능 설계 및 구현
보안 기능보안 기능(인증, 접근 제어, 기밀성, 암호화, 권한 관리 등)의 부적절한 구현인증 · 접근 통제, 권한 관리, 비밀번호 등의 정책이 적절하게 반영되도록 설계 및 구현
시간 및 상태거의 동시에 수행 지원하는 병렬 시스템, 하나 이상의 프로세스가 동작하는 환경에서 시간 및 상태의 부적절한 관리공유 자원의 접근 직렬화, 병렬 실행 가능 프레임워크 사용, 블록문 내에서만 재귀 함수 호출
에러 처리에러 미처리, 불충분한 처리 등으로 에러 메시지에 중요 정보가 포함에러 상황을 처리하지 않거나, 불충분하게 처리되어 중요 정보 유출 등 보안 약점 발생하지 않도록 시스템 설계 및 구현
코드 오류개발자가 범할 수 있는 코딩 오류로 인해 유발코딩 규칙 도출 후 검증 가능한 스크립트 구성과 경소 순위의 최상향 조정 후 경고 메시지 코드 제거
캡슐화기능성이 불충분한 캡슐화로 인해 인가되지 않은 사용자에게 데이터 누출디버거 코드 제거와 필수정보 외의 클래스 내 프라이빗(Private) 접근자 지정
API 오용의도된 사용에 반하는 방법으로 API를 사용하거나, 보안에 취약한 API의 사용개발 언어별 취약 API 확보 및 취약 API 검출 프로그램 사용

2. 데이터베이스 보안 적용

  • 데이터베이스의 기밀성을 유지하기 위해서 인터페이스 시 활용되는 중요 데이터에 대해서는 필요한 보안 요구사항을 적용한다
  • 현재 시점에서 안정성이 검증된 암호화 알고리즘을 활용하여 중요한 민감 데이터는 반드시 암호화하고, 데이터베이스 보안 요구사항은 해당 인터페이스 조건에 부합되도록 적용한다

①데이터베이스 암호화 알고리즘

대칭 키 암호화 알고리즘

  • 암호화 알고리즘의 한 종류로, 암·복호화에 같은 암호 키를 쓰는 알고리즘을 의미
  • ARIA 128/192/256, SEED

비대칭 키 암호화 알고리즘

  • 공개키는 누구나 알 수 있지만, 그에 대응하는 비밀키는 키의 소유자만이 알 수 있도록, 공개키와 비밀키를 사용하는 알고리즘
  • RSA, ECC, ECDSA

해시 암호화 알고리즘

  • 해시값으로 원래 입력값을 찾아낼 수 없는 일방향성의 특성을 가진 알고리즘
  • SHA-256/384/512, HAS-160

②데이터베이스 암호화 기법

API 방식

  • 애플리케이션 레벨에서 암호 모듈(API)을 적용하는 애플리케이션 수정 방식
  • 애플리케이션 서버에 암·복호화, 정책 관리, 키 관리 등의 부하 발생

Plug-in 방식

  • 암·복호화 모듈이 DB 서버에 설치된 방식
  • DB 서버에 암·복호화, 정책 관리, 키 관리 등의 부하 발생

TDE 방식

  • DB 서버의 DBMS 커널이 자체적으로 암·복호화 기능을 수행하는 방식
  • 내장되어있는 암호화 기능(TDE: Transparent Data Encryption)을 이용

Hybrid 방식

  • API 방식과 Plug-In 방식을 결합하는 방식
  • DB 서버와 애플리케이션 서버로 부하 분산

3. 중요 인터페이스 데이터의 암호화 전송

민감한 정보를 통신 채널을 통하여 전송 시에는 반드시 암·복호화 과정을 거쳐야 하고, IPSec, SSL/TLS, S-HTTP 등 보안 채널을 활용하여 전송한다

IPSec(IP Security)

  • IP 계층(3계층)에서 무결성과 인증을 보장하는 인증 헤더(AH)와 기밀성을 보장하는 암호화(ESP)를 이용하여 양 종단 간(End Point) 구간에 보안 서비스를 제공하는 터널링 프로토콜
  • 동작 모드는 전송(Transport) 모드와 터널(Tunnel) 모드가 있음
  • 주요 프로토콜은 AH, ESP, IKE(키 교환)가 있고, IPSEC 정책에는 SPD, SAD가 있음

SSL/TLS

  • 전송계층(4계층)과 응용계층(7계층) 사이에서 클라이언트와 서버 간의 웹 데이터 암호화(기밀성), 상호 인증 및 전송 시 데이터 무결성을 보장하는 보안 프로토콜
  • 인증 모드는 익명 모드, 서버인증 모드, 클라이언트-서버인증 모드가 있음
  • IPSec와는 다르게 Client와 Server 간에 상호인증, 암호 방식에 대해 협상을 거치는 특징이 있음
  • 대칭 키 암호화, 공개키 암호화, 일방향 해시함수, 메시지 인증코드 등 특정 암호 기술에 의존하지 않고 다양한 암호 기술 적용
  • Https://~ 표시형식과 443포트 이용

S-HTTP(Secure Hypertext Transfer Protocol)

  • S-HTTP는 웹상에서 네트워크 트래픽을 암호화하는 주요 방법 중 하나로서 클라이언트와 서버 간에 전송되는 모든 메시지를 각각 암호화하여 전송
  • S-HTTP에서 메시지 보호는 HTTP를 사용한 애플리케이션에 대해서만 가능
  • S-HTTP 서버 접속 시 shttp://URL 사용

(3) 인터페이스 보안 기능 적용 프로세스

1. 인터페이스 각 구간의 보안 취약점 분석

  • 인터페이스 보안 취약점을 분석하기 위해 송수신 영역의 구현 기술 및 특징을 구체적으로 분석한다
  • 송수신 영역의 구현 기술은 보안 취약점이 발생할 수 있는 영역을 구분하여 분석한다
  • 분석된 인터페이스 기능을 대상으로 보안 취약점을 분석한다
  • 각 단계 영역별로 일어날 수 있는 시나리오를 가정하여 자세하게 분석한다

▼인터페이스 송·수신부 보안 취약점 분석 사례

[송신 데이터 선택]

  • 애플리케이션
    • 송신 데이터 선택 객체 접근 권한 탈취 가능
    • 객체 선택 시 SQL 검증 필요
  • 네트워크
    • DB 정보 전달 시 탈취 가능성, 악의적 서버 변조 가능

[송신 객체 생성]

  • 애플리케이션
    • 생성 객체 접근 권한 탈취 가능
    • 객체 생성 시 악의적인 코드 삽입 가능

[인터페이스 송신]

  • 애플리케이션 
    • 송신 시점에서 악의적인 사이트로 전달 가능(수신 변조)
  • 네트워크 
    • 송수신 네트워크 통신 내역 탈취 및 위변조

[인터페이스 수신]

  • 애플리케이션
    • 파싱 시 악의적 파서를 만들어 공격 가능
    • 수신 객체 접근 권한 탈취 가능

[데이터 처리 결과 전송]

  • 애플리케이션
    • 데이터 처리 객체 접근 권한 탈취 가능
    • 악의적 데이터 삽입 및 위변조 가능
  • DB
    • 프로시저에 악의적 입력값 삽입 가능(SQL Injection)
    • 에러처리 미흡으로 강제적 내부 오류 발생 시 미인지 가능
  • 네트워크
    • DB 정보 전달 시 탈취 가능성, 악의적으로 반환 값 변조 가능

2. 분석된 보안 취약점을 근거로 인터페이스 보안 기능 적용

분석된 인터페이스 기능 및 보안 취약점을 근거로 인터페이스에 보안 기능을 적용한다

①네트워크 구간에 대한 보안 기능 적용

인터페이스 송수신 간 중간자에 의한 데이터 탈취 위변조를 막기 위해서 네트워크 트래픽에 대한 암호화를 적용하고 전송 구간 암호화를 구현한다

▼네트워크 구간에 대한 보안 기능 적용 사례

[네트워크 계층 보안]

보안 요구사항보안 기능 적용
상대방 인증 적용IPSec, AH, IKE 프로토콜 적용
데이터 기밀성 보장 필요IPSec, ESP 프로토콜 적용

[응용 계층 보안]

보안 요구사항보안 기능 적용
서버만 공개키 인증서를 가지고 통신(위험 분산)SSL의 서버 인증 모드 운영
연결 단위 외 메시지 단위로도 인증 및 암호화 필요S-HTTP 적용하여 메시지 암호화

②애플리케이션 보안 기능 적용

  • 애플리케이션 구현 코드 보안 취약점을 보완하는 방향으로 보안 기능을 적용한다
  • 시큐어 코딩 가이드를 참조하여 보안 기능을 적용한다

▼애플리케이션 보안 기능 적용 사례

보안 요구사항보안 기능 적용
비인가자 접근 권한 관리-객체 접근 권한을 고려하여 비인가자 접근이 제한되도록 구현 -변수를 직접 처리할 수 없게 하고 접근 권한을 가진 함수(메소드)만 접근할 수 있게 구현
악의적 코드 삽입 금지-특수 문자를 통한 SQL 변조 시도 등 악의적인 공격 패턴을 입력하지 못하도록 사전 필터링 등의 기능을 통해 방지
악의적 시도 시 에러 처리-악의적 공격 시도 시 사용자 정의 예외 처리를 적용하고 에러 처리 내용이 외부에서 조회되지 않도록 권한 관리 강화

③데이터베이스 보안 기능 적용

  • 데이터베이스의 접근 권한 강화 및 데이터베이스 동작 객체(SQL, 프로시저, 트리거 등)의 보안 취약점 제거를 위해 보안 기능을 적용해야 한다
  • 민감 데이터의 경우에는 데이터 자체의 보안 방안(암호화, 익명화 등)도 고려한다

▼데이터베이스 보안 기능 적용 사례

보안 요구사항보안 기능 적용
데이터베이스 접근 권한데이터베이스, 스키마, 엔티티(테이블)의 접근 권한 관리 강화(접근 권한 객체 관리 수준은 성능과 보안성의 고려가 필요)
악의적 코드 삽입 금지프로시저, 트리거, 배치 등 데이터베이스 객체의 동작 시 악의적인 코드가 삽입되지 않도록 방어
민감 데이터 관리개인 정보나 업무상 민감 데이터는 암·복호화나 익명화 처리를 통해 관리
악의적 시도 시 에러 처리공격 패턴에 대한 사용자 정의 예외 처리를 적용하고 에러처리 내용이 외부에서 내용이 외부에서 조회되지 않도록 권한 관리 강화
profile
나 혼자 공부 기록
post-custom-banner

0개의 댓글