티스토리 뷰

DATABASE/SQL

[SQL] 보안

진심스테이크 2018. 4. 23. 22:01

 

DCL (Data Control Language) : 데이터의 보안, 무결성, 회복, 병행 제어 등을 정의하는데 사용

- 데이터 베이스 관리자가 데이터 관리를 목적으로 사용

 

 

유형

1. GRANT : 권한 부여

- 유저에게 여러 권한(삽입, 삭제, 생성 등)을 부여

ⓐ 시스템

- 기본 형태

GRANT [권한명 | 롤 | ALL] TO [유저명 | 롤 | PUBLIC]
[WITH ADMIN OPTION];

- 대표적인 시스템 권한 종류

  - CREATE SESSION : 데이터 베이스를 연결할 수 있는 권한

  - CREATE ROLE : 오라클 데이터 베이스 역할을 생성할 수 있는 권한

  - CREATE VIEW : 뷰의 생성 권한

  - ALTER USER : 생성한 사용자의 정의를 변경할 수 있는 권한

  - DROP USER : 생성한 사용자를 삭제시키는 권한

#권한을 동시에 여러 개 줄 때에는 콤마를 사용해서 구분

ⓑ 객체

- 기본 형태

GRANT [권한명 | ALL] ON [객체명 | PUBLIC] TO [유저명]
[WITH GRANT OPTION];

- 테이블이나 뷰, 시퀀스, 프로시저, 함수 또는 패키지 중 지정된 한 객체에 특별한 작업을 수행 할 수 있게 함

- 객체 소유자는 다른 사용자들에게 특정 객체 권한을 부여 할 수 있음

- PUBLIC으로 권한을 부여하면 회수할 때에도 PUBLIC으로 해야함

- 기본적으로 소유한 객체에 대해서는 모든 권한이 자동적으로 획득됨

- WITH GRANT OPTION은 ROLE에 대한 권한을 부여할 떄 사용할 수 없음

- 객체에 따른 권한 목록

 

객체 권한

테이블  

뷰 

시퀀스 

프로시저 

ALTER 

○ 

 

 ○

 

DELETE

○ 

○ 

 

 

EXECUTE

 

 

 

○ 

INDEX

 

 

 

INSERT

○ 

 ○

 

 

SELECT

 ○

 ○

 

 

 

2. REVOKE : 권한 해제

- 사용자에게 권한을 해제

- CASCADE CONSTRAINTS : 외래키 관계의 테이블을 권한을 해제할 때 사용

  -> 참조 객체 권한에서 사용된 참조 무결성 제한을 같이 삭제 할 수 있음

- WITH ADMIN OPTION

  -> A가 B에게 권한을 부여하고, B가 C에게 권한을 부여했을 때

      A가 B의 권한을 제거해도 C의 권한은 유지됨

- WITH GRANT OPTION

  -> A가 B에게 권한을 부여하고, B가 C에게 권한을 부여했을 때

      A가 B의 권한을 제거하면 C의 권한도 같이 제거됨

ⓐ 시스템

- 기본 형태

REVOKE [권한명 | ALL] FROM [유저명 | 롤 | PUBLIC];

ⓑ 객체

- 기본 형태

REVOKE [권한명 | ALL] ON [객체명]
FROM [유저명 | 롤 | PUBLIC];

 

 


 

 

예제

 

사용자를 추가했지만, 권한을 주지 않음

 

 

system으로 들어가서 user1과 user2에게 테이블과 세션을 만들 수 있는 권한 부여

 

 

user1으로 들어가서 권한이 부여되었는지 확인

ADMIN 권한 부여가 되어 있지 않음

#CREATE TABLE -> NO

#SESSION과 TABLE생성과는 별개의 권한

 

 

 

user1에 대한 권한 제거후 확인

 

 

 


 

 

WITH ADMIN OPTION

 

- 권한 부여

 

system이 user1에게 테이블 생성에 대한 권한을 부여

user1이 user2에게 테이블 생성에 대한 권한을 줌

 

 

 user1에 대한 권한 확인

#CREATE TABLE -> YES

 

 

- user1에 대한 권한 제거

 

user1의 create table권한을 제거하고 user1과 user2의 권한을 확인

user1의 권한만 없어진 것을 확인

 

 

- 테이블 생성 후 테이블에 대한 권한 부여

  - 테이블명 : test

 

 

 

 

user1에게 권한이 부여된 것을 확인할 수 있다

 

 

- 권한 제거

 

 user1에게 권한이 제거된 것을 확인할 수 있다

 

 


 

 

WITH GRANT OPTION

 

 

 

- 권한 부여

 

user1에게 권한 부여

 

 

user1에게 권한이 부여된 것을 확인할 수 있다

 

 

 

user1이 user2에게 system의 test 테이블에 대한 권한 부여

 

user2에게 권한이 부여된 것을 확인 할 수 있다

 

 

- 권한 제거

 

system에서 user1에 대한 권한을 제거

user1과 user2의 권한 확인

둘 다 권한이 제거된 것을 확인 할 수 있다

 

 

 

'DATABASE > SQL' 카테고리의 다른 글

[SQL] CURSOR  (0) 2018.04.24
[SQL] ROLE  (0) 2018.04.24
[SQL] TRIGGER  (0) 2018.04.23
[SQL] SUBPROGRAM PACKAGE  (0) 2018.04.23
[SQL] PROCEDURE  (0) 2018.04.23
댓글