권한 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을 생성해 사용자에게 지정하여 효율적으로 사용자들의 권한을 관리한다.
용도
- 사용자에게 권한의 집합(ROLE)을 부여할 경우
- 시스템 권한처럼 ROLE을 부여받은 사용자들을 사용자 그룹으로 사용할 경우
생성 및 부여
CREATE ROLE DEVELOPER;
GRANT CREATE SESSION, CREATE SELECT TO DEVELOPER;
GRANT DEVELOPER TO YC, SY, WS, GW, DEV_USERS;
출처