1 데이터베이스 보안과 권한
1-1 데이터베이스 보안
- 필요한 이유: 다중 사용자 환경이기에 접근 권한 조정, 관리자 암호를 통해 보안 대책. + 중앙집중적인 데이터의 경우 분산적 관리보다 더 취약하기에.
- 오라클에서 지원하는 보안정책
- 시스템 보안: 시스템 관리 차원에서 데이터베이스 자체에 대한 접근 권한 관리. 관리자가 사용자 계정, 암호 관리, 사용자별 허용 가능한 디스크 공간 할당. ex) 의심스러운 사용자 시스템 차단
- 데이터 보안: 사용자별로 데이터베이스 객체에 대한 접근 권한 관리. ex) hr에게 객체 생성할 수 있는 권한 부여, hr이 만든 테이블 다른 사용자가 접근할 수 없도록 권한 제한
1-2 권한
- 시스템 권한: 데이터베이스 관리 작업 할 수 있는 권한
- 객체 권한: 객체를 조작할 수 있는 권한. 테이블 칼럼별로 insert, update, reference 등의 권한을 상세 부여.
1-2-1 시스템 권한
- DBA 관리자가 가지는 권한
CREATE USER: 사용자 생성
DROP USER: 사용자 삭제
DROP ANY TABLE: 임의 테이블 삭제
BACKUP ANY TABLE: 임의 테이블 백업
- 사용자가 갖는 권한
CREATE SESSION: 데이터베이스 접속
CREATE TABLE: 사용자 스키마에서 테이블 생성할 수 있는는 권한
CREATE SEQUENCE: 사용자 스키마에서 시퀀스 생성
CREATE VIEW: 사용자 스키마에서 뷰 생성
CREATE PROCEDURE: 사용자 스키마에서 프로시저, 함수, 패키지 생성
- 권한 부여: grant 통해서 준다.
public은 모든 사용자에게 부여 with admin option은 해당 시스템 권한을 다른 사용자나 롤에 재부여 허용
connect system/manager
grant query rewrite to hr; (hr에게 부여)
grant query rewrite to public; (public에 부여)
- 시스템 권한 조회: 현재 세션에서 사용자와 롤에 부여된 시스템 권한 조회
select *
from session_privs;
revoke query rewrite
from hr;
1-2-2 객체 권한
- 테이블, 뷰, 시퀀스, 함수 등 객체별로 사용할 수 있는 권한
- 종류
- 테이블:
ALTER, DELETE, INDEX, INSERT, REFERENCES, SELECT, UPDATE
- 뷰:
DELETE, INSERT, SELECT, UPDATE
- 시퀀스:
ALTER, SELECT
- 프로시져:
DELETE
- 권한 부여:
ALL 모든 객체 권한을 해당 사용자에게 PUBLIC 모든 사용자에게 해당 객체 권한 부여 WITH ADMINN OPTION 재부여 허용
CREATE USER tiger IDENTIFIED BY tiger123 (유저 생성. 아이디, 비번)
DEFAULT TABLESPACE users (테이블 스페이스 지정)
TEMPORARY TABLESPACE temp;
GRANT connect, resource TO tiger; (관리자가 권한 부여)
CONN hr/hr
GRANT SELECT ON hr.student TO tiger; (hr/hr의 student 테이블 select 권한 부여)
GRANT UPDATE(height, weight) ON student To tiger; (height, weight column의 update 권한 부여)
- 객체 권한 조회
SELECT * FROM user_tab_privs_made: 다른 사용자에게 부여한 테이블 객체 권한
SELECT * FROM user_tab_privs_recd: 다른 사용자에게 받은 테이블 객체 권한
SELECT * FROM user_col_privs_made: 다른 사용자에게 부여한 칼럼 객체 권한
SELECT * FROM user_col_privs_recd: 다른 사용자에게 받은 칼럼 권한
- 객체 권한 철회
CONNECT HR/HR
REVOKE UPDATE ON student FROM tiger; (tiger에서 UPDATE 권한 철회)
REVOKE SELECT ON student FROM tiger;
2 롤