참조사이트 :
http://www.oracleclub.com/lecture/1010 (오라클클럽)
http://gyh214.tistory.com/66
Role : Privilege 들을 일일히 주기 귀찮으니까 묶어서 만들어 놓고, 상황에 맞게 부여하는 묶음권한
특징 :
딕셔너리 이용예시
1) 어떤 Role이 미리 만들어져 있는지 확인하고,
그 중 DBA는 어떠한 Privilege(권한)을 가지고 있는지 조사하고 싶다.
어떠한 Role이 미리 만들어져 있을까?(DBA_ROLES이용)
이제는 DBA role에 어떠한 System Privilege가 들어있는지 확인하자.(role_sys_privs 딕셔너리 이용)
2) scott user는 어떤 권한을 가지고 있을까?(dba_sys_privs 이용)
Role 생성방법
롤 삭제하기
*DROP ANT ROLE 권한을 가진 사용자만 사용가능
DROP ROLE role_name;
사용자로부터 롤 뻇기
* GRANT ANY ROLE 권한을 가진 사용자만 사용가능
REVOKE role_name FROM scott;
디폴트 롤 지정하기(DBA용)
ALTER USER scott
DEFAULT ROLE role_name, role_name2;
(role_name, role_name2 만 쓰고 나머지는 disable)
ALTER USER scott DEFAULT ROLE ALL;
(현재 부여된 롤들 다 사용)
ALTER USER scott DEFAULT ROLE ALL EXCEPT hr_clerk;
(hr_clerk 롤만 뺴고 다 사용)
ALTRE USER scott DEFAULT ROLE NONE;
(롤 사용하지 않음)
현재 자기에게 부여된 롤을 Enable, Disable하기(일반 user용)
* Default Role들은 로그인시 자동으로 Enable됨
* 사용자가 임시적으로 role을 Revoke하기 위해서도 사용함
SET ROLE hr_clerk;
SET ROLE or_clerk IDENTIFIED BY order;
(Role에 password가 부여된 경우에는 password를 쳐줘야 해당 Role이 사용자에게 적용)
SET ROLE ALL EXCEPT oe_clerk;
http://www.oracleclub.com/lecture/1010 (오라클클럽)
http://gyh214.tistory.com/66
Role : Privilege 들을 일일히 주기 귀찮으니까 묶어서 만들어 놓고, 상황에 맞게 부여하는 묶음권한
특징 :
- ROLE을 이용하면 권한 부여와 회수를 쉽게 할 수 있다.
- ROLE은 CREATE ROLE권한을 가진 USER에 의해서 생성 된다.
- 한 사용자가 여러개의 ROLL을 ACCESS할 수 있고, 여러 사용자에게 같은 ROLE을 부여할 수 있다.
- 시스템 권한을 부여하고, 취소할 때와 동일한 명령을 사용하여 사용자에게 부여하고, 취소 한다.
- 사용자는 ROLE에 ROLE을 부여할 수 있다.
- 오라클 데이터베이스를 설치하면 기본적으로 CONNECT, RESOURCE, DBA ROLE이 제공 된다.ROLE을 사용하지 않고 권한부여 | ROLE을 사용하여 권한부여 |
---|---|
ROLE관련 데이터 사전
데이터 사전 |
설 명 |
ROLE_SYS_PRIVS |
ROLE에 부여된 시스템 권한 |
ROLE_TAB_PRIVS |
ROLE에 부여된
테이블 권한 |
USER_ROLE_PRIVS |
현재 사용자가 ACCESS할 수 있는 ROLE |
USER_TAB_PRIVS_MADE |
현재 사용자의 객체에 부여한 객체 권한 |
USER_TAB_PRIVS_RECD |
현재 사용자의 객체에 부여된 객체 권한 |
USER_COL_PRIVS_MADE |
현재 사용자 객체의 특정 컬럼에 부여한 객체 권한 |
USER_COL_PRIVS_RECD |
현재 사용자 객체의 특정 컬럼에 부여된
객체 권한 |
DBA_ROLES |
어떠한 Role이 Predefine되어있는지 보는 사전 |
DBA_ROLE_PRIVS |
Roles
grated to users and roles |
SESSION_ROLES |
Roles that the user currently has
enabled |
DBA_SYS_PRIVS |
System
Privs grated to usrs and roles |
딕셔너리 이용예시
1) 어떤 Role이 미리 만들어져 있는지 확인하고,
그 중 DBA는 어떠한 Privilege(권한)을 가지고 있는지 조사하고 싶다.
어떠한 Role이 미리 만들어져 있을까?(DBA_ROLES이용)
SQL> select * from dba_roles; ROLE PASSWORD ------------------------------ -------- CONNECT NO RESOURCE NO DBA NO SELECT_CATALOG_ROLE NO EXECUTE_CATALOG_ROLE NO DELETE_CATALOG_ROLE NO EXP_FULL_DATABASE NO IMP_FULL_DATABASE NO ........ AUTHENTICATEDUSER NO XDBWEBSERVICES NO OLAPI_TRACE_USER NO OLAP_DBA NO CWM_USER NO OLAP_USER NO MGMT_USER NO 35 rows selected.DBA role이 존재함을 확인
이제는 DBA role에 어떠한 System Privilege가 들어있는지 확인하자.(role_sys_privs 딕셔너리 이용)
SQL> desc role_sys_privs; Name Null? Type ----------------------------------------- -------- ---------------------------- ROLE NOT NULL VARCHAR2(30) PRIVILEGE NOT NULL VARCHAR2(40) ADMIN_OPTION VARCHAR2(3) SQL> select * from role_sys_privs 2 where role='DBA'; ROLE PRIVILEGE ADM ------------------------------ ---------------------------------------- --- DBA CHANGE NOTIFICATION YES DBA ADMINISTER ANY SQL TUNING SET YES DBA ALTER ANY SQL PROFILE YES DBA CREATE RULE YES DBA EXPORT FULL DATABASE YES ........................ DBA CREATE MATERIALIZED VIEW YES DBA CREATE PUBLIC DATABASE LINK YES DBA CREATE DATABASE LINK YES DBA CREATE ANY SYNONYM YES DBA ALTER ANY CLUSTER YES DBA DROP USER YES DBA MANAGE TABLESPACE YES 160 rows selected.
2) scott user는 어떤 권한을 가지고 있을까?(dba_sys_privs 이용)
select * from dba_sys_privs where grantee='SCOTT'; GRANTEE PRIVILEGE ADM ------------------------------ ---------------------------------------- --- SCOTT UNLIMITED TABLESPACE NO2-1) 나는(SCOTT) 어떤 권한을 가지고 있을까?(user_sys_privs 이용)
SQL> conn scott/tiger Connected. SQL> select * from user_sys_privs; USERNAME PRIVILEGE ADM ------------------------------ ---------------------------------------- --- SCOTT UNLIMITED TABLESPACE NO
Role 생성방법
문법)
CREATE ROLE role [NOT IDENTIFIED | IDENTIFIED]
(BY password | EXTERNALLY]
* NOT IDENTIFIED : 롤 활성화 시 암호에 의한 검증 과정 생략
* IDENTIFIED : 롤 활성화 시 암호에 의한 검증 과정 활성화
* BY password : 롤 활성화 시 사용되는 암호 지정
* EXTERNALLY : 롤 활성화 시 운영체제 인증을 통한 사용자 검증
Role에 권한 부여하기(추가하기)
1) 롤에 시스템 권한 부여
SQL> GRANT create session TO hr_MGR;
2) 롤에 객체 권한 부여
SQL> GRANT select, insert, delete ON hr_clerk;
사용자에게 롤 부여하기
1) 사용자와 롤에게 특정 롤 부여하기
SQL> GRANT role1 TO user1 [WITH ADMIN OPTION];
SQL> GRANT role1 TO role2;
롤 삭제하기
*DROP ANT ROLE 권한을 가진 사용자만 사용가능
DROP ROLE role_name;
사용자로부터 롤 뻇기
* GRANT ANY ROLE 권한을 가진 사용자만 사용가능
REVOKE role_name FROM scott;
디폴트 롤 지정하기(DBA용)
ALTER USER scott
DEFAULT ROLE role_name, role_name2;
(role_name, role_name2 만 쓰고 나머지는 disable)
ALTER USER scott DEFAULT ROLE ALL;
(현재 부여된 롤들 다 사용)
ALTER USER scott DEFAULT ROLE ALL EXCEPT hr_clerk;
(hr_clerk 롤만 뺴고 다 사용)
ALTRE USER scott DEFAULT ROLE NONE;
(롤 사용하지 않음)
현재 자기에게 부여된 롤을 Enable, Disable하기(일반 user용)
* Default Role들은 로그인시 자동으로 Enable됨
* 사용자가 임시적으로 role을 Revoke하기 위해서도 사용함
SET ROLE hr_clerk;
SET ROLE or_clerk IDENTIFIED BY order;
(Role에 password가 부여된 경우에는 password를 쳐줘야 해당 Role이 사용자에게 적용)
SET ROLE ALL EXCEPT oe_clerk;
'Oracle > Admin' 카테고리의 다른 글
Job scheduling from (Oracle 10g) with dbms_scheduler (1) | 2012.03.18 |
---|---|
Constraint violated 시 어디서 에러가 났는지 보여주는 exceptions 테이블 사용예제 (0) | 2012.03.02 |
2012.01.27 Admin 8일차(3) (사용자관리, Privilege) ; 유저만들때 고려해야할 점(tablespace), System privilege, Object privilege (0) | 2012.01.27 |
2012.01.27 Admin 8일차(2) (Profiles) ; password, resource관련파라미터 (0) | 2012.01.27 |
2012.01.27 Admin 8일차(1) (Constraints) (0) | 2012.01.27 |