posted by 구름너머 2006. 12. 18. 14:43
오라클 Role 관리 | Oracle2006/07/27 11:31
http://blog.naver.com/mirmir96/70006629275

롤 관리


■ 목적

. 롤 생성과 수정

. 롤의 가용성 제어

. 롤 제거

. 미리 정의된 롤 사용

. 데이터 딕셔너리의 롤 정보 출력


오라클의 롤을 이용하면 권한 관리가 쉽고 간편해 집니다. 롤은 사용자나 다른 롤에

부여되는 관련 권한들의 명명된 그룹입니다. 롤은 데이터베이스 내에서 권한을

관리하기 쉽도록 설계되었습니다.


롤의 특성

. 시스템 권한을 부여하고 철회할때 사용되는 것과 동일한 명령으로 사용자에게 부여하고

철회할 수 있습니다.

. 롤 자신(간접적으로도 불가능)을 제외한 모든 사용자와 롤에게 부여할 수 있습니다.

. 시스템 권한과 오브젝트 권한으로 이루어집니다.

. 각 사용자가 부여받은 롤을 enable하거나 disable할 수 있습니다.

. 암호를 요구하도록 할 수도 있습니다.

. 각 롤 이름은 기존의 사용자 이름과 롤 이름과는 다른 유일한 것이어야 합니다.

. 누군가가 공유하는 것도 아니고 어느 스키마에 속하는 것도 아닙니다.

. 데이터 딕셔너리에 설명되어져 있습니다.


■ 롤의 장점

권한 부여 작업 감소

동적 권한 관리

권한의 선택적 사용

OS를 통해 부여

연쇄적으로 철회되지 않음

연쇄적으로 철회되지 않음

향상된 성능

권한부여 작업 감소

롤을 사용하면 권한 관리가 간단해 집니다.

일련의 권한을 여러 사용자에게 부여하기 보다는 권한들을 하나의 롤에 부여한 후

그 롤을 각 사용자에게 부여하십시오

동적 권한 관리

롤과 관련된 권한이 수정되면 해단 롤을 부여받은 모든 사용자는

자동적으로 죽시 수정된 권한을 갖게 됩니다.

권한의 선택적 사용

롤은 enable 되거나 disable되어 임시로 권한을 on,off할 수 있습니다.

롤을 enable하는 것은 사용자가 그 롤을 부여받았는지 검증하는데도 사용될 수 있습니다.

OS를 통해 부여

운영 체제 명령이나 유틸리티가 데이터베이스의 사용자에게 롤을 할당하는데 사용될수

있습니다.


■ 연쇄적으로 철회하지 않음

연쇄 철회를 발생시키지 않고 오브젝트 권한을 철회할 수 있습니다.

향상된 성능

롤을 disable하여 실행 중 검증해야 할 권한을 줄일 수 있습니다.

롤을 사용하면 데이타 딕셔너리에 저장된 부여에 대한 정보가 줄어들게 됩니다.


■ 롤생성

CREATE ROLE sales_clerk;

CREATE ROLE hr_clerk

IDENTIFIED by bonus;

CREATE ROLE hr_manager

IDENTIFIED EXTERNALLY;

구문

롤을 생성하려면 다음 명령을 사용하십시오

CREATE ROLE role [NOT IDENTIFIED | IDENTIFIED

{BY password | EXTERNALLY } ]

구문에서

role 롤 이름

NOT IDENTIFIED 롤을 enable할때 아무런 검증도 필요하지 않음을 의미

BY password 롤을 enable할때 사용자가 입력해야만 하는 암호 제공

EXTERNALLY 사용자가 롤을 enable하기전에 외부 서비스(운영 체제나 협력

업체서비스 같은)에 의해 인증을 받아햐만 함을 의미


■ 주 CREATE ROLE IDENTIFIED GLOBALLY 명령은 Oracle Security Server를 통해 롤 검증이 이루어져만 하도록 지정합니다.


■ 미리 정의된 롤 사용


롤 명 설 명

-------------------------------------------------------------------

CONNECT | 이전 버전과의 호환을 위해서 제공됩니다

RESOURCE | 이전 버전과의 호환을 위해서 제공됩니다

DBA | 모든 시스템 권한과 WITH ADMIN OPTION

EXP_FULL_DATABASE | DB를 익스포트할 권한

IMP_FULL_DATABASE | DB를 임포트할 권한

DELETE_CATALOG_ROLE | DB 테이블에 대한 DELETE 권한

EXECUTE_CATALOG_ROLE | DD 패키지에 대한 EXECUTE권한

SELECT_CATALOG_ROLE | DD 테이블에 대한 SELECT 권한

--------------------------------------------------------------------


위의 롤들은 오라클 데이터베이스에 자동적으로 정의됩니다. Connect, Resouse롤은 오라클 이전 버전과의 역 호환을 위해 제공되며 오라클 데이터베이스의 다른 롤과 같은 방법으로 수정할 수 있습니다.

EXP_FULL_DATABASEIMP_FULL_DATABASE 롤이 임포트와 익스포트 유틸리티를 사용할 때의 편의를 위해 제공됩니다

DELETE_CATALOG_ROLE, EXECUTE_CARLOG_ROLE, 그리고 SELECT_CATALOG_ROLE

