DB 권한, 역할

정미·2023년 1월 31일

권한 PRIVILEGE

  • DB 접속 계정, 암호가 있어도 적절한 권한이 있어야 작업 가능

특징

  • 사용자가 데이터베이스 연산을 하려면 연산에 필요한 권한을 가지고 있어야 한다.
    • 권한이 없는 연산을 수행하면 시스템에 의해 수행이 거부된다.
  • DBA는 모든 권한을 가지고 있고, 특정 사용자에게 특정 권한을 부여할 수 있다.

예시

  • create session, create table, create sequence, create view, create procedure, create role, alter user, drop user, ...

종류

System Privilege (시스템 권한)

  • 사용자가 DB에서 특정 작업을 수행할 수 있도록 한다.
  • DBA 권한을 가진 유저(SYS, SYSTEM)만 시스템 권한을 부여/회수할 수 있다.
  • ANY 키워드: 사용자가 모든 스키마에서 권한을 가짐

Object Privilege (객체 권한)

  • 사용자가 소유하고 있는 특정 객체를 다른 사용자들이 접근하거나 조작할 수 있게 한다.
    - TABLE, VIEW, SEQUENCE, PROCEDURE, FUNCTION, PACKAGE 중 지정된 한 객체
  • 객체 소유자는 다른 사용자에게 특정 객체 권한을 부여할 수 있다.
  • PUBLIC으로 권한 부여 시 회수할 때도 PUBLIC으로 해야 한다.
  • 소유한 객체에 대해서 기본적으로 모든 권한이 자동적으로 획득된다.
  • WITH GRANT OPTION은 ROLE에 권한을 부여할 때는 사용할 수 없다.

역할 ROLE

사용자들에게 허가할 수 있는 권한들의 집합

특징

  • CREATE ROLE 권한을 가진 사용자에 의해 생성된다.
  • 한 사용자가 여러 개의 ROLE에 접근할 수 있다.
  • 다른 사용자에게 자신이 가진 ROLE을 부여할 수 있다.
  • 사용자는 ROLE에 ROLE을 부여할 수 있다.
  • DBA가 USER의 역할에 맞도록 ROLE을 생성해 사용자에게 지정하여 효율적으로 사용자들의 권한을 관리한다.

용도

  1. 사용자에게 권한의 집합(ROLE)을 부여할 경우
  2. 시스템 권한처럼 ROLE을 부여받은 사용자들을 사용자 그룹으로 사용할 경우

생성 및 부여

CREATE ROLE DEVELOPER;  -- 롤 생성
GRANT CREATE SESSION, CREATE SELECT TO DEVELOPER;  -- 롤에 권한 부여
GRANT DEVELOPER TO YC, SY, WS, GW, DEV_USERS;  -- 롤을 사용자 or 롤에게 부여

출처

0개의 댓글