180313 Oracle 사용자와 권한 - RYUDONGJIN/Memo_wiki GitHub Wiki

데이터베이스 보안을 위한 권한

  • 데이터베이스 관리자는 사용자가 데이터베이스의 객체에 대한 특정 권한을 가질 수 있도록 함으로서 다수의 사용자가 데이터베이스에 저장된 정보를 공유하면서도 정보에 대한 보안이 이루어지도록 함
  • 데이터베이스에 접근하기 위해서는 사용자가 이름과 암호를 입력해서 로그인 인증
  • 사용자마다 서로 다른 권한과 롤을 부여함으로서 보안을 설정
  • 권한은 사용자가 특정 테이블을 접근할 수 있도록 하거나 해달 테이블에 SQL문을 사용할 수 있도록 제한을 두는것
  • 데이터베이스 보안을 위한 권한은 시스템 권한과 객체 권한
  • 시스템 권한은 사용자의 생성과 제거, DB 접근 및 각종 객체를 생성할 수 있는 권한 등 주로 DBA에 의해 부여
CREATE USER
DROP USER
DROP ANY TABLE
QUERY REWRITE
BACKUP ANY TABLE
  • 데이터베이스를 관리하는 권한으로는 시스템 관리자가 사용자에게 부여하는 권한
CREATE SESSION
CREATE TABLE
CREATE VIEW
CREATE SEQUENCE
  • 객체 권한은 객체를 조작할 수 있는 권한
CREATE USER user_name
IDENTIFIED BY password;

GRANT

  • 사용자에게 시스템 권한 부여하기 위해서는 GRANT 명령어를 사용
GRANT privilege_name, ...
TO user_name;
  • 만일 user_name 대신 PUBLIC을 기술하면 모든 사용자에게 해당 시스템 권한이 부여

객체 권한

  • 특정 객체에 조작을 할 수 있는 권한. 객체의 소유자는 객체에 대한 모든 권한을 가진다.
  • 테이블이나 뷰나 시퀀스나 함수 등과 같은 객체별로 DML문을 사용할 수 있는 권한을 설정하는 것
GRANT privilege_name[(column_name)]|ALL
ON object_name|role_name|PUBLIC
TO user_name;
  • 특정 객체에 대한 권한은 그 객체를 만든 사용자에게만 기본적으로 제공
GRANT select ON emp to user01;

스키마

  • 객체를 소유한 사용자명을 의미. 객체 명 앞에 사용자명을 기술
SELECT * FROM SCOTT.EMP;

REVOKE

  • 사용자에게 부여한 객체 권한을 데이터베이스 관리자나 객체 소유자로부터 철회하기 위해서는 REVOKE 명령어를 사용
REVOKE {privilege_name|all}
ON object_name
FROM {user_name|role_name|public};

WITH GRANT OPTION

  • 사용자에게 객체 권한을 WITH GRANT OPTION과 함께 부여하면 그 사용자는 그 객체를 접근할 권한을 부여받으면서 그 권한을 다른 사용자에게 부여할 수 있는 권한도 함께 부여받게 된다.
GRANT SELECT ON SCOTT.EMP TO user02
WITH GRANT OPTION;