Oracle SQL(12)

sparkbosing·2021년 1월 18일
0

DB

목록 보기
12/12

사용자 관리

  • 인증
    사용자 계정을 생성하거나 암호를 변경하거나 또는 특정 사용자가 모든 데이터베이스 자원을 사용하지 못하도록 디스크 공간을 할당하는 작업과 같이 시스템 수준에서의 DB 접근 및 사용을 관리하는 것을 의미한다.
  • 권한
    DB 객체에 대한 사용자들의 접근 및 사용을 관리하는 포괄적인 개념이다.

사용자 생성

--사용자 생성
CREATE USER 계정
IDENTIFIED BY 비밀번호;

--비밀번호 변경
ALTER USER 계정
IDENTIFIED BY 비밀번호;

권한

권한 종류설명
시스템 권한(System Privileges)DB 수준에서의 권한을 의미하며 DBA가 권한을 부여한다.
DB 접속, 사용자 생성, 테이블 생성, 뷰 생성 들과 같이 DB에 특별한 작업을 수행하는 것을 가능하게 해준다.
객체 권한(Object Privileges)DB 객체 수준에서의 권한을 의미하며 객체의 소유자가 권한을 부여한다. 특정 객체에 접근하여 SELECT, INSERT, DELETE 같은 작업을 수행하는 것을 가능하게 해 준다.


시스템 권한

권한 부여하기

GRANT 시스템권한[, 시스템권한]
TO 사용자계정|role|PUBLIC;

GRANT CREATE SESSION, CREATE TABLE
TO user01;

사용자의 시스템 권한 정보 확인하기

SELECT *
FROM SESSION_PRIVS;

권한 회수하기

REVOKE 시스템권한[, 시스템권한]
FROM 사용자계정|role|PUBLIC;

REVOKE CREATE SESSION
FROM user01;

WITH ADMIN OPTION과 시스템 권한

  • 임의의 사용자가 SYS관리자로부터 부여받은 권한을 다른 자에게 또 다시 부여할 수 있도록 시스템 권한을 위임하는 기능이다.
  • REVOKE를 써도 위임된 시스템 권한은 연쇄적으로 회수가 되지 않으므로 주의해서 사용해야 한다.

객체 권한

  • 특정 테이블, 뷰, 시퀀스, 프로시저 등에 DML문에 수행할 수 있는 권리로 서 사용자는 자신의 스키마에 저장된 모든 객체에 대하여 권한을 갖는다.
  • 따라서 다른 사용자 또는 롤에게 자신이 소유한 객체에 대해서 DML을 실행할 수 있는 권한을 부여하거나 회수할 수 있다.

권한 부여하기

GRANT 객체권한[(컬럼)]
ON 객체명
TO 사용자계정|role|PUBLIC
[WITH GRANT OPTION];

-- 테이블 전체에 권한 부여
GRANT SELECT 
ON DEPT 
TO USER01;

--컬럼만 권한 부여
GRANT UPDATE(dname)
ON dept
TO user01;

GRANT SELECT, INSERT, UPDATE
ON dept
TO user01;

WITH GRANT OPTION과 객체 권한

  • 임의의 사용자가 객체 소유자로부터 부여받은 권한을 다른 사용자에게 또 다시 부여할 수 있도록 객체 권한을 위임하는 기능이다.
  • 객체 권한을 회수하면 위임된 객체 권한은 연쇄적으로 회수가 된다.
  • 반면에 시스템 권한의 WITH ADMIN OPTION인 경우에는 연쇄적으로 권한 회수가 안된다.

권한 관련 데이터 사전

  • 현재 사용자가 다른 사용자에게 부여한 권한 정보를 알고자 할 때 사용되는 것은 USER_TAB_PRIVS_MADE
  • 자신에게 부여된 사용자 권한을 알고 싶을 때는 USER_TAB_PRIVS_RECD
SELECT *
FROM user_tab_privs_made;
SELECT *
FROM user_tab_privs_recd;

객체 권한 회수

REVOKE 객체권한, ...
ON 객체명
FROM 사용자계정|role|PUBLIC
[CASCADE COSNTRAINTS];

  • 권한들의 묶음을 의미
  • 일반 사용자에게 권한을 부여 및 회수하듯이 롤에 권한 부여 및 회수가 가능하다.

롤의 장점

  1. 편리한 권한 관리
  2. 동적 권한 관리
    롤과 관련된 권한이 변경되면 롤을 부여 받은 모든 사용자들은 자동으로 변경된 권한을 즉시 부여 받게 된다.
  3. 권한의 선택적 가용성
    롤을 활성화/비활성화가 가능하다.

사전 정의된 롤을 확인하는 방법

SELECT role
FROM dba_roles;

사용자 롤 생성 및 사용

CREATE ROLE 롤이름;

CREATE ROLE clerk;

GRANT create session, create table
TO clerk;

GRANT select
ON scott.dept
TO clerk;

GRANT clerk TO user03;

롤에 부여된 권한 확인하기

  • 시스템 권한 확인하기 : DBA_SYS_PRIVS
SELECT grantee, privilege
FROM dba_sys_privs
WHERE grantee='CLERK';
  • 객체 권한 확인하기 : DBA_TAB_PRIVS
SELECT *
FROM dba_tab_privs
WHERE grantee = 'CLERK';
profile
유능한 개발자가 되고 싶은 핫바지

0개의 댓글