롤은 데이터 딕셔너리 뷰와 패키지에의접근을 위해 제공됩니다. 이들 롤은 DBA 롤은 가지고 있지 않지만 데이터 딕셔너리의 뷰와 테이블에 접근해야만 하는 사용자들에게 부여될 수 있습니다.

다른 특별한 롤들 오라클은 또한 데이터베이스를 관리할 수 있도록 허가해주는 롤도 생성합니다. 여러 운영체제에서 이러한 롤들은 OSOPER 와OSDBA라 불리웁니다. 이름은 운영 체제에 따라 다를 수 있습니다.


오라클 데이터베이스를 생성하면 기본적으로 몇 가지의 Role이 생성 됩니다.


DBA_ROLES데이터 사전을 통하여 미리 정의된 Role을 조회 할 수 있습니다.


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

....

이 외에도 많이 ROLE이 존재합니다.

그 중에서 가장 많이 사용하는 3가지만 설명 하겠습니다.





CONNECT


- 오라클에 접속 할 수 있는 세션 생성 및 테이블을 생성하거나 조회 할 수 있는 가장 일반적인 권한들로 이루어져 있습니다.


- CONNECT Role이 없으면 유저를 생성하고서도 Oracle에 접속 할 수가 없습니다.


- 아래의 명령어로 CONNECT Role이 어떤 권한으로 이루어져 있는지 확인 할 수 있습니다.



SQL>SELECT grantee, privilege

FROM DBA_SYS_PRIVS

WHERE grantee = 'CONNECT';


GRANTEE PRIVILEGE

----------- ---------------------

CONNECT ALTER SESSION

CONNECT CREATE CLUSTER

CONNECT CREATE DATABASE LINK

CONNECT CREATE SEQUENCE

CONNECT CREATE SESSION

CONNECT CREATE SYNONYM

CONNECT CREATE TABLE

CONNECT CREATE VIEW




RESOURCE


- Store Procedure나 Trigger와 같은 PL/SQL을 사용할 수 있는 권한 들로 이루어져 있습니다.


- PL/SQL을 사용하려면 RESOURCE Role을 부여해야 합니다.


- 유저를 생성하면 일반적으로 CONNECT, RESOURCE롤을 부여 합니다.


SQL>SELECT grantee, privilege

FROM DBA_SYS_PRIVS

WHERE grantee = 'RESOURCE';




DBA


- 모든 시스템 권한이 부여된 Role입니다.


- DBA Role은 데이터베이스 관리자에게만 부여해야 합니다.


■ 다른 롤은 데이터베이스와 함께 제공되는 SQL 스크립트로 정의됩니다. 예를 들어

AQ_ADMINSRTATOR_ROLE 과 AQ_USER_ROLE 은 dbmsaqsd.sql의 스크립트로 생성됩니다. 이들 롤은 Advanced Queuing기능과 함께 사용됩니다.

-미리 정의된 롤에만 의지할 필요는 없습니다. 오히려 데이터베이스 보안을 위해 자신만의

고유 롤을 설계하도록 권장하는 바입니다. 미리 정의된 롤은 앞으로의 오라클 버전에서는

자동적으로 생성되지 않을 수 도 있습니다.

-Solaris 같은 플랫폼에서는 RESOUCE 롤을 부여받은 사용자는 UNLIMITED

TABLESPACE 권한이 롤에 할당되어 있지 않더라도 명시적으로 함께 받게 됩니다.


■ 롤 수정

ALTER ROLE sales_clerk

IDENTIFIED BY commission;

ALTER ROLE hr_clerk

IDENTIFIED EXTERNALLY;

ALTER ROLE hr_manager

NOT IDENTIFIED;

롤은 그 인증 방식을 변경하기 위해서만 수정될 수 있습니다.

구문

룰을 수정하려면 다음 명령을 사용하십시요.

ALTER ROLE role (NOT IDENTIFIED) | IDENTIFIED

(BY password | externally));

구문에서:

role 롤의 이름

NOT IDENTIFIED 롤을 enable할 때 검증이 필요없음을 의미

IDENTIFIED 롤을 enable할 때 검증이 필요함을 의미

BY password 를을 enable할 때 사용될 암호 제공

EXTERNALLY 롤을 enable하기 전에 사용자가 외부 서비스

(운영체제나 협력 업체(third-party)

서비스)에 의해 허가를 받아야만 함을 의미


■ 롤 지정

GRANT sales_clerd TO scott;

GRANT hr_clerk,

TO hr_manager;

GRANT hr_manager TO scott

WITH ADMIN OPTION;

구문

사용자에게 롤을 부여하려면 사용자에게 시스템 권한을 부여할 때 사용했던 것과

동일한 구문의 명령을 사용하십시요.

GRANT role[ , role] . . .

TO {user | role | PUBLIC}

[, {user | role | PUBLIC}]

[WITH ADMIN OPTION]

구문에서:

role 부여될 롤, 또는 롤을 부여받을 롤

user 롤을 받을 사용자

role 롤을 받을 롤

PUBLIC 모든 사용자에게 롤을 부여

WITH ADMIN OPTION 부여받은 롤을 다른 사용자나 롤에게 부여하는 것을

가능하게 합니다.

(이 옵션으로 롤을 부여하면 롤을 받은 사용자는 다른

사용자에게 받은 롤을 부여하거나 철회할 수 있으며

롤을 수정하거나 삭제할 수 있습니다.)


