[Oracle_기초2] 권한과 Role

keymu·2025년 2월 22일
0

시스템권한(System Privileges)

  • 시스템권한은 사용자가 데이터베이스에서 특정 작업을 수행 할 수 있도록 한다
  • 권한의 ANY 키워드는 사용자가 모든 스키마에서 권한을 가짐을 의미 한다.
  • GRANT 명령은 사용자 또는 ROLE에 대해서 권한을 부여 할 수 있다.
  • REVOKE 명령은 권한을 회수 한다.

대표적인 시스템권한

  • CREATE SESSION : 데이터 베이스를 연결할 수 있는 권한
  • CREATE ROLE : 오라클 데이터베이스 역할을 생성할 수 있는 권한
  • CREATE VIEW : 뷰의 생성 권한
  • ALTER USER : 생성한 사용자의 정의를 변경할 수 있는 권한
  • DROP USER : 생성한 사용자를 삭제시키는 권한

시스템권한 부여 문법

  • system_privilege : 부여할 시스템권한의 이름
  • role : 부여할 데이터베이스 역할의 이름
  • user, role : 부여할 사용자 이름과 다른 데이터 베이스 역할 이름
  • PUBLIC : 시스템권한, 또는 데이터베이스 역할을 모든 사용자에게 부여할 수 있다.
  • WITH ADMIN OPTION : 권한을 부여 받은 사용자도 부여 받은 권한을 다른 사용자 또는 역할로 부여할 수 있게된다.

시스템권한 회수

-- scott 사용자에게 부여한 생성, 수정, 삭제 권한을 회수 한다.
SQL>REVOKE CREATE USER, ALTER USER, DROP USER
    FROM scott;
 권한이 회수되었습니다.

시스템 권한을 회수해도, 회수 당한 사용자가 권한을 부여한 당사자는 여전히 받은 권한을 유지한다.

객체권한(Object Privileges)

  • 테이블이나 뷰, 시퀀스, 프로시저, 함수, 또는 패키지 중 지정된 한 객체에 특별한 작업을 수행 할 수 있게 한다.
  • 객체 소유자는 다른 사용자에게 특정 객체권한을 부여 할 수 있다.
  • PUBLIC으로 권한을 부여하면 회수할 때도 PUBLIC으로 해야 한다.
  • 기본적으로 소유한 객체에 대해서는 모든 권한이 자동적으로 획득된다.
  • WITH GRANT OPTION 옵션은 ROLE에 권한을 부여할 때는 사용할 수 없다.

객체권한 부여 예제

-- scott USER에게 emp테이블을 SELECT, INSERT할 수 있는 권한을 부여했다.
-- scott USER도 다른 USER에게 그 권한을 부여 할 수 있다.
SQL>GRANT SELECT, INSERT
    ON emp
    TO scott
    WITH  GRANT  OPTION;
 권한이 부여되었습니다.

객체권한의 회수

  • 객체 권한의 철회는 그 권한을 부여한 부여자만이 수행할수 있다.
  • CASCADE CONSTRAINTS : 이 명령어의 사용으로 참조 객체 권한에서 사용 된 참조 무결성 제한을 같이 삭제 할 수 있다.
  • WITH GRANT OPTION으로 객체 권한을 부여한 사용자의 객체 권한을 철회하면, 권한을 부여받은 사용자가 부여한 객체 권한 또한 같이 철회되는 종속철회가 발생한다.

시스템 권한: "무언가를 만들거나 없앨 수 있는" 권한
객체 권한: "이미 있는 것을 사용할 수 있는" 권한

롤(ROLE)

  • ROLE을 이용하면 권한 부여와 회수를 쉽게 할 수 있다.
  • ROLE은 CREATE ROLE권한을 가진 USER에 의해서 생성 된다.
  • 한 사용자가 여러개의 ROLL을 ACCESS할 수 있고, 여러 사용자에게 같은 ROLE을 부여할 수 있다.
  • 시스템 권한을 부여하고, 취소할 때와 동일한 명령을 사용하여 사용자에게 부여하고, 취소 한다.
  • 사용자는 ROLE에 ROLE을 부여할 수 있다.
  • 오라클 데이터베이스를 설치하면 기본적으로 CONNECT, RESOURCE, DBA ROLE이 제공 된다.

ROLE의 부여 순서

① ROLE의 생성 : CREATE ROLE manager
② ROLE에 권한 부여 : GRANT create session, create table TO manager
③ ROLE을 사용자 또는 ROLE에게 부여 : GRANT manager TO scott, test;

-- ROLE을 생성 합니다.
SQL>CREATE ROLE manager;

-- ROLE에 권한을 부여 합니다.
SQL>GRANT create session, create table TO manager;

-- 권한이 부여된ROLE을 USER나 ROLE에 부여 합니다.
SQL>GRANT manager TO scott, test;

RESOURCE ROLE

  • Store Procedure나 Trigger와 같은 PL/SQL을 사용할 수 있는 권한 들로 이루어져 있다.
  • PL/SQL을 사용하려면 RESOURCE ROLE을 부여해야 한다.
  • 유저를 생성하면 일반적으로 CONNECT, RESOURCE롤을 부여 한다.

DBA ROLE

  • 모든 시스템 권한이 부여된 ROLE 이다.
  • DBA ROLE은 데이터베이스 관리자에게만 부여해야 한다.

출처: http://www.gurubee.net/lecture/1345

profile
Junior Backend Developer

0개의 댓글