권한 (GRANT)
<사용자 관리>
사용자의 계정과 암호설정, 권한 부여
보안을 위한 데이터베이스 관리자
사용자가 데이터베이스의 객체 (테이블, 뷰 등)에 대해 특정 권한을 가질 수 있게 하는 권한이 있음
다수의 사용자가 공유하는 데이터베이스 정보에 대한 보안 설정
데이터 베이스에 접근하는 사용자 마다 서로 다른 권한과 롤을 부여함
1. 내가 다른 사용자에게 부여한 객체 권한을 조회
<SYSTEM 계정으로 실행>
SELECT
UTPR.*
FROM USER_TAB_PRIVS_RECD UTPR;
2. 나에게 부여된 객체 권한, 객체 이름을 조회
SELECT
UTPM.*
FROM USER_TAB_PRIVS_MADE UTPM;
1. 시스템 권한
데이터베이스 관리자가 가지고 있는 권한으로 오라클 접속, 테이블, 뷰, 인덱스 등의 생성 권한
- CREATE USER (사용자 계정 만들기)
- DROP USER (사용자 계정 삭제)
- DROP ANY TABLE (임의의 테이블 삭제)
- QUREY REWRITE (함수 기반 인덱스 생성 권한)
- BACKUP ANY TABLE (테이블 백업)
시스템 관리자가 사용자에게 부여하는 권한
- CREATE SESSION (데이터베이스에 접속)
- CREATE TABLE (테이블 생성)
- CREATE VIEW (뷰 생성)
- CREATE SEQUENCE (시퀀스 생성)
- WITH ADMIN OPTION
사용자에게 시스템 권한을 부여할 때 사용함
권한을 부여받은 사용자는 다른 사용자에게 권한을 지정할 수 있음
<시스템 계정에서 C##SAMPLE 계정에 접속 권한 부여>
- WITH ADMIN OPTION 사용
GRANT CREATE SESSION TO C##SAMPLE
WITH ADMIN OPTION;
<SYSTEM 계정에서 C##SAMPLE2 계정 생성하기>
CREATE USER C##SAMPLE2 IDENTIFIED BY SAMPLE2;
C##SAMPLE 계정으로 C##SAMPLE2 계정에 접속 권한 부여할 수 있다.
GRANT CREATE SESSION TO C##SAMPLE2;
2. 객체 권한
사용자가 특정 객체 (테이블, 뷰, 시퀀스, 함수)를 조작하거나 접근할 수 있는 권한
DML(SELECT/INSERT/UPDATE/DELETE)
GRANT 권한 종류 [(컬럼명)] | ALL
ON 객체명 | ROLE 이름 | PUBLIC
TO 사용자 이름
- WITH GRANT OPTION
사용자가 특정 객체를 조작하거나 접근 할 수 있는 권한을 부여 받으면서
그 권한을 다른 사용자에게 다시 부여할 수 있는 권한 옵션
<시스템계정에서 C##SAMPLE 계정에 C##EMPLOYEE.EPLOYEE 테이블 SELECT권한 부여>
- WITH GRANT OPTION 사용
GRANT SELECT ON C##EMPLOYEE.EMPLOYEE TO C##SAMPLE
WITH GRANT OPTION;
C##SAMPLE 계정에서 C##EMPLOYEE.EMPLOYEE 조회
SELECT
EE.*
FROM C##EMPLOYEE.EMPLOYEE EE;
C##SAMPLE 계정이 C##SAMPLE2 에게 권한 부여가 가능하다.
GRANT SELECT ON C##EMPLOYEE.EMPLOYEE TO C##SAMPLE;
권한 철회 (REVOKE)
REVOKE SELECT ON C##EMPLOYEE.EMPLOYEE FROM C##SAMPLE;
- WITH GRANT OPTIOND은 REVOKE시 다른 사용자에게도 부여한 권한을 같이 회수
- WITH ADMIN OPTION은 특정 사용자의 권한만 회수가 되고 나머지 다른 사용자에게 부여한 권한은 회수되지않음
롤 (ROLE)
사용자에게 보다 간편하게 부여할 수 있도록 여러 개의 권한을 묶어놓는 것
사용자에게 부여한 권한을 수정하고자 할때도 롤만 수정하면 그 롤에 대한 권한을 부여받은
사용자들은 권한이 자동으로 수정된다. 롤을 활성화 하거나 비활성해서 일시적으로 권한을 부여하고 철회할 수 있다.
롤을 확인할 수 있는 데이터 딕셔너리
SELECT
GRANTEE
, PRIVILEGE
FROM DBA_SYS_PRIVS
-- WHERE GRANTEE = 'RESOURCE';
WHERE GRANTEE = 'CONNECT';
롤의 종류
1. 사전 정의된 롤
오라클 설치 시 시스템에서 기본적으로 제공됨 (CONNECT ROLE , RESOURCE ROLE 등)
2. 사용자 정의 롤
CREATE ROLE 명령으로 롤 생성
ROLE 생성은 반드시 DBA 권한이 있는 사용자만 할 수 있음
-- 1.롤 생성
CREATE ROLE 롤이름;
--2. 생성된 롤에 권한 추가
GRANT 권한 종류 TO 롤이름;
-- 3. 사용자에게 롤 부여
GRANT 롤이름 TO 사용자이름;
-- MYROLE 권한 생성 후 C##SAMPLE 계정으로 권한부여
CREATE ROLE C##MYROLE;
GRANT CREATE VIEW, CREATE SEQUENCE TO C##MYROLE;
GRANT C##MYROLE TO C##SAMPLE;
-- MYROLE 권한 확인
SELECT
GRANTEE
, PRIVILEGE
FROM DBA_SYS_PRIVS
WHERE GRANTEE = 'C##MYROLE';
-- SAMPLE 계정의 ROLE 확인
SELECT
DRP.*
FROM DBA_ROLE_PRIVS DRP
WHERE GRANTEE = 'C##SAMPLE';
-- 출력 확인
'백엔드 과정 > Oracle(SQL)' 카테고리의 다른 글
[JDBC] xml에서 쿼리문 가져와서 수행하기 (0) | 2022.02.03 |
---|---|
[Oracle] Chap13 SYNONYM (0) | 2022.01.28 |
[Oracle] Chap12 INDEX (0) | 2022.01.28 |
[Oracle] Chap11 SEQUENCE (0) | 2022.01.27 |
[Oracle] Chap10 VIEW (0) | 2022.01.27 |