■ 롤을 생성한 사용자는 암시적으로 ADMIN OPTION과 함께 생성한 롤이 지정된 것입니다. ADMIN OPTION을 가진 롤을 부여받지 못한 사용자가 다른 사용자에게 롤을 부여하거나 철회하려면 GRANT ANY ROLE 시스템 권한이 필요합니다.


■ 기본 롤 설정

ALTER USER SCOTT

DEFAULT ROLE hr_clerk, sales_clerk;

ALTER USER scott DEFAULT ROLE ALL;

ALTER USER scott DEFAULT ROLE ALL

EXCEPT hr_clerk;

ALTER USER scott DEFAULT ROLE NONE;

사용자는 많은 롤을 할당받을 수 있습니다. default role은 사용자가 로그인 할 때 자동적으로 enable 되는 할당된 롤의 부분 집합입니다. 디폴트로 사용자에게 할당된 모든 롤이 로그인 시 enable됩니다.

ALTER USER 명령으로 사용자에 대한 기본 롤을 제한하십시요.

구문

사용자에게 기본 롤을 할당하려면 다음 구문을 사용하십시요.

ALTER USER user DEFAULT ROLE

{role, [,role]...|ALL [EXCEPT role [,role]...] | NONE}

구문에서:

user 롤을 부여받을 사용자 이름

role 사용자에게 기본 롤이 될 롤

ALL 사용자에게 부여된 롤 중 EXCEPT절에 나열된것을 제외한 모든

롤을 기본 롤로 만듭니다.(기본값입니다.)

EXCEPT 기본 롤에 포함되지 않는 롤을 나타냅니다.


NONE 기본 롤로 아무것도 부여하지 않습니다. (로그인 시 사용자가

갖는 권한은 사용자에게 직접 할당된 권한 뿐입니다.)

기본 롤이 되려면 반드시 사전에 부여되어 있어야 합니다. 따라서 CREATE USER 명령으로

기본 암호로 인증되는 롤의 경우 기본 롤로 만들 때에는 암호가 필요하지 않습니다.

0-(17~18) ROLE Enable과 Disable

. 사용자로부터 임시로 롤을 철회하려면 그롤을 disable하십시요.

. 임시로 롤을 부여하려면 그 롤을 enable하십시요.

. SET ROLE 명령은 롤을 enable하고 disable합니다.

. 로그인 시 기본 롤이 enable됩니다.

. 롤을 enable할 때 암호가 필요할 수도 있습니다.

롤에 관련된 권한을 임시로 활성화시키려면 롤을 enable하거나 disable

하십시오. 롤을 enable하려면 먼저 해당 롤이 사용자에게 부여되어 있어야 합니다.

롤이 enable되면 사용자는 그 롤에 부여된 권한을 사용할 수 있습니다. 롤이 disable되면

권한이 사용자에게 직접 부여되거나 그 권한을 사용 가능하게 해주는 다른 롤이

enable되지 않는 한 사용자는 disable된 롤에 관련된 권한을 사용할 수 없습니다.

세션동안 여러 롤들이 enable될수있습니다.

세션을 시작하면 다시 기본 롤들만 enable되어 있게 됩니다.

.롤이 enable 되도록 지정

SET ROLE 명령과 DBMS_SESSION.SET_ROLE 프로시저는 명령에 포함된 모든 롤을 enable 하며 포함되지 않은 롤은 모두 disable합니다. 롤은 PL/SQL 명령을 허용하는 어떤 도구나 프로그램에서 enable될 수 있습니다. 세션을 시작하면 다시 기본 롤들만 enable되어 있게 됩니다.

ALTER USER...DEFAULT ROLE 명령을 사용하여 사용자가 로그인할 때 어떤 롤이 ebable되게 할 것인지 지정할 수 있습니다. 다른 롤은 모두 disable됩니다.

롤을 enable하는데 암호가 필요할 수도 있습니다. 롤을 enable하려면 암호가 SET ROLE

명령에 포함되어 있어야 합니다.

사용자에게 할당된 기본 롤은 암호가 필요하지 않습니다. 암호가 없는 롤들과 마찬가지로

로그인 시 enable됩니다.


제한사항

롤은 저장 프로시저로부터는 enable될 수 없습니다. 왜냐하면 무엇보다도 이 작업이

프로시저를 호출한 보안 도메인(권한 집합)을 변경할 수도 있기 때문입니다.

그러므로 PL/SQL에서는 롤이 익명의 블록(anonymous block)이나 응용 프로그램

프로시저 (예를 들자면 oracle Forms 프로시저)에서만 enable되고 disable될 수있고

저장 프로시저에서는 안 됩니다.

저장 프로시저가 SET ROLE에 대한 명령을 포함하고 있다면 실행시 다음 에러가 발생될

것입니다.

ORA-06565: cannot execute SET ROLE from with stored procedure

■ ROLE Enable과 Disable: 예

SET ROLE sales_clerk

IDENTIFIED BY commission;

SET ROLE hr_clerk;

SET ROLE ALL EXECPT

sales_clerk;

SET ROLE NONE;


구문

롤을 enable하거나 disable하려면 다음 명령을 사용하십시오.

SET ROLE {role [IDENTIFIED BY PASSWORD]

[, role [IDENTIFIED BY PASSWORD] ] ...

| ALL [EXCEPT role [ , role] ... ]

| NONE }

SET ROLE 명령은 사용자에게 부여된 그 밖의 롤은 turn off 시킵니다.

