통합된 데이터, 저장된 데이터, 운영 데이터, 공용 데이터

기본 개념

용어

  • 릴레이션: 하나의 개체에 관한 데이터를 2차원 테이블의 구조로 저장한 것
  • 속성과 튜플: 릴레이션의 열(속성)과 행(튜플)
  • null: 아직 모르거나 해당되는 사항이 없음을 표현하는 특별한 값
  • 차수: 하나의 릴레이션에서 속성의 전체 개수
  • 카디널리티: 하나의 릴레이션에서 튜플의 전체 개수
  • 도메인: 한 릴레이션에서 특정 속성이 가질 수 있는 데이터 형식을 지닌 모든 가능한 값의 집합
  • extent: 테이블을 구성하는 물리적으로 연속적인 디스크 공간

키 정의

  • 후보키(Candidate Key): 키의 특성인 유일성최소성을 만족하는 키
  • 슈퍼키(Super Key): 유일성을 만족하는 키
  • 기본키(Primary Key): 여러 개의 후보키 중에서 하나를 선정하여 사용하는 키
  • 대체키(Alternate Key): 여러 개의 후보키 중에서 기본키를 제외한 나머지 키
  • 외래키(Foreign Key): 어느 한 릴레이션 속성의 집합이 다른 릴레이션에서 기본키로 이용되는 키

무결성

  • 키 무결성(key integrity): 한 릴레이션에 같은 키값을 가진 튜플이 있어서는 안됨
  • 개체 무결성(entity integrity): 기본키에 속해 있는 전체 또는 일부 속성은 NULL 값을 가질 수 없음
  • 참조 무결성(referential integrity): 릴레이션은 참조할 수 없는 외래키값을 가질 수 없음

트랜잭션

  • 하나의 논리적 기능을 수행하기 위한 작업의 단위
  • 한꺼번에 모두 수행해야 할 일련의 DB 연산
  • 병행 제어 및 회복 작업의 논리적 단위

성질

  • 원자성(Atomictiy)
    • 트랜잭션 내 모든 연산은 반드시 한번에 완료
    • 그렇지 않을 경우 한꺼번에 취소 (all or nothing)
  • 일관성(Consistently)
    • 트랜잭션이 성공적으로 완료되면 일관성 있는 DB 상태로 변환
    • 단 프로그램 실행 중 일관성 위반은 상관없음
  • 격리성(Isolation)
    • 트랜잭션이 실행중에 있는 연산의 중간결과에 다른 연산이 접근하지 X
  • 영속성(Durability)
    • 트랜잭션이 일단 그 실행을 성공적으로 완료하면 그 결과는 영속적
    • 따라서 시스템은 어떤 경우라도 완료된 결과의 영속성을 보장해야 함

보안

DB 상의 데이터에 대한 인가되지 않은 접근, 의도적/비의도적 변경, 파괴 등의 일관성 저해하는 사고 등으로부터 DB를 보호하는 것

보안 특성: 비밀성, 무결성, 가용성

보안 위협

사용자가 데이터에 접근함으로써 발생될 수 있는 정보의 부적절한 유출, 부적절한 처리, 수정으로부터 무결성의 손상 발생 가능

집성(Aggregation)

개별적인 여러 소스로부터 민감하지 않은 정보(낮은 보안 등급)를 수집/조합하여 민감한 정보(높은 보안
등급)를 알아내는 행위

추론(Inference)

일반적인 데이터로부터 비밀정보를 추측해내는 행위

요구사항

보안 요구사항 설명
부적절한 접근 방지 승인된 사용자에게만 접근 권한 부여 및 사용자, 응용 시스템의 접근 요청에 대한 정당성 여부 검사
추론방지 사용자가 통계적인 데이터로 개별적인 데이터 항목에 대한 정보를 추적할 수 없도록 함
무결성 보장 인가되지 않은 접근, 저장 데이터를 손상시킬수 있는 시스템 오류 등으로 DB를 보호
운영적 무결성 보장 트랜잭션의 병행 처리 동안에 데이터에 대한 논리적 일관성을 보장
의미적 무결성 보장 데이터에 대한 허용값을 통제함으로써 데이터의 논리적 일관성을 보장
감사기능 DB에 대한 모든 접근이 감사기록을 생성
사용자 인증 OS서 수행하는 사용자 인증보다 엄격한 인증 필요
기밀성 보장 중요 데이터에 대한 기밀성 보호, 인가된 사용자에게만 접근을 허용해야 함

DB 보안 통제

흐름제어

높은 수준의 보안이 낮은 수준의 객체로 이동하는 것을 검사하여 접근 가능한 객체 간 정보흐름을 조정

