2015년 3월 18일 수요일

오라클의 개념_9

ㅇ ㅂㅇ

권한 관리



권한
 권한은 특정 유형의 SQL 문을 실행하거나 다른 사용자의 객체를 액세스할 수 있는 권한입
니다. 이 권한으로 다음 작업을 수행할 수 있습니다.
  • 데이터베이스 접속
  • 테이블 생성
  • 다른 사용자의 테이블에서 행 선택
  • 다른 사용자의 내장 프로시저 실행
시스템 권한
 사용자는 각 시스템 권한을 사용하여 특정 데이터베이스 작업이나 데이터베이스 작업 클
래스를 수행할 수 있습니다. 예를 들어, 테이블스페이스 생성 권한은 시스템 권한입니다.
객체권한
 사용자는 각 객체 권한을 사용하여 테이블, 뷰, 시퀀스, 프로시저, 함수 또는 패키지 등의 특
정 객체에 특정 작업을 수행할 수 있습니다. (다른 유저의 것에 대해 접근 가능한 권한 획득)
 DBA는 다음과 같이 권한을 제어합니다.
  • 사용자에게 한 유형의 작업을 수행할 권한 제공
  • 시스템 기능을 수행할 수 있는 액세스 부여 및 취소
  • 사용자나 롤에 직접 권한 부여
  • 모든 사용자(PUBLIC)에게 권한 부여


시스템권한
 권한은 다음과 같이 분류할 수 있습니다.
 • CREATE SESSION 및 CREATE TABLESPACE와 같이 시스템 작업을 가능하게 하는 권한
 • CREATE TABLE과 같이 사용자가 소유한 스키마에 있는 객체의 관리를 가능하게 하는 권한
 • CREATE ANY TABLE과 같이 임의의 스키마에 있는 객체의 관리를 가능하게 하는 권한
 권한은 사용자나 롤에 시스템 권한을 추가 및 취소하는 DDL 명령인 GRANT와 REVOKE를
사용하여 제어할 수 있습니다. 롤에 대한 자세한 내용은 "롤 관리" 단원을 참조하십시오.


시스템 권한 : 예제
  • CREATE INDEX라는 권한은 없습니다.
  • CREATE TABLE은 CREATE INDEX 및 ANALYZE 명령을 포함합니다. 사용자는 테이블스페이스에 대한 할당량을 소유해야 하거나 UNLIMITED TABLESPACE 권한을 부여받았어야 합니다.
  • CREATE TABLE, CREATE PROCEDURE 또는 CREATE CLUSTER 등의 권한은 이러한 객체의 삭제 권한을 포함합니다.
  • UNLIMITED TABLESPACE는 롤에 부여될 수 없습니다.
  • 다른 스키마에서 테이블을 자르기 위해서는 DROP ANY TABLE 권한이 필요합니다.


시스템 권한 부여 : 작업을 하기 위한 기본적인 권한
SQL 문 GRANT를 사용하여 사용자에게 시스템 권한을 부여합니다.
권한을 부여받은 사용자는 ADMIN 옵션을 사용하여 시스템 권한을 다른 사용자에게 부여
할 수 있습니다. ADMIN 옵션을 사용하여 시스템 권한을 부여할 경우에는 주의하십시오.
이러한 권한은 일반적으로 보안 관리자가 가지며 다른 사용자들에게는 거의 부여되지 않
습니다.
GRANT {system_privilege|role}
        [, {system_privilege|role} ]...
      TO {user|role|PUBLIC}
        [, {user|role|PUBLIC} ]...
      [WITH ADMIN OPTION]
설명:
system_privilege: 부여할 시스템 권한을 지정합니다.
role: 부여할 롤 이름을 지정합니다.
PUBLIC: 모든 사용자에게 시스템 권한을 부여합니다.
WITH ADMIN OPTION: 권한을 부여받은 사람이 그 권한이나 롤을 다른 사용자나 롤에 부여할 수 있게 합니다.


SYSDBA 및 SYSOPER 권한
 데이터베이스 관리자만이 관리자 권한으로 데이터베이스에 연결할 수 있어야 합니다.