구문에서 :

role 롤 이름

IDENTIFIED

BY password 롤을 enable할때 필요한 암호 제공

ALL EXCEPT 절에 나열된 롤을 제외한, 현재 사용자에게 부여된 모든 롤을

enable(암호를 가진 롤을 enable할 때는 사용할수 없습니다.)

EXCEPT role enable 하지 않은 롤

NONE 현재세션에서 모든 롤 disable(사용자에게 직접 부여된 권한만 활성

상태가 됩니다.)

EXCEPT 절 없는 ALL옵션은 enable된느 모든 롤이 암호를 갖지 않을 때에만 작동합니다.

■ 사용자에게서 롤 제거

REVOKE sales_clerk FROM scott;

REVOKE hr_manager FROM PUBLIC;

구문

사용자에게서 롤을 철회하려면 시스템 권한을 철회할 때 사용하는 것과 동일한 구문을

사용하십시오.

REVOKE role [, role]...

FROM {user|role|PUBLIC}

[, {user|role|PUBLIC} ]...

구문에서 :

role 철회될 롤, 또는 롤이 철회될 롤

user 롤이 철회될 사용자

PUBLIC 모든 사용자로부터 권한이나 롤 철회

롤제거

구문

데이터베이스로부터 룰을 제거하려면 다음 구문을 사용하십시오.

DROP ROLE role

구문에서:

role 제거할 롤

롤을 삭제할 때 오라클 서버는 삭제할 롤이 부여되었던 모든 사용자와

롤로부터 철회한 후 데이터베이스로부터 제거합니다.

ADMIN OPTION과 함께 삭제할 롤을 부여받았거나 DROP ANY ROLE시스템

권한을 가지고 있어야 롤을 삭제할 수 있습니다.


롤 생성시 지침사항

롤이 임무를 수행하는데 필요한 권한을 포함하고 있기 때문에 이름은 보통 응용 프로그램 작업이나 직무 이름입니다. 위의 예는 롤 이름으로 응용 프로그램 작업과 직무 이름을 모두 사용하고 있습니다.

1. 각 응용 프로그램 작업을 위한 롤을 생성합니다. 응용 프로그램 롤의 이름은 payroll같이 응용 프로그램 작업데 대응됩니다.

2. 응용 프로그램 롤에 작업을 수행하는데 필요한 권한을 할당합니다.

3. 각 유형의 사용자를 위한 롤을 생성합니다. 사용자 롤의 이름은 pay_clerk같이 직무 이름에 대응됩니다.

4. 사용자의 롤을 개개의 권한이 아닌 응용 프로그램 롤을 부여합니다.

5. 사용자에게 사용자 롤과 응용 프로그램 롤을 부여합니다.

응용 프로그램을 수정한 결과 payroll작업을 수행하기 위해 새로운 권한이 필요하다면 DBA는 새 권한을 응용 프로그램 롤,PATROLL에 할당하기만 하면 됩니다. 현재 이 작업을 수행하고 있는 사용자는 새 권한을 받게 될 것입니다.


암호와 기본 롤을 사용할 때 지침 사항

암호사용

. 롤을 enable할 때 암호는 추가 레벨의 보안을 제공합니다. 응용 프로그램은 수표를 발행하는데 필요한 PAY_CLERK롤을 enable할 때 사용자가 암호를 입력하도록 요구할 수도 있습니다.

. 암호는 롤이 응용 르로그램을 통해서만 enable되도록 합니다. 이 기술은 위의 예에 나타나 있습니다.

- DBA가 사용자에게 두 롤 PAY_CLERK와 PAY_CLERK_RO를 부여했습니다.

- PAY_CLERK는 payroll clerk 작업을 수행하는데 필요한 모든 권한을 부여 받았습니다.

- PAY_CLERK_RO(RO는 읽기 전용(read only)를 의미)는 payroll clerk 작업을 수행하는데 필요한 테이블 예의 SELECT권한을 부여 받았습니다.

- 사용자는 질의를 수행하기 위해 SQL*Plus에 로그인 할 수 있습니다.

하지만 PAY_CLERK이 기본 롤이 아니고 PAY_CLERK의 암호를 알지 못하므로 데이터를 수정할 수는 없습니다.

- 사용자가 payroll응용 프로그램에 로그인할 때 응용 프로그램은 암호를 제공하여 PAY_CLERK을 enable 합니다. 암호는 프로그램 내에 코당 되어 있어 사용자가 암호를 입력하지 않습니다.


롤 정보 출력

많은 데이터 딕셔너리 뷰가 사용자와 롤에 부여된 권한에 대한 정보를 가지고 있습니다.

SVRMGR> SELECT role, password_required FROM dba_roles;

ROLE PASSWORD

------------------------- --------------

CONNECT NO

RESOURCE NO

DBA NO

AQ_USER_ROLE NO

SELECT_CATALOG_ROLE NO

EXECUTE_CATALOG_ROLE NO

롤 관리


■ 목적

. 롤 생성과 수정

. 롤의 가용성 제어

. 롤 제거

. 미리 정의된 롤 사용

. 데이터 딕셔너리의 롤 정보 출력


오라클의 롤을 이용하면 권한 관리가 쉽고 간편해 집니다. 롤은 사용자나 다른 롤에

