[정처기 필기] 「2」 | 인터페이스 구현 - (5.2) 인터페이스 구현, 보안, 구현 검증
[정처기 필기] 「2」 | 인터페이스 구현 - (5.2) 인터페이스 구현, 보안, 구현 검증
「1」 소프트웨어 설계
> 「2」 소프트웨어 개발
- 데이터 입 / 출력 구현, 통합 구현, 제품 소프트웨어 패키징, 애플리케이션 테스트 관리, > 인터페이스 구현
「3」 데이터베이스 구축
「4」 프로그래밍 언어 활용
「5」 정보시스템 구축 관리
1 모듈 간 공통 기능 및 데이터 인터페이스 확인
2 모듈 연계를 위한 인터페이스 기능 식별
3 모듈 간 인터페이스 데이터 표준 확인
> 4 인터페이스 구현
> 5 인터페이스 보안
> 6 인터페이스 구현 검증
3. 인터페이스 구현
인터페이스 구현
송 / 수신 시스템 간의 데이터 교환 / 처리를 실현해 주는 작업
- 정의된 인터페이스 기능 구현 > 구현 방법 / 범위 고려하여 인터페이스 구현 방법을 분석 > 인터페이스 구현
- 데이터 통신을 이용한 방법, 인터페이스 엔티티 이용한 방법
데이터 통신을 이용한 인터페이스 구현
애플리케이션 영역에서 인터페이스 형식에 맞춘 데이터 포맷을 인터페이스 대상으로 전송하고 이를 수신 측에서 파싱하여 해석
- JSON, XML 형식의 데이터 포맷을 사용하여 인터페이스 구현
- JSON을 이용한 인터페이스 구현 순서
1 인터페이스 객체를 생성할 데이터 선택
2 JSON 이용하여 인터페이스 객체 생성
3 송신 측에서 AJAX 기술 등 이용하여 수신 측으로 전송
4 수신 측에서 파싱 후 처리하고 송신 측에 처리 결과 보냄
>JSON / XML / AJAX<
JSON(JavaScript Object Notation)
: 속성-값(Attribute-Value) 쌍으로 이뤄진 데이터 객체 전달을 위해 읽을 수 있는 텍스트 사용, 개방형 표준 포맷
: 웹, 컴퓨터 프로그램 사이 용량이 적은 데이터를 교환, 비동기 처리에 사용되는 AJAX에서 XML로 대체
XML(eXtensible Markup Language)
: 특수한 목적을 갖는 마크업 언어를 만드는 데 사용, 다목적 마크업 언어
: HTML 문법이 상호 호환적이지 못하는 문제와 SGML의 복잡함 해결하기 위해 개발
AJAX(Asynchronous JavaScript and XML)
: 자바스크립트 등을 이용하여 클라이언트와 서버 간 XML 데이터를 교환 / 제어하여 사용자가 웹 페이지와 자유롭게 상호작용 가능, 비동기 통신 기술
인터페이스 엔티티를 이용한 인터페이스 구현
인터페이스가 필요한 시스템 사이에 별도의 인터페이스 엔티티를 두어 상호 연계하는 방식
- 인터페이스 테이블을 엔티티로 활용
- 인터페이스 테이블은 한 개 또는 송 / 수신 인터페이스 테이블을 각각 두어 활용
- 송 / 수신 인터페이스 테이블의 구조는 같지만, 상황에 따라 서로 다르게 설계할 수 도 있음
- 인터페이스 테이블을 이용한 인터페이스 구현 순서
1 인터페이스 이벤트 발생 시 인터페이스 테이블에 인터페이스 데이터 기록
2 송신 측 인터페이스 테이블에서 정해진 주기에 따라 인터페이스 데이터를 전송
3 수신 측 인터페이스 테이블에 인터페이스 데이터가 입력되면 정해진 주기에 따라 인터페이스 데이터 읽음
4 사전에 정의된 데이터 트랜잭션 수행
4. 인터페이스 보안
인터페이스 보안의 개요
- 인터페이스는 시스템 모듈 간 통신 / 정보 교환의 통로로 보안 취약점이 될 수도 있음
- 보안성 향상을 위해 인터페이스 보안 취약점을 분석 후 보안 기능을 적용
인터페이스 보안 취약점 분석
- 인터페이스 기능이 수행되는 송 / 수신 영역의 구현 기술 / 특징의 구현 현황 확인, 보안 취약점 있는지 분석
- 확인된 인터페이스 기능을 기반으로 송신 데이터 선택, 송신 객체 생성, 인터페이스 송 / 수신, 데이터 처리 결과 전송 등 보안 취약점을 시나리오 형태로 작성
인터페이스 보안 기능 적용
분석한 인터페이스 기능, 보안 취약점을 기반으로 인터페이스 보안 기능을 적용
네트워크 영역
: 인터페이스 송 / 수신 간 스니핑(Sniffing) 등 이용한 데이터 탈취 / 변조 위협 방지하기 위해 네트워크 트래픽에 암호화 설정
: 암호화는 인터페이스 아키텍처에 따라 IPSec, SSL, S-HTTP
: IPSec(IP Security) - 암호화, 복호화 가능한 양방향 암호방식, 네트워크 계층에서 변조 방지 / 은닉 기능 제공
: SSL(Secure Sockets Layer) - TCP/IP 계층, 애플리케이션 계층 간 인증 / 암호화 / 무결성 보장
: S-HTTP(Secure Hypertext Transfer Protocol) - 클라이언트, 서버 간 전송되는 모든 메시지를 암호화
애플리케이션 영역
: 소프트웨어 개발 보안 가이드를 참조하여 코드 상 보안 취약점을 보완하는 방향
데이터베이스 영역
: 데이터베이스, 스키마, 엔티티의 접근 권한, 프로시저(Procedure), 트리거(Trigger) 등 데이터베이스 동작 객체의 보안 취약점에 보안 기능 적용
: 개인 정보, 민감한 데이터의 경우 암호화, 익명화 등 데이터 자체의 보안 방안
>스니핑(Sniffing) / 소프트웨어 개발 보안<
스니핑
: 네트워크 중간에서 남의 패킷 정보를 도청, 수동적 공격에 해당, 네트워크 내 패킷은 대부분 암호화되어있지 않아 스니핑에 당함
소프트웨어 개발 보안
: 소스 코드에 존재할 수 있는 보안 취약점 발견, 제어, 보안을 고려한 기능 설계 / 구현 등 개발 과정에서 지켜야 할 보안 활동, == 시큐어 코딩(Secure Coding)
데이터 무결성 검사 도구
- 시스템 파일의 변경 유무 확인하고, 변경되면 관리자에게 알림
- 크래커, 허가받지 않은 내부 사용자들이 시스템에 침입할 때 백도어 만들거나 파일 변경하여 흔적을 감추는 데, 이를 감지
- 해시 함수를 이용하여 현재 파일 / 디렉터리 상태를 DB에 저장 후 감시, 현재 상태와 DB 상태가 달라지면 관리자에게 알림
- Tripwire, AIDE, Samhain, Claymore, Slipwire, Fcheck
5. 인터페이스 구현 검증
인터페이스 구현 검증의 개요
인터페이스가 정상적으로 문제없이 작동하는지 확인
- 인터페이스의 입 / 출력값이 예상과 일치하는지 확인하는 검증 도구, 인터페이스가 외부 시스템과 연결 모듈 사이 정상적으로 동작하는지 확인하는 감시 도구 이용하여 인터페이스 동작 상태 확인
인터페이스 구현 검증 도구
- 인터페이스 단위 기능, 시나리오 등 기반으로 하는 통합 테스트가 필요
- 통합 테스트는 다음의 테스트 자동화 도구를 이용하여 수행
xUnit
: 같은 테스트 코드를 여러 번 작성하지 않게 도와주고, 예상 결과를 기억할 필요가 없게 하는 단위 테스트 프레임워크
: Smlltalk에 처음 적용되어 SUnit이었고, Java용 JUnit, C++용 CppUnit, .NET용 NUnit, Http용 HttpUnit 등 xUnit으로 통칭
STAF
: 서비스 호출 / 컴포넌트 재사용 등 다양한 환경 지원하는 테스트 프레임워크
: 크로스 플랫폼, 분산 소프트웨어 테스트 환경을 조성하도록 지원
: 분산 소프트웨어 경우, 각 분산 환경에 설치된 데몬(Daemon, 사용자 개입 없이 특정 상태에 자동 동작)이 테스트에 대한 응답을 대신하고, 테스트 완료되면 통합, 자동화하여 프로그램 완성
FitNesse
: 웹 기반 테스트케이스 설계, 실행, 결과 확인 등 지원하는 테스트 프레임워크
NTAF
: FitNesse의 장점인 협업 기능, STAF 장점인 재사용 / 확장성을 통합한 NHN(Naver)의 테스트 자동화 프레임워크
Selenium
: 다양한 브라우저 / 개발 언어를 지원, 웹 애플리케이션 테스트 프레임워크
watir
: Ruby를 사용, 애플리케이션 테스트 프레임워크
인터페이스 구현 감시 도구
- 인터페이스 동작 상태는 APM 사용하여 감시
- 애플리케이션 성능 관리 도구로 데이터베이스와 웹 애플리케이션의 트랜잭션, 변수값, 호출 함수, 로그 / 시스템 부하 등 종합적인 정보를 조회하고 분석
- 스카우터(Scouter), 제니퍼(Jennifer)
>APM(Application Performance Management / Monitoring)<
애플리케이션의 성능 관리를 위해 접속자, 자원 현황, 트랜잭션 수행 내역, 장애 진단 등 모니터링 기능 제공
리소스 방식 : Nagios, Zabbix, Cacti
엔드 투 앤드 방식 : VisualVM, 제니퍼, 스카우터
인터페이스 구현 검증 도구 / 감시 도구 선택
- 구현된 인터페이스 명세서의 세부 기능을 참조하여 정상적 동작 여부를 확인하기 위한 검증 도구, 감시 도구 요건 분석
- 시장 / 설루션 조사를 통해 필요한 검증 도구, 감시 도구 선택
인터페이스 구현 검증 확인
- 검증 도구로 외부 시스템과 연계 모듈의 동작 상태 확인
- 최초 입력값, 입력값에 의해 선택되는 데이터, 생성되는 객체의 데이터 등 예상되는 결과값과 실제 검증값이 동일한지 비교
- 각 단계별 오류처리도 적절히 구현됐는지 확인
인터페이스 구현 감시 확인
- 감시 도구로 외부 시스템과 연계 모듈이 정상적으로 동작하는지 확인
- 인터페이스 동작 여부, 에러 발생 여부 등 제공해 주는 리포트를 활용
출처 | <시나공> 정보처리기사 필기 2024 기본서 (길벗알앤디)