본문 바로가기

BASIC/DataBase

[DB] 보안(Security)

1. 데이터베이스 보안의 개요

- 데이터베이스 보안이란 데이터베이스의 일부분 또는 전체에 대해서 권한이 없는 사용자가 액세스 하는 것을 금지하기 위해 사용하는 기술이다.

- 보안을 위한 데이터 단위는 테이블 전체로부터 특정 테이블의 특정한 행과 열 위치에 있는 특정한 데이터 값에 이르기까지 다양하다.

- 데이터베이스 사용자들은 일반적으로 서로 다른 객체에 대하여 다른 접근권리 또는 권한을 갖게된다.

- 데이터베이스 보안 기법에는 암호화 기법, 권한 부여 기법이 있으며, 권한 부여 기법에는 뷰(View) 기법, GRANT/REVOKE 기법이 있다.


2. 암호화 기법

1) 암호화 과정

- 암호화(Encryption) 과정 : 암호화되지 않은 평문을 정보 보호를 위해 암호문으로 바꾸는 과정

- 복호화(Decryption) 과정 : 암호문을 원래의 평문으로 바꾸는 과정


2) 개인키 암호 방식(Private Key Encryption) = 비밀키 암호 방식

- 비밀키 암호화 기법은 동일한 키로 데이터를 암호화하고 복호화한다.

- 데이터베이스 생성자는 평문의 정보 M을 암호화 알고리즘 E와 개인키 K를 이용하여 암호문 C로 바꾸어 저장시켜 놓고, 사용자가 그 데이터베이스에 접근하려면 복호화 알고리즘 D와 개인키 K를 이용하여 평문의 정보로 바꾸어 이용하는 방법이다.

- 비밀키 암호화 기법은 대칭 암호 방식 또는 단일키 암호화 기법이라고도 한다.

- 비밀키는 제3자에게는 노출시키지 않고 데이터베이스 사용 권한이 있는 사용자만 나누어 가진다.

- 종류 : 전위 기법, 대체 기법, 대수 기법, 합성 기법

- 장점 : 암호화/복호화 속도가 빠르며, 알고리즘이 단순하고 파일 크기가 작다.

- 단점 : 사용자의 증가에 따라 관리해야 할 키의 수가 상대적으로 많아진다.


3) 공개키 암호 방식(Publick Key Encryption)

- 공개키 암호화 기법은 서로 다른 키로 데이터를 암호화하고 복호화한다.

- 데이터를 암호화할 때 사용하는 키(공개키, Public Key)는 데이터베이스 사용자에게 공개하고, 복호화할 때의 키(비밀키, Secret Key)는 관리자가 비밀리에 관리하는 방법이다.

- 공개키 암호화 기법은 비대칭 암호 방식이라고도 하며, 대표적으로 RSA(Rivest Shamir Adleman)가 있다.

- 장점 : 키의 분배가 용이하고, 관리해야 할 키의 개수가 적다.

- 단점 : 암호화/복호화 속도가 느리며, 알고리즘이 복잡하고 파일 크기가 크다.


3. 권한 부여 기법

- 권한 부여 기법은 일반적으로 사용자들이 서로 다른 객체에 대하여 서로 다른 접근 권한을 갖게 설정한다.

- 권한 부여 기법에서 보안을 위한 데이터 단위는 테이블 전체나 특정한 행, 열에 있는 데이터 값이 될 수 있다.


1) 뷰 기법

- 뷰(View)에 권한을 명시하는 기법이다.


2) GRANT/REVOKE 기법

- DBA가 GRANT/REVOKE 명령으로 권한을 부여하고 취소시키는 방법이다.

- GRANT : 권한 부여 명령

- REVOKE : 권한 취소 명령


3) 사용자 등급의 종류

- DBA : 데이터베이스 관리 책임자

- RESOURCE : 데이터베이스 및 테이블 생성 가능자

- CONNECT : 단순 사용자


4) 권한 종류

- ALL, SELECT, INSERT, DELETE, UPDATE, INDEX, ALTER 등

- WITH GRANT OPTION : 부여받은 권한을 다른 사용자에게 다시 부여할 수 있는 권한을 부여한다.

- GRANT OPTION FOR : 다른 사용자에게 권한을 부여할 수 있는 권한을 취소한다.

- CASCADE : 권한 해제 시 권한을 부여받았던 사용자가 다른 사용자에게 부여한 권한도 연쇄적으로 해제한다.

'BASIC > DataBase' 카테고리의 다른 글

[DB] 데이터 언어(Data Language)  (0) 2018.04.03
[DB] 분산 데이터베이스  (0) 2018.02.22
[DB] 무결성(Integrity)  (0) 2018.02.22
[DB] 병행제어(Concurrency Control)  (0) 2018.02.22
[DB] 트랜잭션의 개념  (0) 2018.02.21