보안 유형
- 물리적 보호: 자연 재해, 컴퓨터 시스템 우연 손상, 데이터 손상 주는 위험으로부터 보호
- 권한 보호: 권한을 가진 사용자만 특정 접근 모드로 데이터베이스 접근할 수 있ㄷ록 보호
- 운영 보호: 데이터베이스 무결성에 대한 사용자 실수 영향 최소화, 제거
DBMS 보안 기능
- 접근 제어: 데이터베이스 시스템 접근 통제. 로그인 과정 통제 위해 사용자 계정, 암호 관리
- 보안 및 권한 관리: 특정 사용자 또는 사용자들의 그룹이 지정된 데이터베이스 영역만 접근할 수 있고, 그 외의 영역은 접근할 수 없도록 통제
보안 기법
- 임의 보안 기법: 사용자들에게 특정 릴레이션, 튜플, 애트리뷰트를 지정된 모드로 접근할 수 있는 권한을 허가(GRANT), 취소(REVOKE)하는 기법
대부분의 상용 관계 DBMS에서 사용.
시스템 카탈로그에 권한 허가, 취소 기록
- 강제 보안 기법: 데이터와 사용자들을 다양한 보안 등급(1급 비밀, 2급 비밀, 3급 비밀, 일반 정보 등)으로 분류. 해당 조직에 적합한 보안 정책 적용, 다단계 보안 시행.
데이터베이스 관리자 보안
- 사용자 (그룹)에 대한 새로운 계정과 암호 생성, 권한 부여와 취소, 특정 계정에 대한 특정 권한 부여와 취소
- 각 로그인 세션 동안 사용자가 데이터베이스에 가한 모든 연산 기록
- 권한이 없는 사용자가 데이터베이스 갱신했다는 의심 들면, 데이터베이스 감사
* 데이터베이스 감사: 특정 기간 동안 데이터베이스에서 수행된 모든 연산들을 검사하기 위해 시스템 로그조사
객체의 생성자: 객체에 대한 모든 권한 가짐. GRANT문 사용해서 다른 사용자나 역할에게 허가.
GRANT 권한 [(애트리뷰트들의 리스트)] // SELECT, INSERT, DELETE, UPDATE, REFERENCES 중 한 개 이상
ON 객체
TO {사용자 | 역할 | PUBLIC}
[WITH GRANT OPTION];
GRANT SELECT
ON EMPLOYEE
TO LEE;
GRANT UPDATE (TITLE, MANAGER)
ON EMPLOYEE
TO LEE;
GRANT REFERENCES (EMPNO)
ON EMPLOYEE
TO CHOI;
GRANT SELECT, INSERT
ON DEPARTMENT
TO LEE
WITH GRANT OPTION;
GRANT SELECT
ON EMPLOYEE
TO PUBLIC;
어떤 사용자가 다른 사용자에게 허가했던 권한 취소 시, 권한을 취소 당한 사용자가 WITH GRANT OPTION을 통해 다른 사용자에게 허가했던 권한들도 연쇄적으로 취소
REVOKE {권한들의 리스트 | ALL}
ON 객체
FROM {사용자 | 역할 | PUBLIC};
REVOKE SELECT, INSERT
ON DEPARTMENT
FROM LEE;
: 사용자에게 허가할 수 있는 연관된 권한들의 그룹
사용자: 여러 역할에 속할 수 있음. 여러 사용자들: 동일한 역할 허가받을 수 있음.
역할 권한들에 변화 생기면 즉시 변경된 권한 가지는 사용자들.
CREATE ROLE programmer;
GRANT CREATE TABLE
TO programmer;
GRANT programmer
TO CHOI;
GRANT CREATE SESSION TO KIM WITH ADMIN OPTION;
// WITH ADMIN OPTION: 권한을 허가받은 사용자가 다시 이 권한을 다른 사용자에게 허가 가능
객체 권한: 사용자가 특정 객체(테이블, 뷰, 프로시저 등)에 대해 특정 연산을 수행할 수 있도록 함
객체 소유자: 객체에 대한 모든 권한 보유. 다른 사용자나 역할에게 허가 가능.
미리 정의된 역할: 사용 패턴을 여러 관점에서 분석하여 각 사용 패턴에 맞게 미리 정해놓은 역할 약 20여개.
- connect: 오라클 데이터베이스 로그인. 권한 허가 받았을 시, 검색, 갱신 등등 가능
- resource: connect + resource => 테이블, 인덱스 생성. 자신의 객체에 대해 다른 사용자에게 권한 허가, 취소 가능
SELECT *
FROM ROLE_SYS_PRIVS
WHERE ROLE = 'CONNECT' OR ROLE = 'RESOURCE';
오라클에서는 애트리뷰트 단위로 SELECT 권한 허가 불가