부여되는 관련 권한들의 명명된 그룹입니다. 롤은 데이터베이스 내에서 권한을

관리하기 쉽도록 설계되었습니다.


롤의 특성

. 시스템 권한을 부여하고 철회할때 사용되는 것과 동일한 명령으로 사용자에게 부여하고

철회할 수 있습니다.

. 롤 자신(간접적으로도 불가능)을 제외한 모든 사용자와 롤에게 부여할 수 있습니다.

. 시스템 권한과 오브젝트 권한으로 이루어집니다.

. 각 사용자가 부여받은 롤을 enable하거나 disable할 수 있습니다.

. 암호를 요구하도록 할 수도 있습니다.

. 각 롤 이름은 기존의 사용자 이름과 롤 이름과는 다른 유일한 것이어야 합니다.

. 누군가가 공유하는 것도 아니고 어느 스키마에 속하는 것도 아닙니다.

. 데이터 딕셔너리에 설명되어져 있습니다.


■ 롤의 장점

권한 부여 작업 감소

동적 권한 관리

권한의 선택적 사용

OS를 통해 부여

연쇄적으로 철회되지 않음

연쇄적으로 철회되지 않음

향상된 성능

권한부여 작업 감소

롤을 사용하면 권한 관리가 간단해 집니다.

일련의 권한을 여러 사용자에게 부여하기 보다는 권한들을 하나의 롤에 부여한 후

그 롤을 각 사용자에게 부여하십시오

동적 권한 관리

롤과 관련된 권한이 수정되면 해단 롤을 부여받은 모든 사용자는

자동적으로 죽시 수정된 권한을 갖게 됩니다.

권한의 선택적 사용

롤은 enable 되거나 disable되어 임시로 권한을 on,off할 수 있습니다.

롤을 enable하는 것은 사용자가 그 롤을 부여받았는지 검증하는데도 사용될 수 있습니다.

OS를 통해 부여

운영 체제 명령이나 유틸리티가 데이터베이스의 사용자에게 롤을 할당하는데 사용될수

있습니다.


■ 연쇄적으로 철회하지 않음

연쇄 철회를 발생시키지 않고 오브젝트 권한을 철회할 수 있습니다.

향상된 성능

롤을 disable하여 실행 중 검증해야 할 권한을 줄일 수 있습니다.

롤을 사용하면 데이타 딕셔너리에 저장된 부여에 대한 정보가 줄어들게 됩니다.


■ 롤생성

CREATE ROLE sales_clerk;

CREATE ROLE hr_clerk

IDENTIFIED by bonus;

CREATE ROLE hr_manager

IDENTIFIED EXTERNALLY;

구문

롤을 생성하려면 다음 명령을 사용하십시오

CREATE ROLE role [NOT IDENTIFIED | IDENTIFIED

{BY password | EXTERNALLY } ]

구문에서

role 롤 이름

NOT IDENTIFIED 롤을 enable할때 아무런 검증도 필요하지 않음을 의미

BY password 롤을 enable할때 사용자가 입력해야만 하는 암호 제공

EXTERNALLY 사용자가 롤을 enable하기전에 외부 서비스(운영 체제나 협력

업체서비스 같은)에 의해 인증을 받아햐만 함을 의미


■ 주 CREATE ROLE IDENTIFIED GLOBALLY 명령은 Oracle Security Server를 통해 롤 검증이 이루어져만 하도록 지정합니다.


■ 미리 정의된 롤 사용


롤 명 설 명

-------------------------------------------------------------------

CONNECT | 이전 버전과의 호환을 위해서 제공됩니다

RESOURCE | 이전 버전과의 호환을 위해서 제공됩니다

DBA | 모든 시스템 권한과 WITH ADMIN OPTION

EXP_FULL_DATABASE | DB를 익스포트할 권한

IMP_FULL_DATABASE | DB를 임포트할 권한

DELETE_CATALOG_ROLE | DB 테이블에 대한 DELETE 권한

EXECUTE_CATALOG_ROLE | DD 패키지에 대한 EXECUTE권한

SELECT_CATALOG_ROLE | DD 테이블에 대한 SELECT 권한

--------------------------------------------------------------------


위의 롤들은 오라클 데이터베이스에 자동적으로 정의됩니다. Connect, Resouse롤은 오라클 이전 버전과의 역 호환을 위해 제공되며 오라클 데이터베이스의 다른 롤과 같은 방법으로 수정할 수 있습니다.

EXP_FULL_DATABASEIMP_FULL_DATABASE 롤이 임포트와 익스포트 유틸리티를 사용할 때의 편의를 위해 제공됩니다

DELETE_CATALOG_ROLE, EXECUTE_CARLOG_ROLE, 그리고 SELECT_CATALOG_ROLE

롤은 데이터 딕셔너리 뷰와 패키지에의접근을 위해 제공됩니다. 이들 롤은 DBA 롤은 가지고 있지 않지만 데이터 딕셔너리의 뷰와 테이블에 접근해야만 하는 사용자들에게 부여될 수 있습니다.

다른 특별한 롤들 오라클은 또한 데이터베이스를 관리할 수 있도록 허가해주는 롤도 생성합니다. 여러 운영체제에서 이러한 롤들은 OSOPER 와OSDBA라 불리웁니다. 이름은 운영 체제에 따라 다를 수 있습니다.


오라클 데이터베이스를 생성하면 기본적으로 몇 가지의 Role이 생성 됩니다.