SYSDBA로 연결하면 데이터베이스나 데이터베이스 내의 객체에 작업을 수행할 수 있는 제한되지 않은 권한이 사용자에게 부여됩니다.


시스템 권한 제한 사항
 딕셔너리 보호 방식은 승인되지 않은 사용자가 딕셔너리 객체를 액세스하는 것을 방지합니다.
SYSDBA 및 SYSOPER 롤만이 딕셔너리 객체를 액세스할 수 있습니다. 다른 스키마에 있는객체를 액세스할 수 있는 시스템 권한으로 딕셔너리 객체를 액세스할 수 없습니다. 예를 들어, SELECT ANY TABLE 권한을 가진 사용자는 다른 스키마에 있는 뷰와 테이블을 액세스 할 수 있지만 딕셔너리 객체(기본 테이블, 뷰, 패키지 및 동의어)는 선택할 수 없습니다.
매개변수가 TRUE로 설정되어 있으면 SYS 스키마에 있는 객체를 액세스할 수 있습니다.
(Oracle7 작업 방식) 이 매개변수가 FALSE로 설정되어 있으면 다른 스키마에 있는 객체를 액세스할 수 있는 시스템 권한으로 딕셔너리 스키마에 있는 객체를 액세스할 수 없습니다.
예를 들어, O7_DICTIONARY_ACCESSIBILITY=FALSE인 경우 SELECT ANY TABLE 문으로 SYS 스키마를 제외한 스키마에 있는 뷰나 테이블을 액세스할 수 있습니다. (딕셔너리는 액세스할 수 없습니다.) 시스템 권한 EXECUTE ANY PROCEDURE는 SYS 스키마를 제외한 다른 스키마에 있는 프로시저를 액세스할 수 있습니다.


시스템 권한 취소
REVOKE SQL 문을 사용하여 시스템 권한을 취소할 수 있습니다. 시스템 권한에 대해
ADMIN OPTION 권한이 있는 사용자는 다른 데이터베이스 사용자의 권한을 취소할 수 있
습니다. 권한을 취소하는 사용자가 원래 권한을 부여한 사용자와 반드시 동일할 필요는 없
습니다.
REVOKE {system_privilege|role}
  [, {system_privilege|role} ]...
FROM {user|role|PUBLIC}
  [, {user|role|PUBLIC} ]....


시스템 권한 취소
ADMIN OPTION을 사용하여 시스템 권한을 부여했는지 여부와 무관하게 시스템 권한을
취소할 때는 연쇄적으로 취소되지 않습니다.
다음 시나리오는 이에 대해 설명합니다.
시나리오
1. DBA가 ADMIN OPTION을 사용하여 Jeff에게 CREATE TABLE 시스템 권한을 부여합니다.
2. Jeff가 테이블을 생성합니다.
3. Jeff가 CREATE TABLE 시스템 권한을 Emi에게 부여합니다.
4. Emi가 테이블을 생성합니다.
5. DBA가 Jeff에게 부여된 CREATE TABLE 시스템 권한을 취소합니다.

결과
Jeff의 테이블은 여전히 존재하지만 새 테이블을 생성할 수 없습니다.
Emi는 여전히 테이블과 CREATE TABLE 시스템 권한을 갖습니다.


객체 권한
 객체 권한이란 특정 테이블, 뷰, 시퀀스, 프로시저, 함수 또는 패키지에서 특정 작업을 수행
할 수 있는 권한 또는 권리입니다. 각 객체에는 부여 가능한 권한의 특정 집합이 있습니다.
위의 테이블에는 다양한 객체의 권한을 나열합니다. 시퀀스에 적용할 수 있는 권한은 SELECT와 ALTER밖에 없습니다. UPDATE, REFERENCES 및 INSERT는 갱신 가능한 열의
부분 집합을 지정하여 제한할 수 있습니다. SELECT는 열의 부분 집합이 있는 뷰를 생성하
거나 뷰에 SELECT 권한을 부여함으로써 제한할 수 있습니다. 동의어에 대한 부여는 동의
어가 참조하는 기본 테이블에 대한 부여로 변환됩니다.


