SQL - ⑬ 사용자 권한 (DMCCONET)

hoegon kim·2022년 10월 24일
0

SQL-PLUS

목록 보기
14/17
post-thumbnail

사용자 권한

학습내용

  • 1.사용권한
  • 2.롤을 사용한 권한 부여
  • 3.동의어

학습목표

  • 데이터베이스 보안을 위해 시스템 권한과 객체 권한을 사용자에게 설정할 수 있습니다.

  • 롤에 여러 가지 권한을 포함시켜 보다 간단하게 사용자에게 권한 부여를 할 수 있습니다.

  • 객체를 간단하게 접근하도록 하기 위해 객체 이름에 동의어를 정의할 수 있습니다.


1.사용권한

  • 사용 권한은 시스템 권한(System Privileges)과 객체 권한(Object Privileges)으로 나뉩니다.

  • 시스템 권한에는 사용자의 생성과 제거, 자원 관리가 있습니다.

  • 권한을 부여받기 위한 사용자를 CREATE USER 문을 사용하여 생성

  • 다음은 사용자 생성을 위한 CREATE USER 명령어의 형식입니다.

  • 사용자에게 시스템 권한 부여하기 위해서는 GRANT 명령어를 사용합니다.

  • 새로 생성된 user에 데이터베이스에 데이터베이스 관리자로 접속해서 할 수 있는 권한인 CREATE SESSION를 부여합니다

1-1 객체권한

  • 객체 권한은 특정 객체에 조작을 할 수 있는 권한입니다. 객체의 소유자는 객체에 대한 모든 권한을 가집니다.

  • 다음은 객체와 권한 설정할 수 있는 명령어를 매핑시켜 놓은 표입니다.

  • 객체 권한은 테이블이나 뷰나 시퀀스나 함수 등과 같은 객체별로 DML문(SELECT, INSERT, DELETE)을 사용할 수 있는 권한을 설정하는 것입니다.

  • 다음은 객체에 권한을 부여하기 위한 형식입니다.

  • GRANT 명령어의 형식은 어떤 객체(②)에 어떠한 권한(①)을 어느 사용자(③)에게 부여하는가를 설정합니다. 시스템 권한과 차이점이 있다면 ON 옵션이 추가된다는 점입니다. ON 다음에 테이블 객체나 뷰 객체 등을 기술합니다.

  • 특정 객체에 대한 권한은 그 객체를 만든 사용자에게만 기본적으로 주어집니다.

  • 우리가 지금까지 사용했던 EMP 테이블은 hr 사용자 소유의 테이블입니다.

  • 그러므로 다음과 같이 hr 사용자로 로그인해서 usertest01 사용자가 테이블 객체 EMP를 조회할 수 있도록 권한 부여를 해야 합니다.

  • 객체 권한은 객체를 갖고 있는 사용자로 접속한 후에 사원을 조회할 수 있는 SELECT 권한을 usertest01에게 부여합니다.

  • 1) hr로 접속하여 사원 테이블 조회 권한 부여하기

  • 2) hr 사용자 소유의 employee 테이블을 조회(SELECT)할 수 있는 권한을 usertest01 이란 사용자에게 부여합니다.

  • 3) 권한 부여가 되었다면 다시 usertest01로 로그인 하여 사원 테이블에 접속해 봅시다.

1-2 권한 제거

  • REVOKE 문은 데이터베이스 관리자나 권한을 부여한 사용자가 다른 사용자에게 부여한 시스템 권한을 박탈하기 위한 명령어입니다.

  • usertest01로부터 create session 권한 제거하기

1-3 WITH GRANT OPTION

  • 사용자에게 객체 권한을 WITH GRANT OPTION과 함께 부여하면 그 사용자는 그 객체를 접근할 권한을 부여 받으면서 그 권한을 다른 사용자에게 부여 할 수 있는 권한도 함께 부여받게 됩니다.

  • SYSTEM으로 로그인하여 사용자를 새로 생성한 후 데이터베이스에 연결할 수 있는 CREATE SESSION과 CREATE TABLE, CREATE VIEW 권한을 부여합니다.

  • WITH GRANT OPTION을 지정하였기에 다른 사용자에게 객체권한을 부여할 수 있습니다.

    1. hr 사용자로 접속합니다.

    1. usertest01에게 hr.employee를 SELECT하는 권한을 WITH GRANT OPTION으로 부여합니다.


2.롤을 사용한 권한 부여

  • 여러 사용자에게 부여된 권한을 수정하고 싶을 때에도 일일이 사용자마다 권한을 수정하지 않고 롤만 수정하면 그 롤에 대한 권한 부여를 한 사용자들의 권한이 자동 수정됩니다. 이 밖에 롤을 활성화 비활성화 함으로서 일시적으로 권한을 부여했다 철회할 수 있으므로 사용자 관리를 간편하고 효율적으로 할 수 있습니다.

  • 롤은 오라클 데이터베이스를 설치하면 기본적으로 제공되는 사전 정의된 롤과 사용자가 정의한 롤로 구분됩니다.

  • 사용자가 직접 롤을 정의하는 방법은 복잡하므로 사전에 정의된 롤부터 살펴보도록 합시다.

  • 일반적으로 데이터베이스 관리자는 새로운 사용자를 생성할 때 CONNECT 롤과 RESOURCE 롤을 부여합니다.

  • CREATE ROLE 문은 사용자가 직접 정의해서 사용하는 롤을 생성

  • 생성한 롤은 GRANT로 사용자에게 권한을 부여합니다.

  • 사용자 정의 롤 생성 및 권한 부여하기

  • 다음은 롤 관련 데이터 사전을 정리한 표 입니다.

  • DROP ROLE 문으로 롤 제거

  • 객체 권한을 롤에 부여하기


3.동의어

  • 동의어는 다른 데이터베이스 객체에 대한 별칭입니다. CREATE SYNONYM 문으로 동의어를 새롭게 정의합니다.

  • 동의어는 개별 사용자를 대상으로 하는 비공개 동의어와 전체 사용자를 대상으로 한 공개 동의어가 있습니다.

비공개 동의어

  • 객체에 대한 접근 권한을 부여받은 사용자가 정의한 동의어로 해당 사용자만 사용할 수 있다.

공개 동의어

  • 권한을 주는 사용자가 정의한 동의어로 누구나 사용할 수 있다. 공개 동의어는 DBA 권한을 가진 사용자만이 생성할 수 있다. SYNONYM 앞에 PUBLIC를 붙여서 정의한다.
  • 테이블 조회 권한 부여하기

  • 다른 소유자의 테이블 조회하기

  • 전용 동의어 생성하기

  • 공용 동의어 정의하기

  • DROP SYNONYM 문으로 동의어를 제거

0개의 댓글