데이터베이스
기본 개념¶
용어¶
- 릴레이션: 하나의 개체에 관한 데이터를
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은
GRANT
와REVOKE
라는 접근 권한 관리 명령어를 제공
GRANT(권한 부여)¶
만약 user_name
대신 PUBLIC
을 기술하면 모든 사용자에게 해당 시스템 권한 부여
REVOKE(권한 회수)¶
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대한 의존도 높음
- 비정형 데이터에 대한 암호화 적용 가능
Last update :
4 juin 2023
Created : 5 juin 2020
Created : 5 juin 2020