DBA_ROLES데이터 사전을 통하여 미리 정의된 Role을 조회 할 수 있습니다.


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

....

이 외에도 많이 ROLE이 존재합니다.

그 중에서 가장 많이 사용하는 3가지만 설명 하겠습니다.





CONNECT


- 오라클에 접속 할 수 있는 세션 생성 및 테이블을 생성하거나 조회 할 수 있는 가장 일반적인 권한들로 이루어져 있습니다.


- CONNECT Role이 없으면 유저를 생성하고서도 Oracle에 접속 할 수가 없습니다.


- 아래의 명령어로 CONNECT Role이 어떤 권한으로 이루어져 있는지 확인 할 수 있습니다.



SQL>SELECT grantee, privilege

FROM DBA_SYS_PRIVS

WHERE grantee = 'CONNECT';


GRANTEE PRIVILEGE

----------- ---------------------

CONNECT ALTER SESSION

CONNECT CREATE CLUSTER

CONNECT CREATE DATABASE LINK

CONNECT CREATE SEQUENCE

CONNECT CREATE SESSION

CONNECT CREATE SYNONYM

CONNECT CREATE TABLE

CONNECT CREATE VIEW




RESOURCE


- Store Procedure나 Trigger와 같은 PL/SQL을 사용할 수 있는 권한 들로 이루어져 있습니다.


- PL/SQL을 사용하려면 RESOURCE Role을 부여해야 합니다.


- 유저를 생성하면 일반적으로 CONNECT, RESOURCE롤을 부여 합니다.


SQL>SELECT grantee, privilege

FROM DBA_SYS_PRIVS

WHERE grantee = 'RESOURCE';




DBA


- 모든 시스템 권한이 부여된 Role입니다.


- DBA Role은 데이터베이스 관리자에게만 부여해야 합니다.


■ 다른 롤은 데이터베이스와 함께 제공되는 SQL 스크립트로 정의됩니다. 예를 들어

AQ_ADMINSRTATOR_ROLE 과 AQ_USER_ROLE 은 dbmsaqsd.sql의 스크립트로 생성됩니다. 이들 롤은 Advanced Queuing기능과 함께 사용됩니다.

-미리 정의된 롤에만 의지할 필요는 없습니다. 오히려 데이터베이스 보안을 위해 자신만의

고유 롤을 설계하도록 권장하는 바입니다. 미리 정의된 롤은 앞으로의 오라클 버전에서는

자동적으로 생성되지 않을 수 도 있습니다.

-Solaris 같은 플랫폼에서는 RESOUCE 롤을 부여받은 사용자는 UNLIMITED

TABLESPACE 권한이 롤에 할당되어 있지 않더라도 명시적으로 함께 받게 됩니다.


■ 롤 수정

ALTER ROLE sales_clerk

IDENTIFIED BY commission;

ALTER ROLE hr_clerk

IDENTIFIED EXTERNALLY;

ALTER ROLE hr_manager

NOT IDENTIFIED;

롤은 그 인증 방식을 변경하기 위해서만 수정될 수 있습니다.

구문

룰을 수정하려면 다음 명령을 사용하십시요.

ALTER ROLE role (NOT IDENTIFIED) | IDENTIFIED

(BY password | externally));

구문에서:

role 롤의 이름

NOT IDENTIFIED 롤을 enable할 때 검증이 필요없음을 의미

IDENTIFIED 롤을 enable할 때 검증이 필요함을 의미

BY password 를을 enable할 때 사용될 암호 제공

EXTERNALLY 롤을 enable하기 전에 사용자가 외부 서비스

(운영체제나 협력 업체(third-party)

서비스)에 의해 허가를 받아야만 함을 의미


■ 롤 지정

GRANT sales_clerd TO scott;

GRANT hr_clerk,

TO hr_manager;

GRANT hr_manager TO scott

WITH ADMIN OPTION;

구문

사용자에게 롤을 부여하려면 사용자에게 시스템 권한을 부여할 때 사용했던 것과

동일한 구문의 명령을 사용하십시요.

GRANT role[ , role] . . .

TO {user | role | PUBLIC}

[, {user | role | PUBLIC}]

[WITH ADMIN OPTION]

구문에서:

role 부여될 롤, 또는 롤을 부여받을 롤

user 롤을 받을 사용자

role 롤을 받을 롤

PUBLIC 모든 사용자에게 롤을 부여

WITH ADMIN OPTION 부여받은 롤을 다른 사용자나 롤에게 부여하는 것을

가능하게 합니다.

(이 옵션으로 롤을 부여하면 롤을 받은 사용자는 다른

사용자에게 받은 롤을 부여하거나 철회할 수 있으며

롤을 수정하거나 삭제할 수 있습니다.)


■ 롤을 생성한 사용자는 암시적으로 ADMIN OPTION과 함께 생성한 롤이 지정된 것입니다. ADMIN OPTION을 가진 롤을 부여받지 못한 사용자가 다른 사용자에게 롤을 부여하거나 철회하려면 GRANT ANY ROLE 시스템 권한이 필요합니다.


■ 기본 롤 설정

ALTER USER SCOTT

DEFAULT ROLE hr_clerk, sales_clerk;

ALTER USER scott DEFAULT ROLE ALL;

ALTER USER scott DEFAULT ROLE ALL

EXCEPT hr_clerk;

