1. 데이터베이스 기본 개념
1) 데이터베이스 정의
통합된 데이터: 똑같은 데이터가 중복되지 않았음을 의미한다.
저장된 데이터: 컴퓨터가 접근할 수있는 저장매체에 저장된 데이터 집합이다.
운영 데이터: 고유의 기능을 수행하기 위해 반드시 유지해야할 데이터이다.
공용 데이터: 어려 응용프로그램이 공동으로 소유, 유지 가능한 데이터이다.
2) 키의 유형
후보키: 유일성, 최소성을 만족하는 키 <학번>, <이름, 학과>
슈퍼키: 유일성을 만족하는 키 <학번, 이름, 학과>
기본키: 여러개의 후보키 중 하나 선정한 키
대체키: 선정되지 않은 후보키 <학번> (기본키) <이름, 학과> (대체키)
외래키: 다른 릴레이션의 기본키
3) 무결성의 종류
키 무결성: 한 릴레이션에 같은 키 값을 가진 튜플이 있어서는 안된다.
개체 무결성: 기본키에 속해있는 속성이 NULL을 가질 수 없다는 제약조건이다.
참조 무결성: 외래키는 NULL값 이거나 참조 릴레이션에 있는 기본키와 같아야 한다.
4) 트랜잭션
하나의 논리적 기능을 수행하기 위한 작업단위이다.(일련의 데이터베이스 연산)
4.1) 트랜잭션의 ACID 성질
원자성: 모든 연산은 한꺼번에 완료되어야 하고 그렇지 못한 경우에는 한꺼번에 취소 되어야 한다.
일관성: 트랜잭션이 성공적으로 완료되면 일관성있는 데이터베이스 상태로 변환된다. 단 프로그램 실행중에 일관성 위반은 상관 없다.
격리성: 트랜잭션 실행중에 있는 연산의 중간 결과는 다른 트랜잭션이 접근하지 못한다.
영속성: 실행을 성공하면 그결과는 영속적이다.
2. 데이터베이스 보안
1) 데이터베이스 보안 정의
데이터베이스 보안을 강화하면 공격자가 내부 네트워크에 들어와서 데이터베이스가 유출되었다 하더라도 핵심 자산인 데이터베이스는 암호화 되어있기 때문에 볼 수 없다.
사용자 인증, 접근통제, 데이터베이스 무결성 보장, 감사, 비밀 데이터의 보호 및 관리 등이 포함된다.
2) 데이터베이스 보안 위협
우연히 또는 의도적으로 데이터에 접근함으로써 발생될 수있는 정보의 부적절한 유출,데이터 처리 및 수정으로부터 야기되는 데이터 무결성 손상이 있다.
사용자가 데이터 접근 또는 자원 사용하지 못하도록 하는 서비스 거부 공격이 있다.
2.1) 애그리게이션(Aggregation, 집성)
개별적인 여러 소스로부터 민감하지 않은 정보를 수집, 조합하여 민감한 정보를 생성한다.
낮은 보안 등급의 정보조각을 조합하여 높은 등급의 정보를 알아내는 방식이다.
특정 정보에 접근할 수 있는 허가 또는 권한은 없지만 이런 정보의 구성요소에 접근 권한을 있을 경우 발생한다.
ex) 각 회사의 영업 실적을 조합해서 회사의 총매출을 알아낸다.
2.2) 추론(inference)
일반적인 데이터로부터 비밀정보를 획득할 수 있는 가능성을 의미한다.
정보가 명시적 또는 암시적으로 보다 낮은 보호 수준의 객체로 이동하는객체를 검사한다.
데이터베이스 설계 시 추론 탐지: 데이터 베이스 구조변경, 접근 제어 방식 변경으로 추론 채널을 제거함으로써 추론을 방지한다.
쿼리 타임 시 추론 탐지: 쿼리처리 중 추론채널 위반을 제거하려는 시도, 추론 채널이 탐지되면 쿼리를 거부하거나 변경한다.
3) 보안 요구사항
부적절한 접근 방지: 승인된 사용자에게만 권한부여 및 접근 요청에 대한 정당성 여부를 검사해야한다.
추론 방지: 통계적인 데이터 값으로부터 개별적인 데이터 항목에 대한 정보를 추적하지 못하도록 해야한다.
무결성 보장: 인가되지 않은 접근, 시스템 오류, 고장, 파업 등으로부터 데이터베이스를 보호해야한다.
운영적 무결성 보장: 트랜젝션 병행 처리 동안에 데이터에 대한 논리적 일관성을 보장해야한다.
의미적 무결성 보장: 데이터에 대한 허용 값을 통제함으로써 데이터의 논리적 일관성을 보장해야한다.
감사 기능: 모든 접근이 감사 기록을 생성해야한다.
사용자 인증: OS 사용자 인증보다 엄격한 인증이 필요하다.
기밀성 보장: 중요 데이터 기밀성 보호 및 인가된 사용자에게만 접근을 허용해야 한다.
4) 보안 관리
노출 및 기능 최소화
데이터베이스 관리자 최소화
guest 계정 사용 금지
방화벽 구축 및 운영
로컬 계정을 사용
3. 데이터베이스 보안 통제
가장 강력하고 포괄적인 대책은 관리적 보안 대책이다. (그 이외에도 물리적, 기술적 보안대책이 존재한다.)
1) 데이터베이스 보안제어
흐름제어, 추론제어, 접근제어 + 암호기법(기밀성 보장)
1.1) 흐름제어
객체의 X의 값을 읽어 이를 객체 Y에 기록할 때 객체 X와 Y간 정보흐름이 발생한다.
낮은 보호수준의 객체로 이동하는 것을 검사하여 접근가능한 객체 간의 정보흐름을 조정하는것이 흐름제어이다.
1.2) 추론제어
데이터 사용자가 읽은 데이터 항목 X가 X에 대한 함수 Y=f(X)인 데이터 Y를 얻기위해 사용된다면 추론이 발생한다.
해당 추론을 통해 간접적인 데이터 노출로부터 데이터를 보호하는것이다.
방법: 비밀정보 은폐, 사용자에게 일관성 없는 질의결과를 제공하여 통계적 추론공격 방지
1.3) 접근제어
인증된 사용자에게 허가된 범위 내에서 시스템 내부의 정보에 대한 접근을 허용하는 기술적인 방법을 말한다.
주체는 객체나 객체 내의 데이터에 대한 접근을 요청하는 능동적인 개체를 말하고 객체는 접근대상이 될 수 있는 동적인 개체 혹은 행위가 일어날 아이템을 말한다.
데이터베이스 객체(레코드, 필드)는 상호 관련되어 있어 사용자는 하나의 데이터 요소를 읽고서 다른 데이터의 내용을 결정할 수 있으며, 객체의 크기도 상이하다.
위협 요인: 집성, 추론
보안 유형: 흐름제어, 추론제어, 접근제어 + 암호기법
2) DBMS 보안 통제
2.1) SQL 기반의 접근 통제 (GRANT/REVOKE 접근 통제)
GRANT, REVOKE문은 DBA가 권한을 가지고 있고, 다른 사용자에게 권한 부여 및 회수할때 사용된다.
2.2) 명령어 예시
GRANT 권한 ON 데이터 객체 TO 사용자 [WITH GRANT OPTION]; REVOKE [GRANT OPTION FOR] 권한 ON 데이터 객체 FROM 사용자 [CASCADE, RESRTRICT]; |
권한: INSERT, SELECT, UPDATE, DELETE, ALTER 등
GRANT OPTION FOR: 다른 사용자에게 권한을 부여할 수 있는 권한 자체를 취소한다.
CASCADE: 권한을 해제할 때 해당 사용자가 다른 사용자에게 부여한 권한도 해제한다.
RESTRICT: 권한을 해제할 때 해당 사용자가 다른 사용자에게 부여한 권한이 있을때 권한 보존 및 에러가 발생한다.
2.2) VIEW 기반의 접근 통제
VIEW는 하나 이상의 기본 테이블로부터 유도되어 만들어지는 가상테이블이고 데이터 논리적 독립성을 제공하며, 자료에 대란 접근제어로 보안을 제공한다.
전체 데이터베이스 중 자신이 허가 받은 사용자 관점만 볼 수 있도록 한정한다.
사용자나 어플리케이션이 VIEW를 이용하여 특정 행과 열에만 접근하도록 한다.
2.3) DBMS 보안 점검 사항
디폴트 계정 패스워드 변경, DB 패스워드 규칙 강화, DBA 권한의 제한, 보안 패치 적용, 사용하지 않는 계정 삭제, 개발자 IP 접근 제한, 제품별 취약점 제거, 데이터의 암호화
3) 데이터베이스 보안
데이터베이스에 다중 수준 보안을 추가하면 접근 제어 기능 및 데이터베이스 자체의 설계에서 복잡도가 증가한다. 세분화 정도에 따라 다중 수준보안을 적용하고 추론을 방지하는 노력은 세분화 정도에 달려있다.
컬럼 암호화
Plug-In: DB 서버 내
API: 어플리케이션 서버 내
Hybrid: SQL → API, 나머지 → Plug-In
블록 암호화
TDE: 데이터 파일 저장 시 암호화 데이터를 메모리로 가져올 때 복호화 (커널에서 처리)
파일 암호화: 비정형 데이터에 대한 암호화 가능
3.1) Plug-In 방식
암 복호화 모듈을 DB서버 내에 설치하고 이곳에서 암 복호화를 수행하는 구조이다.
성능에 대한 민감성이 낮은 시스템의 경우 저렴한 비용으로 구축할 수 있다.
암호화 컬럼 사이즈 증가, 성능 이슈가 있는 경우 일부 애플리케이션을 수정하여 적용이 가능하다.
장점: 적용성이 뛰어남, 저렴함
단점: 암 복호화 수행 시 서버 CPU를 사용하므로 부하가 발생할 수 있음
3.2) API 방식
암 복호화 모듈을 애플리케이션 서버 내에 설치하고 이곳에서 암 복호화를 수행하는 구조이다.
차세대 시스템 개방 등 기존 애플리케이션에 대한 전면적인 수정이 가능한 경우 적용하면 효과적이다.
3.3) Hybrid 방식
SQL은 API방식을 적용하여 최적의 성능을 보장하고 나머지 대부분은 Pluh-In 방식을 사용하여 애플리케이션 수정을 최소하 하는 방법이다.
3.4) TDE 방식
DB내부에서 데이터 파일 저장 시 암호화하고, 파일에 저장된 내용을 메모리 영역으로 가져올때 DBMS에 의해 자동 복호화 된다.
DBMS Kernel 레벨에서 처리되므로 애플리케이션에 대한 수정이 없다.
3.5) 파일 암호화 방식
OS상에서 확인이 가능한 개체인 파일을 암호화하는 방식이다.
직접적으로 암호화를 수행하므로 DB의 데이터 파일 뿐만아니라 이미지, 음성 등 비정형 데이터에 대한 암호화가 가능하다.
애플리케이션 수정이 없다.
4. DBMS 보안 관리
1) xp_cmdshell 개념
xp_cmdshell은 데이터베이스를 통해 운영체제의 명령을 실행하고, 파일 등에 접근할 수 있도록 MS-SQL에서 지원하는 확장 프로시저이다.
관리자 계정(sa)에 의해 실행되는데 패스워드가 취약할 경우 데이터베이스 권한 및 운영체제에 대한 접근 권한이 노출된다.
2) 인증
2.1) Windows 인증 모드
Windows에 등록된 로그인 계정으로 SQL Server에 별다른 로그인 절차 없이 접속하는 모드이다.
트러스트 연결
혼합 인증보다 안정성이 높다.
윈도우 인증 모드가 적용되어 있을 경우 SQL 서버 인증을 사용할 수 없다.
2.2) 혼합 인증 모드
Windows 인증을 선택 시 Windows에 로그인한 계정으로 인증되고, SQL 인증 선택 시 SQL Server에 별도의 로그인 아이디를 지정하여 로그인 한다.
트러스트 되지 않은 연결
5. DBMS 장애 대응
1) checkpoint
로그를 그대로 유지하면서 일정한 시간 간격으로 만들어 놓은것이다.
Time interval, Operator Action, Log Type에 대한 레코드 기록이 있다.
숫자와 체크 시간 간격에 유의해야한다.
1.1) 장점
특정 데이터베이스의 복구 시간을 줄일 수 있다.
IO 비용을 고려하여 checkpoint를 조절할 수 있다.
1.2) 단점
매우바쁜 OLTP환경에서 성능 충돌이 발생할 수 있다.
checkpoint 숫자가 지나치게 많아지면 잦은 IO로 시스템 성능이 저하될 수 있다.
'Certification Study > 정보보안기사' 카테고리의 다른 글
[정보보안기사] 39. 정보보호 거버넌스와 관리 체계 수립 (0) | 2020.08.19 |
---|---|
[정보보안기사] 문제 풀이 (0) | 2020.08.12 |
[정보보안기사] 이메일 보안 (1) | 2020.06.30 |
[정보보안기사] 30. 최신 네트워크 보안기술 (0) | 2020.03.25 |
[정보보안기사] 29. VPN(Virtual Private Network) 개념 (1) | 2020.02.18 |
공부&일상 블로그
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요! 질문은 언제나 환영입니다😊