[네트워크 보안] Chapter 05. 데이터베이스(DB) 보안
5.1 DB 보안 개요
1. DB(Database) 보안의 개념
- DB 보안은 DB에 저장되어 있는 데이터에 대한 인가되지 않은 접근, 의도적인 데이터의 변경이나 파괴 및 데이터의 일관성을 저해하는 우발적인 사고 등으로부터 데이터 혹은 DB를 보호하는 것
- DB 보안의 목적은 DB에 저장된 데이터를 공개·노출, 변조·파괴·훼손, 지체·재난 등의 위협으로부터 보호하여 기밀성, 무결성, 가용성 등을 확보하는 것
- 즉, 데이터가 생성되어 처리·유통 과정을 거쳐 소멸 또는 폐기되기까지 생명중기 전반에 걸쳐 기밀성, 무결성, 가용성 등이 확보되어야 한다
2. DB 보안 요구사항
- 권한을 부여받은 사용자만 접근 허용
- 정당하게 권한을 부여받은 사용자에게만 DB 접근을 허용한다
- DB에서의 접근 제어는 운영체제가 관리하는 파일에서보다 훨씬 복잡하여 레코드, 속성 값들과 같은 더 작은 정보 단위의 객체에까지 적용될 수 있다
- 추론방지
- 추론(inference)은 보통의 일반적인 데이터로부터 기밀 정보를 획득할 수 있는 가능성을 의미한다
- 추론 문제는 사용자가 통계적인 데이터 값으로부터 개별적인 데이터 항목에 대한 정보를 추적하지 못하도록 하여야 하는 통계 DB에 많은 영향을 끼친다
- DB의 무결성 보장
- 데이터의 내용을 수정할 수 있는 인가되지 않은 접근, 저장 데이터를 손상시킬 수 있는 시스템의 오류, 고장 등으로부터 DB를 보호하여야 한다
- 데이터의 논리적 일관성 보장
- 트랜잭션의 병행 처리 수행 동안에 DB 내의 데이터에 대한 논리적 일관성을 보장하여야 한다. DBMS의 병행수행 관리자(concurrency manager)는 트랜잭션의 직렬성(serializability)을 보장한다. 임의의 트랜잭션에 대한 병행수행의 결과가 직렬 수행의 결과와 동일하면 트랜잭션의 수행은 직렬 가능하다고 한다
- 감사 기능
- 다양한 응용 처리에서 DB에 대한 모든 접근의 감사 기록을 생성하여야 한다
- 사용자 인증
- DBMS는 운영체제보다 엄격한 사용자 인증을 필요로 한다
- DBMS는 별도의 사용자 인증 절차를 보유하여야 한다
- 제한(confinement)
- 제한은 시스템 프로그램 간의 바람직하지 못한 정보 전송을 방지하는 것이다. 이러한 정보 전송은 은닉 채널을 통하여 발생한다
3. 데이터 무결성 규칙의 종류
데이터의 무결성은 데이터의 정확성, 일관성, 유효성이 유지되는 것을 말한다
- 도메인 무결성 규칙(Domain Integrity Rule)
- 도메인 무결성은 테이블에 존재하는 필드의 무결성을 보장하기 위한 것
- 필드의 타입, NULL값의 허용 등에 대한 사항을 정의하고, 올바른 데이터가 입력되었는지를 확인하는 것이다
- 예를 들어, 주민등록번호 필드에 알파벳이 입력되는 경우는 도메인 무결성이 깨지는 경우라고 볼 수 있다
- 개체 무결성 규칙(Entity Integrity Rule)
- 모든 테이블이 기본 키(primary key)로 선택된 필드(column)을 가져야 한다
- 기본 키로 선택된 필드는 고유한 값을 가져야 하며, null 값은 허용하지 않는다
- 참조 무결성 규칙(Referential Integrity Rules)
- 참조 관계에 있는 두 테이블의 데이터가 항상 일관된 값을 갖도록 유지되는 것
- 참조 관계에 있는 두 테이블의 데이터가 항상 일관된 값을 갖도록 유지되는 것
- 트리거(Trigger): 데이터 조작 언어(DML)의 데이터 상태의 관리를 자동화하는 데 사용된다. 트리거를 사용하여 데이터 작업 제한, 작업 기록, 변경 작업 감사 등을 할 수 있다
- 스키마(Schema)
- DB에서 자료의 구조, 자료의 표현 방법, 자료 간의 관계를 형식 언어로 정의한 구조
- ①개념 스키마(Conceptual Schema): 모든 응용시스템과 사용자들이 필요로 하는 데이터를 통합한 조직 전체의 데이터베이스 구조를 논리적으로 정의
- ②외부 스키마(External Schema): 실세계에 존재하는 데이터들을 어떤 형식, 구조, 배치 화면을 통해 사용자에게 보여줄 것인가를 정의
- ③내부 스키마(Internal Schema): 데이터베이스의 물리적 저장 구조를 정의
- 디스크에는 어떤 구조로 저장할 것인가
- 데이터의 실제 저장 방법을 기술
- SQL(Structured Query Language)
- 개념
- SQL은 관계형 데이터베이스 관리 시스템(RDBMS)의 데이터를 관리하기 위해 설계된 특수 목적의 프로그래밍 언어이다
- 명령어의 종류
데이터베이스 언어 SQL 문법의 종류는 다음 세 가지 명령어 등이 있다- ①데이터 정의 언어(DDL, Data Definition Language): 테이블의 생성 및 삭제, 테이블 구조 변경 등을 위해 사용
- ②데이터 조작 언어(DML, Data Manipulation Language): 데이터의 검색 또는 삽입, 삭제, 갱신을 위해 사용
- ③데이터 제어 언어(DCL, Data Control Language): 데이터의 접근권한 설정을 위해 사용
- 개념
5.2 DB 보안 주요 위협
- 일반적인 DB 위협
- DB 보안 위협으로는 SQL Injection, 악성 프로그램 삽입(웹 쉘등) 등을 통해 외부의 인가되지 않은 사용자가 악의적인 목적을 가지고 DB의 중요 정보를 유출하는 것이 있다
- 사용자에 대한 식별 및 인증 위협
- 취약한 인증 수준과 식별되기 쉬운 비밀번호의 사용
- 데이터 유출 위협
- 암호화되지 않은 데이터
- 안전성이 확인되지 않은 암호 모듈을 사용하는 경우
- 권한 오·남용 위협
- DB사용자의 업무 내용이나 보안 수준에 맞는 적절한 권한을 부여해야함
- 꼭 필요한 데이터에만 접근이 가능하도록 접근을 제한해야하는데, 그렇지 않은 경우 허용된 범위를 넘어서는 인가되지 않은 작업을 수행하거나 또는 중요한 데이터를 유출 또는 데이터 위·변조를 할 수 있다
- 암호 모듈 오용 위협
- 안전성이 검증되지 않은 암호 모듈을 사용하거나 ECB와 같은 적합하지 않은 암호 모드를 사용하는 경우
- 암·복호화키 및 마스터 키 노출 위협
- 세션키의 사용 및 마스터 키의 노출 위험 제거
- 프로젝트 수행과정에서의 DB 접근 허용 위협
- 프로젝트 수행과정에서 프로젝트에 참여한 외부업체에 자사의 데이터에 접근할 수 있는 권한을 부여함으로써 데이터 유출이 발생
- 운영과정에서의 권한 관리 소홀로 인한 침해 발생 위협
- 개발자에게 DBA 권한을 설정함으로써 개발자가 직접 DB에 접속하여 작업 및 정보 유출이 가능
- 접근통제 우회
- 공급자에 의해 출하 시 설정되는 default 계정 또는 단순계정 등 ID와 패스워드가 동일한 계정일 경우 암호 추측 공격, 사전공격 등을 통해 계정을 확인
- 잘못된 사용자 권한 설정으로 부적절한 데이터 노출 및 외부 유출이 발생
5.3 DB 접근제어 및 암호화
1. DB 접근 통제
- 사용자가 DBMS에 로그인하거나 SQL을 수행하려고 할 때 DB에 접근하는 네트워크 패킷을 분석하여 미리 정의된 보안 규칙에 따라 권한 여부를 판단하여 통제함
- 에이전트 방식, 게이트웨이 방식, 스니핑(미러링) 방식, 하이브리드 방식 등이 있음
- 에이전트 방식
- 에이전트 방식은 DB 서버에 접근제어 솔루션을 설치하는 방식
- 에이전트 방식은 DB 서버에 접근제어 솔루션을 설치하는 방식
- 게이트웨이 방식
- 게이트웨이(Gateway) 방식은 DBMS에 접속하기 위한 통로를 별도로 설치한 후 DB 사용자가 해당 통로를 통해서만 접근하도록 하는 방식
- 프록시(Proxy) 게이트웨이 방식과 인라인(In Line) 게이트웨이 방식으로 구분
- 스니핑 방식
- DB 사용자와 DBMS 서버 간의 주고받는 패킷을 복사하여 스니핑 서버로 전달하여 로깅하고 분석하는 방식으로 사전 접근 제어는 가능하지 않음
- DB 사용자와 DBMS 서버 간의 주고받는 패킷을 복사하여 스니핑 서버로 전달하여 로깅하고 분석하는 방식으로 사전 접근 제어는 가능하지 않음
2. DB 암호화
- DB의 데이터를 암호화할 수 있는 방식은 일반저긍로 컬럼 암호화 방식과 블록 암호화 방식(디스크 전체를 암호화)으로 나눌 수 있다
- 컬럼 암호화 방식은 암·복호화 위치에 따라 Plug-In, API 및 Hybrid 등의 방식이 있다
- TDE(Transparent Data Encryption) 방식
- 응용 프로그램의 수정 없이 DB 내부에서 컬럼, 테이블스페이스 레벨의 암호화를 수행
- 파일 암호화 방식
- 파일을 통째로 암호화하는 방식으로 DBMS 및 OS에 대한 의존도가 높고, DB 파일 등을 암호화
- 파일을 통째로 암호화하는 방식으로 DBMS 및 OS에 대한 의존도가 높고, DB 파일 등을 암호화
3. DB 마스킹(Masking)
- 고객, 금융, 또는 회사 기밀 데이터의 길이, 유형, 형식과 같은 속성을 유지한 채 데이터를 익명으로 생성하는 행위
- 테스트 환경에서 개발자나 공급업체에서 기밀 데이터를 이용하려 할 때 데이터를 보호하거나 개인 신원 정보를 제 3자에게 공개하지 않고 고객 데이터를 공유해야 할 때 유용함
댓글남기기