인터페이스 구현

뿌엑·2022년 4월 15일
0

정보처리기사

목록 보기
11/20

인터페이스 설계 확인

산출물

  • 인터페이스는 크게 사용자 인터페이스(User Interface)와 시스템 인터페이스로 구분된다.

인터페이스 설계서

  • 시스템 인터페이스 설계서는 이기종 시스템 및 컴포넌트 데이터 간 데이터 교환 및 처리를 위해 각 시스템의 교환되는 데이터, 업무, 송수신 주체 등이 정의된 문서이다.
  • 시스템의 인터페이스 현황 파악을 위해 인터페이스 목록 및 각 인터페이스의 상세 데이터 명세, 각 기능의 세부 인터페이스 정보를 정의한 문서이다.

시스템 인터페이스 목록 주요 항목

주요 항목설명
인터페이스 번호같은 종류의 인터페이스별로 부여된 번호
일련번호인터페이스 번호 내에서 부여된 순차적인 일련번호
인터페이스 ID인터페이스를 구분하기 위한 식별자, 명명 표준에 맞게 부여
인터페이스명인터페이스의 목적을 나타내는 이름
송신 시스템인터페이스를 통해 데이터를 전송하는 시스템
수신 시스템인터페이스를 통해 전송된 데이터를 이용하는 시스템
대내외 구분인터페이스가 기업 내부 시스템 간 또는 내·외부 시스템 간 발생하는지 여부
연계 방식웹 서비스, FTP, DB Link, Socket 등 아키텍처에서 정의한 인터페이스 방식
통신 유형동기, 비동기 등 아키텍처에서 정의한 통신 유형
처리 유형실시간, 배치, 지연 처리 등 인터페이스 처리 유형
처리 유형이 실시간인 경우 수시, 그 외 상세 주기를 표시(매일 오전 10시, 매시 10분)
주기인터페이스가 발생하는 주기
데이터 형식고정 길이, XML 등 인터페이스 항목의 데이터 포맷
수신 담당자 확인수신측 담당자의 확인여부를 나타내는 항목
관련 요구사항 ID해당 인터페이스와 관련된 요구사항 식별 정보

시스템 인터페이스 정의서

  • 각 인터페이스 번호당 인터페이스가 되는 데이터, 데이터 형식, 송수신 시스템의 정보 등을 구체화하는 문서이다.
  • 시스템 인터페이스 목록에 있는 각 인터페이스의 상세 정보를 보여준다.

상세 기능별 인터페이스 명세서

  • 상세 기능별 인터페이스 명세서는 데이터 송·수신 시스템 간 데이터 저장과 속성 등의 상세 내역을 포함한다.

외부 및 내부 모듈 연계를 위한 인터페이스 기능 식별

  • 기업 시스템이나 공공 서비스를 위한 시스템에서 인터페이스를 위해 외부 및 내부 모듈을 연계하는 대표적인 방법은 EAI 방식과 ESB 방식이 있다.
  1. EAI 방식
  • EAI는 기업에서 운영되는 서로 다른 플랫폼 및 애플리케이션 간 정보를 전달, 연계, 통합 가능하도록 하는 솔루션이다.
  • EAI를 사용하는 것으로 각 비즈니스 간 통합 및 연계성을 증대시켜 효율성을 높일 수 있으며 각 시스템 간 확장성을 높일 수 있다.
  1. ESB 방식
  • ESB는 기업에서 운영되는 서로 다른 플랫폼 및 애플리케이션들을 하나의 시스템으로 관리·운영할 수 있도록 서비스 중심의 통합을 지향하는 아키텍처이다.
  • ESB는 버스를 중심으로 각 프로토콜이 호환되도록 애플리케이션의 통합을 느슨한 결합 방식으로 지원한다.

외부 및 내부 모듈 간 인터페이스 데이터 표준 확인

  • 인터페이스 데이터 표준 확인은 상호 연계하려는 시스템 간 인터페이스의 데이터 형식과 표준을 정의하는 활동이다.
  • 인터페이스 데이터 전송시 인터페이스 데이터 형태가 동일한 경우는 그대로 전송하고, 인터페이스 데이터 형태가 동일하지 않은 경우는 데이터를 변환하여 전송한다.
  • 송·수신 시스템 간 인터페이스 데이터를 표준화하기 위해 송·수신 데이터 중 공통 영역을 추출하여 정의하는 경우, 한쪽 데이터를 변환하는 경우가 있다.

인터페이스 기능 구현

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

컴포넌트 명세서

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

인터페이스 명세서

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

인터페이스 기능 구현 기술

1. JSON(Javascript Object Notation)

  • JSON은 속성-값(Attribute-Value Pair) 쌍 혹은 키-값 쌍으로 이뤄진 데이터 오브젝트를 전달하기 위해 인간이 읽을 수 있는 텍스트를 사용하는 개방형 표준 포맷이다.
  • AJAX(Asynchronous JavaScript and XML)에서 자주 사용되고, XML(eXtensible Markup Language)을 대체하는 주요 데이터 포맷이다.
  • 언어 독립형 데이터 포맷으로 다양한 데이터 프로그래밍 언어에서 사용된다.
  • 사람이 읽고 쓰기 용이한 동시에 기계가 분석하고 생성하는데도 편리하다.

