C#,Delphi,Oracle,MSSQL 개발자블로그

[Oracle/기본]14. 사용자 접근 제어 본문

Programming/Oracle 공부

[Oracle/기본]14. 사용자 접근 제어

19760323 2017. 5. 24. 15:14

● 사용자 접근 제어

 

- 데이터베이스 보안의 두 종류

1. 시스템 보안

☞ 사용자명, 비밀번호

☞ 사용자에게 할당된 디스크 공백

☞ 사용자에 의해 허용된 시스템 작업

 

같은 시스템 수준에서의 데이터베이스의 액세스와 사용을 설명한다.

 

2. 데이터 보안

☞ 데이터베이스 객체에 대한 액세스와 사용

☞ 객체에 대해 사용자가 할 수 있는 작업 

 

을 설명한다.

 

● 권한

특정 SQL문장을 실행하기 위한 권한이다.

80개 이상의 권한이 있다.

 

- 시스템 권한 : 데이터베이스 액세스 획득 (system privilege 필요)

- 객체권한 : 데이터베이스 객체 내용 조작 (object privilege 필요)

 

스키마 : 테이블, 뷰,  시퀀스 같은 객체의 모음.

 

● 사용자 생성

 

   CREATE USER scott

   IDENTIFIED BY tiger;

 

● 사용자 시스템 권한 부여

 

   GRANT privilege [, privilege,,,]

   TO user [, user...];

 

   privilege : 허가되는 시스템 권한이다.

   user : 사용자명이다.

 

   * 주된 사용자 권한

     CREATE SESSION     데이트베이스로 접속

     CREATE TABLE        사용자의 스키마에서 테이블 생성

     CREATE SEQUENCE  사용자의 스키마에서 시퀀스 생성

     CREATE VIEW          사용자의 스키마에서 뷰 생성

     CREATE PROCEDURE 사용자의 스키마에서 내장된 프로시저, 함수, 패키지 생성

 

Ex. GRANT create table, create sequence, create view

     TO      scott;

 

● 롤(role)

 

롤은 사용자에 대해 부여될 수 있는 관련 권한의 그룹이다. 롤은 권한을 부여하고 철회하는 것을 수행하고 유지하기 쉽게 한다.

한 사용자가 여러 롤을 액세스할 수 있고 다른 여러사용자에게 동일한 롤을 지정할 수 있다.

 

- 롤의 생성

 

  CREATE ROLE manager;

 

- 롤에 권한 부여

 

  GRANT create table, create view, TO manager;

 

- 롤의 권한을 다른 사용자에게 부여

 

  GRANT manager TO BLAKE, CLARK;

 

● 비밀번호 변경

 

    ALTER USER user

 IDENTIFIED BY password;

 

user        사용자명이다.

password 새 비밀번호를 지정한다. 

 

● 객체 권한

- 객체 권한은 객체마다 다양하다.

- 소유자는 객체에 대한 모든 권한을 가진다.

- 소유자는 사용자 객체에 대한 특정 권한을 제공할 수 있다.

- 객체 권한 종류

 

Object Privilege 

Table 

View 

Sequence 

Procedure 

 ALTER

O

 

 

 DELETE

O

 

 

 EXECUTE

 

 

 

 ㅇ

 INDEX

 O

 

 

 

 INSERT

 O

 O

 

 

 REFERENCES

 O

 

 

 

 SELECT

 O

 O

O

 

 UPDATE

 O

 O

 

 

 

 

GRANT object_priv [(columns)]

ON      object                           ☜ 시스템 권한과 다른점, 이 객체에 대한 권한

TO       {user/role/public}

[WITH GRANT OPTION];

 

object_priv               부여받기 위한 객체 권한이다.

ALL                        모든 객체 권한이다.

columns                  권한이 부여되는 테이블 또는 뷰로부터 열을 지정한다.

object                     권한이 부여되는 객체이다.

TO                         권한이 부여될 사용자이다.

PUBLIC                    모든 사용자에 대해 객체 권한을 부여한다.

WITH GRANT OPTION 부여자가 다른 사용자와 롤에 대한 객체 권한을 부여할 수 있도록 허용한다.

 

Ex. EMP 테이블에 대한 SELECT 권한 부여

 

GRANT select

ON      emp

TO       sue, ritch;

 

Ex. 사용자와 롤에게 지정 열을 UPDATE하기 위한 권한 부여

 

GRANT update (dname, loc)

ON      dept

TO       scott, manager;

 

- 객체에 대한 권한을 부여하기위해, 객체는 자신의 스키마에 존재해야 하거나 WITH GRANT OPTION으로 객체 권한을 부여 받아야 한다.

- 객체 소유자는 데이터베이스의 어떤 다른 사용자 또는 롤에게 객체에 대한 모든 가능한 객체 권한을 부여할 수 있다.

- 객체의 소유자는 자동적으로 그 객체에 대한 모든 권한을 얻는다.

 

● WITH GRANT OPTION과 PUBLIC 키워드 사용

 

GRANT select, insert

ON      dept

TO       scott

WITH GRANT OPTION;

 

scott계정은 dept 테이블에대한 select, insert 액세스권한을 부여받고,

scott WITH GRANT OPTION으로 인해 이 권한을 다른 사용자에게 줄 수도 있다.

 

 

GRANT select

ON     alice.dept

TO      PUBLIC

 

모든 사용자가 Alice의 DEPT 테이블의 데이터를 select할 수 있게 한다.

 

● 객체 권한 철회 방법

 

REVOKE {privilege [, privilege...] / ALL}

ON       object

FROM    {user[, user...] / role / PUBLIC}

[CASCADE CONSTRAINTS];

 

CASCADE CONSTRAINTS REFERENCES 권한을 사용하여 만들어진 객체에 대한 참조 무결성 제약조건을 제거하기 위해 필요하다.

 

Ex. REVOKE select, insert

    ON       dept

    FROM    scott;

 

DEPT 테이블에 대해 사용자 Scott에게 주어진 SELECT와 INSERT 권한을 철회한다.

 

REVOKE는 WITH GRANT OPTION을 통해 다른 사용자에게 부여된 권한도 연이어 같이 철회한다.

 

예를들어, A가 WITH GRANT OPTION을 포함하여, 사용자 B에 대해 테이블에 SELECT 권한을 부여한다면, 사용자 B는 사용자 C에게

권한을 부여할 수 있고, 사용자 C는 사용자 D에게 권한을 부여할 수 있다.

이 때, 사용자 A가 사용자B에게서 권한을 철회한다면, 사용자C와 사용자D의 권한도 철회된다.

 

 

 

 

 

 

 

 

 

 

 

 

Comments