추론제어

간접적인 데이터 노출로부터 데이터를 보호하기 위한 제어

  • 비밀정보 은폐
  • DB 지식 추적
    • 사용자가 가지고 있는 데이터를 고려하여 질의 허용여부를 결정
  • 데이터 위장
    • 일관성 없는 질의결과 제공해 통계적 추론을 방지

접근제어

허가된 범위 내 시스템 정보에 대한 접근을 권한에 따라 인가된 사용자에게만 제공

OS 접근통제와 비교

OS DB
객체(파일)는 다른 객체와 관련성이 없음 객체(레코드, 필드)는 상호 관련되어 있음
사용자는 하나의 파일을 읽고 다른 파일의 내용을 결정할 수 없음 하나의 데이터 요소를 읽고서 다른 데이터의 내용을 결정할 수 있음

추론

인가된 쿼리 수행과 합법적 응답을 통해 비인가된 정보를 추론

방지 방법

  • DB 설계시 추론 탐지
    • DB 구조변경, 접근 제어 방식 변경으로 추론 채널을 제거해 추론을 방지
  • 쿼리 타임 시 추론탐지
    • 쿼리처리 중 추론 채널 위반을 제거하려는 시도
    • 추론 채널이 탐지되면 쿼리를 거부하거나 변경

DBMS 보안 통제

SQL 기반

통상 DB관리자(DBA)가 권한을 가지므로 DBA권한이라고 함

  • SQL은 GRANTREVOKE라는 접근 권한 관리 명령어를 제공

GRANT(권한 부여)

GRANT privilege_name | role To user_name [WITH ADMIN OPTION];

만약 user_name 대신 PUBLIC을 기술하면 모든 사용자에게 해당 시스템 권한 부여

REVOKE(권한 회수)

REVOKE privilege_name | ALL on table FROM user_name | role_name | PUBLIC;

PUBLIC을 사용하면 모든 사용자의 권한 제거

뷰 기반

  • 뷰는 하나 이상의 기본 테이블로부터 유도되어 만들어지는 가상 테이블
  • 데이터의 논리적 독립성을 보장하며 접근제어를 통해 보안을 제공
  • DB의 제한적 접근을 제공하여 사용자가 특정 행과 열에 대한 접근이 가능

보안 취약점 점검

구분 설명
디폴트 계정 패스워드 변경 DBMS가 적용된 디폴트 계정은 해커의 손쉬운 공격수단으로 악용되기에 반드시 비밀번호를 변경하거나 삭제해야함
DB 패스워드 규칙 강화 디폴트 계정이나 일반 계정을 생성할 때 패스워드 규칙을 강화해 손쉽게 크래킹 되지 않도록 해야한다.
DBA 권한의 제한 일반 계정이 DBA 권한을 부여받지 않도록 주의
보안 패치 적용 제품별로 발표된 패치 적용해 취약점 제거
사용하지 않는 계정 삭제 생성한 계정 중 불필요한 계정은 삭제하여 관리의 허점이 없도록 해야함
개발자 IP 접근 제한 필요에 의해 서버로 접근하는 개발자는 접근 IP 제한해 접근제어 강화
제품별 취약점 제거 이미 알려진 보안 취약점에 대해 피치나 제 2의 해결책으로 취약점 제거
데이터 암호화 사용자 패스워드가 일방향 암호화되어 있는지 확인, 기밀 구분에 따라 암호화 적용

암호화 방식

Plug-in 방식

암ㆍ복호화 모듈을 DB 서버 내에 설치하여 암ㆍ복호화를 수행

  • 적용성은 뛰어나지만 CPU에 부하
  • 성능에 대한 민감성이 낮은 시스템의 경우 저렴한 비용으로 구축 가능

API 방식

암ㆍ복호화 모듈을 애플리케이션 서버 내에 설치하여 암ㆍ복호화를 수행

Hybrid 방식

Plug-in 방식 + API 방식

  • 성능이 우선시 되는 환경에서는 API를 적용
  • 성능 영향이 덜 민감한 환경에는 플러그인 방식을 적용

TDE 방식

DB 내부에서 데이터 파일 저장 시 암호화, 파일에 저장된 내용을 메모리 영역으로 가져올 때 DBMS에 의해 자동으로 복호화

  • DBMS 커널 레벨에서 처리되므로 애플리케이션 수정이 없음
  • DBMS 자체 인덱스 기능과 연동 가능

파일 암호화 방식

OS상에서 확인 가능한 개체인 파일을 암호화하는 방식

  • OS대한 의존도 높음
  • 비정형 데이터에 대한 암호화 적용 가능