JSON 표현 자료형

자료형사례
숫자(number)- 기본 자료형의 수는 정수, 실수(고정소수점), 실수(부동소수점)로 표현된다.
- 74, 3.14, 3.4e+4
문자열(String)- 항상 큰 따옴표(" ")로 묶어야 하며, 그 안에는 유니코드 문자들이 나열된다.
- "ABCD", "1234"
배열(Array)- 배열은 대괄호[]로 표시한다. 배열의 각 요소는 기본 자료형이거나 배열, 객체이다.
- 각 요소들은 쉼표(,)로 구별되고 각 요소가 나타나는 순서에 의미가 있다.
- [10, {"v": 20}, [30, "마흔"]]
객체(Object)- 객체는 이름/값 쌍의 집합으로 중괄호{}를 사용한다.
- 이름은 문자열이기에 따옴표를 사용하며 값은 기본 자료형이라 따옴표를 쓰지 않을 수도 있다.
- 각 쌍들은 쉼표(,)로 구별되고, 각 쌍이 나오는 순서는 의미를 지니지 않는다.
- {"name2": 40, "name3": "값", "name1": true}

JSON 문법

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

예시

{
	"이름": "NEEDY GIRL OVERDOSE",
	"개발자": "냐루라",
    "ESD": "STEAM",
    "가격": 15000,
    "판매량": "누적 30만장"
    "ENDING": ["Do You Love Me?", "(Un)happy End World", "Rainbow Girl"]
}

도구

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

JSON 장·단점

  • 장점
    • XML보다 가볍고 빠름
    • XML은 모두 string이나 JSON은 string, number, object, array, Boolean 등 다양한 자료형 사용 가능
    • Javascript 코드 내에서 JSON 객체 접근이 간단함
  • 단점
    • 태그가 없어 가독성이 떨어짐
    • DTD 같은 것이 없어 데이터 형식이 잘못됐을시 구분하기 어려움

2. XML(Extensible Markup Language)

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

특징

  • 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 문서임을 명시한다.
  • <shop>은 XML 문서에 하나만 존재하는 root 요소이다.
  • <shot>은 그 아래 <smart device>란 두 자식요소를 지닌다.
  • 이후의 부모-자식 관계 요소도 마찬가지로 해석한다.
  • 위 XML 문서는 전자상가에서 판매하는 스마트 기기에 관한 정보를 지닌다.
  • XML 문서에서 요소의 이름만으로 데이터의 내용을 파악할 수 있다.

3. AJAX(Asynchronous Javascript And XML)

  • AJAX는 자바스크립트를 사용하여 웹 서버와 클라이언트 사이 비동기적으로 XML 데이터를 교환하고 조작하기 위한 웹 기술이다.
  • 브라우저가 지닌 XMLHttpRequest 객체를 사용해 전체 페이지를 새로 로드하지 않고 페이지의 일부 데이터만을 로드하는 기법이다.

주요 기술

주요 기술설명
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)- 마크업 언어가 실제 표시되는 방법을 기술하는 언어
- 운영체제나 사용 프로그램과 무관하게 글자 크기, 글자체, 줄 간격, 색상 등을 자유롭게 선택할 수 있는 스타일 시트

4. REST(Representational State Transfer)

  • REST는 웹과 같은 분산 하이퍼미디어 환경에서 자원의 존재/상태 정보를 표준화한 HTTP 메서드로 주고받는 웹 아키텍처이다.
  • REST 메서드
    • POST: Create(생성)
    • GET: Select(조회)
    • PUT: Update(수정)
    • DELETE: Delete(삭제)

인터페이스 보안 기능 적용

  1. 데이터 통신시 데이터 탈취 위협
  • 인터페이스를 위한 송·수신 시스템 간 데이터 통신시 스니핑을 통해 데이터 전송 내역을 감청하여 데이터를 탈취하는 위험이 존재한다.
  1. 데이터 통신시 데이터 위·변조 위협
  • 인터페이스를 위한 송·수신 시스템 간 데이터 통신시 전송 데이터에 대한 삽입, 삭제, 변조 공격을 통한 시스템 위협이 존재한다.

시큐어 코딩 가이드

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

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

구분설명예시
대칭 키 암호화 알고리즘암호화 알고리즘의 한 종류로 암·복호화에 같은 암호 키를 쓰는 알고리즘을 의미ARIA 128/192/256, SEED
비대칭 키 암호화 알고리즘공개키는 누구나 알 수 있지만, 그에 대응하는 비밀키는 키의 소유자만이 알 수 있도록 공개키와 비밀키를 사용하는 알고리즘RSA, ECC, ECDSA
해시 암호화 알고리즘해시값으로 원래 입력값을 찾아낼 수 없는 일방향성의 특성을 가진 알고리즘SHA-256/384/512, HAS-160

데이터베이스 암호화 기법