객체 권한 부여
GRANT { object_privilege [(column_list)]
         [, object_privilege [(column_list)] ]...
         |ALL [PRIVILEGES]}
ON [schema.]object
TO {user|role|PUBLIC}[, {user|role|PUBLIC} ]...
        [WITH GRANT OPTION]

설명:
object_privilege: 부여될 객체 권한을 지정합니다.
column_list: 테이블이나 뷰 열을 지정합니다. (INSERT, REFERENCES 또는 UPDATE
권한을 부여할 때만 이것을 지정할 수 있습니다.)
ALL: WITH GRANT OPTION을 부여한 객체에 모든 권한을 부여합니다.
ON object: 권한이 부여될 객체를 식별합니다.
WITH GRANT OPTION: 권한을 부여받은 사람이 객체 권한을 다른 사용자나 롤에 부여할
수 있게 합니다.

GRANT 문을 사용하여 객체 권한을 부여합니다.
  • 권한을 부여하려면 객체가 사용자의 스키마에 있어야 하거나 GRANT OPTION 권한을 부여받았어야 합니다.
  • 기본적으로 객체를 소유하는 경우 해당 객체의 모든 권한은 자동으로 획득됩니다.
  • 보안 문제가 발생할 수 있을 경우에는 객체 권한을 다른 사용자에게 부여할 때 신중
해야 합니다.



객체 권한 취소
 REVOKE 문을 사용하여 객체 권한을 취소합니다. 객체 권한을 취소하려면 권한을 취소하는사용자가 취소될 객체 권한을 부여한 사용자여야 합니다.
다음 명령을 사용하여 객체 권한을 취소합니다.
REVOKE { object_privilege
         [, object_privilege ]...
         | ALL [PRIVILEGES] }
ON [schema.]object
FROM {user|role|PUBLIC}
         [, {user|role|PUBLIC} ]...
         [CASCADE CONSTRAINTS]
설명:
object_privilege: 취소할 객체 권한을 지정합니다.
ALL: 사용자에게 부여된 모든 객체 권한을 취소합니다.
ON: 객체 권한을 취소할 객체를 식별합니다.
FROM: 객체 권한을 취소할 사용자나 롤을 식별합니다.
 CASCADE CONSTRAINTS: 취소 작업이 REFERENCES 또는 ALL 권한을 사용하여 정의한 참조 무결성 제약 조건을 삭제합니다.
제한사항
 권한을 부여한 사람은 자신이 권한을 부여했던 사용자의 권한만을 취소할 수 있습니다.



객체 권한 취소
 DML 작업과 연관된 시스템 권한을 취소할 때는 연쇄적인 효과가 발생할 수 있습니다. 예를 들어, SELECT ANY TABLE을 부여받은 사용자가 해당 테이블을 사용하는 프로시저를 생성한 경우 사용자의 스키마에 포함된 모든 프로시저는 재컴파일해야 다시 사용할 수 있습니다.
WITH GRANT OPTION을 사용하여 부여한 객체 권한을 취소하면 취소 작업이 연쇄적으로수행됩니다.
다음 시나리오는 이에 대해 설명합니다.
시나리오
  • Jeff에게 GRANT OPTION을 사용하여 EMPLOYEES에 대한 SELECT 객체 권한을 부여합니다.
  • Jeff가 EMPLOYEES의 SELECT 권한을 Emi에게 부여합니다.
  • 나중에 SELECT 권한을 Jeff에게서 취소하면 이 취소 작업이 Emi에게도 연쇄적으로 수행됩니다.


권한 정보 얻기

DBA_SYS_PRIVS: 사용자와 롤에 부여된 시스템 권한을 나열합니다.
SESSION_PRIVS: 사용자가 현재 사용할 수 있는 권한을 나열합니다.
DBA_TAB_PRIVS: 데이터베이스의 모든 객체에 대한 모든 권한 부여를 나열합니다.
DBA_COL_PRIVS: 데이터베이스의 모든 객체-열 부여 권한을 설명합니다.


























댓글 1개:

  1. Execute는 프로시져에만 사용가능한 이유를 알수있을까요?
    보면 다른객체 권한에는 사용이불가한데
    그 이유가궁금합니다

    답글삭제