--사용자 생성
CREATE USER 계정
IDENTIFIED BY 비밀번호;
--비밀번호 변경
ALTER USER 계정
IDENTIFIED BY 비밀번호;
권한 종류 | 설명 |
---|---|
시스템 권한(System Privileges) | DB 수준에서의 권한을 의미하며 DBA가 권한을 부여한다. DB 접속, 사용자 생성, 테이블 생성, 뷰 생성 들과 같이 DB에 특별한 작업을 수행하는 것을 가능하게 해준다. |
객체 권한(Object Privileges) | DB 객체 수준에서의 권한을 의미하며 객체의 소유자가 권한을 부여한다. 특정 객체에 접근하여 SELECT, INSERT, DELETE 같은 작업을 수행하는 것을 가능하게 해 준다. |
GRANT 시스템권한[, 시스템권한]
TO 사용자계정|role|PUBLIC;
GRANT CREATE SESSION, CREATE TABLE
TO user01;
사용자의 시스템 권한 정보 확인하기
SELECT * FROM SESSION_PRIVS;
REVOKE 시스템권한[, 시스템권한]
FROM 사용자계정|role|PUBLIC;
REVOKE CREATE SESSION
FROM user01;
WITH ADMIN OPTION과 시스템 권한
- 임의의 사용자가 SYS관리자로부터 부여받은 권한을 다른 자에게 또 다시 부여할 수 있도록 시스템 권한을 위임하는 기능이다.
- REVOKE를 써도 위임된 시스템 권한은 연쇄적으로 회수가 되지 않으므로 주의해서 사용해야 한다.
GRANT 객체권한[(컬럼)]
ON 객체명
TO 사용자계정|role|PUBLIC
[WITH GRANT OPTION];
-- 테이블 전체에 권한 부여
GRANT SELECT
ON DEPT
TO USER01;
--컬럼만 권한 부여
GRANT UPDATE(dname)
ON dept
TO user01;
GRANT SELECT, INSERT, UPDATE
ON dept
TO user01;
WITH GRANT OPTION과 객체 권한
- 임의의 사용자가 객체 소유자로부터 부여받은 권한을 다른 사용자에게 또 다시 부여할 수 있도록 객체 권한을 위임하는 기능이다.
- 객체 권한을 회수하면 위임된 객체 권한은 연쇄적으로 회수가 된다.
- 반면에 시스템 권한의 WITH ADMIN OPTION인 경우에는 연쇄적으로 권한 회수가 안된다.
권한 관련 데이터 사전
- 현재 사용자가 다른 사용자에게 부여한 권한 정보를 알고자 할 때 사용되는 것은 USER_TAB_PRIVS_MADE
- 자신에게 부여된 사용자 권한을 알고 싶을 때는 USER_TAB_PRIVS_RECD
SELECT * FROM user_tab_privs_made; SELECT * FROM user_tab_privs_recd;
REVOKE 객체권한, ...
ON 객체명
FROM 사용자계정|role|PUBLIC
[CASCADE COSNTRAINTS];
사전 정의된 롤을 확인하는 방법
SELECT role FROM dba_roles;
CREATE ROLE 롤이름;
CREATE ROLE clerk;
GRANT create session, create table
TO clerk;
GRANT select
ON scott.dept
TO clerk;
GRANT clerk TO user03;
롤에 부여된 권한 확인하기
- 시스템 권한 확인하기 : DBA_SYS_PRIVS
SELECT grantee, privilege FROM dba_sys_privs WHERE grantee='CLERK';
- 객체 권한 확인하기 : DBA_TAB_PRIVS
SELECT * FROM dba_tab_privs WHERE grantee = 'CLERK';