ALTER USER scott DEFAULT ROLE NONE;

사용자는 많은 롤을 할당받을 수 있습니다. default role은 사용자가 로그인 할 때 자동적으로 enable 되는 할당된 롤의 부분 집합입니다. 디폴트로 사용자에게 할당된 모든 롤이 로그인 시 enable됩니다.

ALTER USER 명령으로 사용자에 대한 기본 롤을 제한하십시요.

구문

사용자에게 기본 롤을 할당하려면 다음 구문을 사용하십시요.

ALTER USER user DEFAULT ROLE

{role, [,role]...|ALL [EXCEPT role [,role]...] | NONE}

구문에서:

user 롤을 부여받을 사용자 이름

role 사용자에게 기본 롤이 될 롤

ALL 사용자에게 부여된 롤 중 EXCEPT절에 나열된것을 제외한 모든

롤을 기본 롤로 만듭니다.(기본값입니다.)

EXCEPT 기본 롤에 포함되지 않는 롤을 나타냅니다.


NONE 기본 롤로 아무것도 부여하지 않습니다. (로그인 시 사용자가

갖는 권한은 사용자에게 직접 할당된 권한 뿐입니다.)

기본 롤이 되려면 반드시 사전에 부여되어 있어야 합니다. 따라서 CREATE USER 명령으로

기본 암호로 인증되는 롤의 경우 기본 롤로 만들 때에는 암호가 필요하지 않습니다.

0-(17~18) ROLE Enable과 Disable

. 사용자로부터 임시로 롤을 철회하려면 그롤을 disable하십시요.

. 임시로 롤을 부여하려면 그 롤을 enable하십시요.

. SET ROLE 명령은 롤을 enable하고 disable합니다.

. 로그인 시 기본 롤이 enable됩니다.

. 롤을 enable할 때 암호가 필요할 수도 있습니다.

롤에 관련된 권한을 임시로 활성화시키려면 롤을 enable하거나 disable

하십시오. 롤을 enable하려면 먼저 해당 롤이 사용자에게 부여되어 있어야 합니다.

롤이 enable되면 사용자는 그 롤에 부여된 권한을 사용할 수 있습니다. 롤이 disable되면

권한이 사용자에게 직접 부여되거나 그 권한을 사용 가능하게 해주는 다른 롤이

enable되지 않는 한 사용자는 disable된 롤에 관련된 권한을 사용할 수 없습니다.

세션동안 여러 롤들이 enable될수있습니다.

세션을 시작하면 다시 기본 롤들만 enable되어 있게 됩니다.

.롤이 enable 되도록 지정

SET ROLE 명령과 DBMS_SESSION.SET_ROLE 프로시저는 명령에 포함된 모든 롤을 enable 하며 포함되지 않은 롤은 모두 disable합니다. 롤은 PL/SQL 명령을 허용하는 어떤 도구나 프로그램에서 enable될 수 있습니다. 세션을 시작하면 다시 기본 롤들만 enable되어 있게 됩니다.

ALTER USER...DEFAULT ROLE 명령을 사용하여 사용자가 로그인할 때 어떤 롤이 ebable되게 할 것인지 지정할 수 있습니다. 다른 롤은 모두 disable됩니다.

롤을 enable하는데 암호가 필요할 수도 있습니다. 롤을 enable하려면 암호가 SET ROLE

명령에 포함되어 있어야 합니다.

사용자에게 할당된 기본 롤은 암호가 필요하지 않습니다. 암호가 없는 롤들과 마찬가지로

로그인 시 enable됩니다.


제한사항

롤은 저장 프로시저로부터는 enable될 수 없습니다. 왜냐하면 무엇보다도 이 작업이

프로시저를 호출한 보안 도메인(권한 집합)을 변경할 수도 있기 때문입니다.

그러므로 PL/SQL에서는 롤이 익명의 블록(anonymous block)이나 응용 프로그램

프로시저 (예를 들자면 oracle Forms 프로시저)에서만 enable되고 disable될 수있고

저장 프로시저에서는 안 됩니다.

저장 프로시저가 SET ROLE에 대한 명령을 포함하고 있다면 실행시 다음 에러가 발생될

것입니다.

ORA-06565: cannot execute SET ROLE from with stored procedure

■ ROLE Enable과 Disable: 예

SET ROLE sales_clerk

IDENTIFIED BY commission;

SET ROLE hr_clerk;

SET ROLE ALL EXECPT

sales_clerk;

SET ROLE NONE;


구문

롤을 enable하거나 disable하려면 다음 명령을 사용하십시오.

SET ROLE {role [IDENTIFIED BY PASSWORD]

[, role [IDENTIFIED BY PASSWORD] ] ...

| ALL [EXCEPT role [ , role] ... ]

| NONE }

SET ROLE 명령은 사용자에게 부여된 그 밖의 롤은 turn off 시킵니다.

구문에서 :

role 롤 이름

IDENTIFIED

BY password 롤을 enable할때 필요한 암호 제공

ALL EXCEPT 절에 나열된 롤을 제외한, 현재 사용자에게 부여된 모든 롤을

enable(암호를 가진 롤을 enable할 때는 사용할수 없습니다.)

EXCEPT role enable 하지 않은 롤

NONE 현재세션에서 모든 롤 disable(사용자에게 직접 부여된 권한만 활성

상태가 됩니다.)