구분설명
API 방식- 애플리케이션 레벨에서 암호 모듈을 적용하는 애플리케이션 수정 방식
- 애플리케이션 서버에 암·복호화, 정책 관리, 키 관리 등의 부하 발생
Plug-in 방식- 암·복호화 모듈이 DB 서버에 설치된 방식
- DB 서버에 암·복호화, 정책 관리, 키 관리 등의 부하 발생
TDE 방식- DB 서버의 DBMS 커널이 자체적으로 암·복호화 기능을 수행하는 방식
- 내장된 암호화 기능(TDE: Transparent Data Encryption) 이용
Hybrid 방식- API 방식과 Plug-in 방식을 결합하는 방식
- DB 서버와 애플리케이션 서버로 부하 분산

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

보안 기술설명
IPSec(IP Security)- IP 계층(3계층)에서 무결성과 인증을 보장하는 인증 헤더(AH)와 기밀성을 보장하는 암호화(ESP)를 이용하여 양 종단 간 보안 서비를 제공하는 터널링 프로토콜
- 동작 모드는 전송 모드와 터널 모드가 있음
- 주요 프로토콜은 AH, ESP, IKE(키 교환)가 있고, IPSEC 정책엔 SPD, SAD가 있음
SSL/TLS- 전송계층(4계층)과 응용계층(7계층) 사이에서 클라이언트와 서버 간 웹 데이터 암호화(기밀성), 상호 인증 및 전송시 데이터 무결성을 보장하는 보안 프로토콜
- 인증 모드는 익명 모드, 서버인증 모드, 클라이언트-서버인증 모드가 있음
- IPSec과 달리 클라이언트와 서버 간 상호인증, 암호 방식에 대해 협상을 거치는 특징을 지님
- 대칭 키 암호화, 공개키 암호화, 일방향 해시함수, 메시지 인증코드 등 특정 암호 기술에 의존하지 않고 다양한 암호 기술 적용
- Https://~ 표시형식과 443 포트 이용
S-HTTP(Secure Hypertext Transfer Protocol)- S-HTTPS는 웹상에서 네트워크 트래픽을 암호화하는 주요 방법 중 하나로 클라이언트와 서버 간 전송되는 모든 메시지를 각각 암호화하여 전송
- S-HTTP에서 메시지 보호는 HTTP를 사용한 애플리케이션에 대해서만 가능
- S-HTTP 서버 접속시 shttp://~ 사용

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

  • 비인가자 접근 권한 관리
  • 악의적 코드 삽입 금지
  • 악의적 시도시 에러 처리

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

  • 데이터베이스 접근 권한
  • 악의적 코드 삽입 금지
  • 민감 데이터 관리
  • 악의적 시도시 에러 처리

인터페이스 구현 검증

  • 구현된 인터페이스의 동작을 검증하기 위해 인터페이스 구현 및 감시 도구를 통해 인터페이스 동작 상태를 검증하고 모니터링할 수 있다.

인터페이스 구현 검증 도구

  • xUnit
    • 자바(Junit), C++(Cppunit), .Net(Nunit) 등 다양한 언어를 지원하는 단위테스트 프레임워크
    • 소프트웨어의 함수나 클래스 같은 서로 다른 구성원소를 테스트할 수 있게 하는 도구
  • STAF
    • 서비스 호출, 컴포넌트 재사용 등 다양한 환경을 지원하는 테스트 프레임워크
    • 각 테스트 대상 분산 환경에 데몬을 사용하여 테스트 대상 프로그램을 통해 테스트를 수행하고, 통합하며 자동화하는 검증 도구
  • FitNesse
    • 웹 기반 테스트 케이스 설계/실행/결과 확인 등을 지원하는 테스트 프레임워크
    • 사용자가 테스트 케이스 테이블을 작성하면 자동으로 원하는 값에 대해 테스트할 수 있음
  • NTAF
    • FitNesse의 장점인 협업 기능과 STAF의 장점인 재사용 및 확장성을 통합한 NHN(Naver)의 테스트 자동화 프레임워크
  • Selenium
    • 다양한 브라우저 지원 및 개발언어를 지원하는 웹 애플리케이션 테스트 프레임워크
    • 테스트 스크립트 언어를 학습할 필요없이 기능 테스트를 만들기 위한 도구 제공
  • watir
    • 루비(Ruby) 기반 웹 애플리케이션 테스트 프레임워크
    • 모든 언어 기반의 웹 애플리케이션 테스트와 브라우저 호환성 테스팅 가능

인터페이스 감시 도구

  • 인터페이스의 동작이 잘 진행되는지 지속적으로 확인하기 위해 애플리케이션 모니터링 툴(APM; Application Performance Management)을 사용하여 동작 상태를 감시할 수 있다.

    감시 도구의 종류

  • 스카우터(SCOUTER)
    • 애플리케이션에 대한 모니터링 및 DB Agent를 통해 오픈소스 DB 모니터링 기능, 인터페이스 감시 기능 제공
  • 제니퍼(Jennifer)
    • 애플리케이션의 개발부터 테스트, 오픈, 운영, 안정화까지 전 생애주기 단계 동안 성능을 모니터링하고 분석하는 APM 소프트웨어

0개의 댓글