[Database] 데이터베이스 보안과 권한 관리
목차
데이터베이스 보안
데이터베이스와 암호화
권한 관리
데이터베이스 보안 유형
물리적 환경
권한 관리
운영 관리
물리적 환경에 대한 보안
- 데이터베이스에 물리적으로 손실을 발생시킬 위험으로부터 보호하는 것
- 홍수, 화재
권한 관리를 통한 보안
- 접근이 허락된 사용자만 부여된 권한 내에서 데이터베이스 사용
- 계정이 발급된 사용자만 데이터베이스에 접근할 수 있도록 통제
- 사용자별로 데이터베이스의 사용 범위와 수행 가능한 내용 제한
운영 관리를 통한 보안
- 접근이 허락된 사용자가 부여된 권한 내에서 데이터베이스 사용 → 실수 등의 이유로 데이터 무결성 위반
- 데이터 무결성을 유지하기 위해
- 올바른 제약 조건 정의
- 정의된 제약 조건을 위반하지 않도록 통제
데이터베이스와 암호화
데이터베이스 시스템의 권한 관리를 통한 보안만으로 데이터를 보호하기에 충분하지 않을 때 → 데이터 암호화
대칭 암호화 | 비대칭 암호화 |
암호화 키와 복호화 키가 같은 방식 | 공개 키 암호화 |
DES, AES | RSA |
권한 관리
Forms of authorization on parts of the database
Read
- allows reading, but no modification of data
Insert
- allows insertion of new data, but not modification of existing data
Update
- allows modification, but not deletion of data
Delete
- allows deletion of data
Forms of authorization to modify the database schema
Index
- allows creation and deletion of indices
Resources
- allows creation of new relations
Alteration
- allows addition or deletion of attributes in a relation
Drop
- allows deletion of relations
권한 부여 (Granting of Privileges)
All edges in an authorization graph must be part of some path originating with the DBA (DataBase Administrator).
If DBA revokes grant from U1 (DBA가 U1의 권한을 회수한다면)
Q. U4, U5는 어떻게 될까?
A.
Grant must be revoked from U4 (U4의 권한은 회수될 것임)
- Since U1 no longer has authorization
Grant must not be revoked from U5 (U5의 권한은 회수되지 않을 것임)
- Since U5 has another authorization path from DBA through U2
Grant
권한 부여
GRANT <privilege list>
ON <relation name or view name>
TO <user list>
권한 부여하는 사람은 DBA 거나 그 권한 이미 가지고 있어야 함.
Privileges in SQL
Select (검색)
Insert (삽입)
Update (갱신)
Delete (삭제)
References (참조) : create relation 할 때 declare foreign keys 할 수 있게
all privileges
Q. grant users U1,U2,U3 select authoriztion on the branch relation?
A.
GRANT select (허가하다. 어떤 권한을?)
ON branch (어떤 릴레이션에?)
TO U1, U2, U3 (누구에게?)
-> 사용자 U1,U2,U3 가 branch 릴레이션에 대해서 select (검색) 연산을 허가 받음
테이블을 구성하는 속성들 중 일부 속성만 수정 또는 검색 권한을 부여하고 싶으면?
Q. kim 이라는 사용자에게 sailors 테이블의 rating 이라는 속성을 업데이트할 수 있는 권한을 부여해보자
A.
GRANT update (rating)
ON sailors
TO kim;
시스템 권한
객체가 아닌 데이터베이스 관리와 관련
grant create table to Kim;
grant create view to Park;
→ DDL 명령어를 시스템 권한으로 사용
Privilege To Grant Privileges (권한을 부여할 수 있는 권한)
MySQL : with grant option
Oracle : with admin option
Q. gives U1 the select privileges on branch and allows U1 to grant this privilege to others?
A.
GRANT select
ON branch
TO U1
WITH GRANT OPTION;
-> U1이 또 다른 제 3의 유저에게 select 권한을 부여할 수 있도록 해줌
Revoke
권한 회수
REVOKE <privilege list>
ON <relation name or view name>
FROM <user list>
권한이 취소된 사용자가 다른 사용자에게 부여한 권한을 처리하는 방법
cascade : 연쇄적으로 같이 하는 것
restrict : 어떤 제한을 가하는 것
Q. Kim이 Hong에게 부여한 고객 테이블에 대한 검색 권한을 취소하면서, Hong이 다른 사용자에게 부여한 고객 테이블에 대한 검색 권한도 함께 취소하려면?
A.
REVOKE select
ON 고객
FROM Hong
CASCADE;
-> CASCADE 사용해야 함
Q. 시스템 권한을 취소하려면?
A.
REVOKE CREATE TABLE
FROM Hong;
->
사용자 Hong 에게 부여된 테이블 생성 권한이 취소됨
create table = 생성 권한 = 모든 권한