EXCEPT 절 없는 ALL옵션은 enable된느 모든 롤이 암호를 갖지 않을 때에만 작동합니다.

■ 사용자에게서 롤 제거

REVOKE sales_clerk FROM scott;

REVOKE hr_manager FROM PUBLIC;

구문

사용자에게서 롤을 철회하려면 시스템 권한을 철회할 때 사용하는 것과 동일한 구문을

사용하십시오.

REVOKE role [, role]...

FROM {user|role|PUBLIC}

[, {user|role|PUBLIC} ]...

구문에서 :

role 철회될 롤, 또는 롤이 철회될 롤

user 롤이 철회될 사용자

PUBLIC 모든 사용자로부터 권한이나 롤 철회

롤제거

구문

데이터베이스로부터 룰을 제거하려면 다음 구문을 사용하십시오.

DROP ROLE role

구문에서:

role 제거할 롤

롤을 삭제할 때 오라클 서버는 삭제할 롤이 부여되었던 모든 사용자와

롤로부터 철회한 후 데이터베이스로부터 제거합니다.

ADMIN OPTION과 함께 삭제할 롤을 부여받았거나 DROP ANY ROLE시스템

권한을 가지고 있어야 롤을 삭제할 수 있습니다.


롤 생성시 지침사항

롤이 임무를 수행하는데 필요한 권한을 포함하고 있기 때문에 이름은 보통 응용 프로그램 작업이나 직무 이름입니다. 위의 예는 롤 이름으로 응용 프로그램 작업과 직무 이름을 모두 사용하고 있습니다.

1. 각 응용 프로그램 작업을 위한 롤을 생성합니다. 응용 프로그램 롤의 이름은 payroll같이 응용 프로그램 작업데 대응됩니다.

2. 응용 프로그램 롤에 작업을 수행하는데 필요한 권한을 할당합니다.

3. 각 유형의 사용자를 위한 롤을 생성합니다. 사용자 롤의 이름은 pay_clerk같이 직무 이름에 대응됩니다.

4. 사용자의 롤을 개개의 권한이 아닌 응용 프로그램 롤을 부여합니다.

5. 사용자에게 사용자 롤과 응용 프로그램 롤을 부여합니다.

응용 프로그램을 수정한 결과 payroll작업을 수행하기 위해 새로운 권한이 필요하다면 DBA는 새 권한을 응용 프로그램 롤,PATROLL에 할당하기만 하면 됩니다. 현재 이 작업을 수행하고 있는 사용자는 새 권한을 받게 될 것입니다.


암호와 기본 롤을 사용할 때 지침 사항

암호사용

. 롤을 enable할 때 암호는 추가 레벨의 보안을 제공합니다. 응용 프로그램은 수표를 발행하는데 필요한 PAY_CLERK롤을 enable할 때 사용자가 암호를 입력하도록 요구할 수도 있습니다.

. 암호는 롤이 응용 르로그램을 통해서만 enable되도록 합니다. 이 기술은 위의 예에 나타나 있습니다.

- DBA가 사용자에게 두 롤 PAY_CLERK와 PAY_CLERK_RO를 부여했습니다.

- PAY_CLERK는 payroll clerk 작업을 수행하는데 필요한 모든 권한을 부여 받았습니다.

- PAY_CLERK_RO(RO는 읽기 전용(read only)를 의미)는 payroll clerk 작업을 수행하는데 필요한 테이블 예의 SELECT권한을 부여 받았습니다.

- 사용자는 질의를 수행하기 위해 SQL*Plus에 로그인 할 수 있습니다.

하지만 PAY_CLERK이 기본 롤이 아니고 PAY_CLERK의 암호를 알지 못하므로 데이터를 수정할 수는 없습니다.

- 사용자가 payroll응용 프로그램에 로그인할 때 응용 프로그램은 암호를 제공하여 PAY_CLERK을 enable 합니다. 암호는 프로그램 내에 코당 되어 있어 사용자가 암호를 입력하지 않습니다.


롤 정보 출력

많은 데이터 딕셔너리 뷰가 사용자와 롤에 부여된 권한에 대한 정보를 가지고 있습니다.

SVRMGR> SELECT role, password_required FROM dba_roles;

ROLE PASSWORD

------------------------- --------------

CONNECT NO

RESOURCE NO

DBA NO

AQ_USER_ROLE NO

SELECT_CATALOG_ROLE NO

EXECUTE_CATALOG_ROLE NO

AQ_ADMINISTRATOR_ROLE NO

RECOVERY_CATALOG_OWNER NO

IMP_FULL_DATABASE NO

EXP_FULL_DATABSE NO

SNMPAGENT NO

SALES_CLERK YES

HR_CLERK EXTERNAL

14 row

s selectd.




AQ_ADMINISTRATOR_ROLE NO

RECOVERY_CATALOG_OWNER NO

IMP_FULL_DATABASE NO

EXP_FULL_DATABSE NO

SNMPAGENT NO

SALES_CLERK YES

HR_CLERK EXTERNAL

14 row

s selectd.

'ORACLE' 카테고리의 다른 글

Pro*C란  (11) 2007.03.06
sqlplus 사용을 고급화하기.  (0) 2007.01.12
테이블의 필드명 변경하기...  (0) 2006.12.15
테이블 스페이스의 정보 확인  (0) 2006.09.08
ORA 1688 에러발생  (0) 2006.09.08