Notice
Recent Posts
Recent Comments
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
Archives
Today
Total
관리 메뉴

SYDev

[데이터베이스] 10장. 데이터베이스 보안과 권한 관리 본문

3학년 1학기 전공/데이터베이스

[데이터베이스] 10장. 데이터베이스 보안과 권한 관리

시데브 2024. 5. 31. 18:55
경희대학교 이영구 교수님의 데이터베이스 수업 복습용 게시물입니다.

 

10.1 데이터베이스 보안

세 가지 유형의 보안

물리적 보호

  • 화재, 홍수, 지진 등과 같은 자연 재해, 도둑 , 컴퓨터 시스템에 대한 우연한 손상 등 기타 유형의 위험으로부터 데이터베이스를 보호

권한 보호

  • 권한을 가진 사용자만 특정 접근 모드로 데이터베이스를 접근

운영 보호

  • 데이터베이스의 무결성에 대한 사용자 실수의 영향을 최소화 혹은 제거

 

DBMS가 데이터베이스 보안과 관련해 제공해야 하는 두 가지 기능

접근 제어(access control)

  • 데이터베이스 시스템에 대한 접근 통제
  • DBMS는 로그인 과정을 통제하기 위해 사용자 계정과 암호를 관리

보안 및 권한 관리

  • DBMS는 특정 사용자/사용자들의 그룹이 지정한 데이터베이스 영역만 접근 가능, 그 외 영역 접근 통제하는 기능

 

두 가지 보안 기법

임의 보안 기법(discretionary security mechanism)

  • 사용자에게 특정 릴레이션, 튜플, 또는 애트리뷰트를 지정된 모드(읽기, 삽입, 삭제, 수정)로 접근할 수 있는 권한을 -> grant(허가), revoke(취소)하는 기법
  • 대부분의 상용 관계 DBMS가 사용
  • 시스템 카탈로그에 권한을 허가 받은 유저, 권한을 취소당한 유저의 정보를 유지

 

강제 보안 기법(mandatory security mechanism)

  • 데이터/사용자들을 다양한 보안 등급(1급, 2급, 3급 비밀, 일반 정보 등)으로 분류 -> 해당 조직에 적합한 보안 정책을 적용 -> 다단계 보안 시행
  • 대부분의 상용 관계 DBMS 제공 X

 

데이터베이스 관리자가 수행하는 작업

  • 사용자/사용자 그룹에 대한 새로운 계정과 암호의 생성, 권한 부여와 취소, 특정 계정에 대한 특정 권한의 부여
  • 각 로그인 세션 동안 사용자가 데이터베이스에 가한 모든 연산들 기록 가능
  • 권한 없는 사용자가 데이터베이스를 갱신했다는 의심이 들면 -> 데이터베이스 감사(audit) 실시: 특정 기간 동안 데이터베이스에서 수행된 모든 연산들을 검사하기 위해 시스템 로그 조사

 

10.2 권한 관리

권한 허가

  • 서로 다른 객체에 다양한 권한 존재
  • 객체 생성자(소유자) -> 객체에 대한 모든 권한 가짐 + 자신이 소유한 임의의 객체에 대한 특정 권한을 GRANT문을 사용하여 다른 사용자나 역할에게 허가 가능
GRANT 권한 [(attr들의 list)]
ON 객체
TO {사용자 | 역할 | PUBLIC}
[WITH GRANT OPTION];
  • 권한: SELECT, INSERT, DELETE, UPDATE, REFERENCES 중 한 개 이상
  • 릴레이션을 참조하는 외래 키 제약 조건 만들려면 -> REFERENCES 권한 필요
  • WITH GRANT OPTION절과 함께 권한 허가 -> 그 사용자도 WITH GRANT OPTION과 함께 혹은 없이도 권한을 다른 사용자에게 허가 가능
  • 릴레이션의 뷰를 정의 -> 이 뷰에 대한 권한 부여 -> 이 방식으로 릴레이션 직접 접근 허용하지 않고, 내용을 보일 수 있음

GRANT SELECT 
ON EMPLOYEE
TO LEE;

 

GRANT UPDATE (TITLE, MANAGER)
ON EMPLOYEE
TO LEE;

 

GRANT REFERENCES (EMPNO)
ON EMPLOYEE
TO CHOI;

 

GRANT SELECT, INSERT 
ON DEPARTMENT
TO LEE
WITH GRANT OPTION;

 

 

권한 취소

  • REVOKE문 사용
  • 권한을 취소하면 WITH GRANT OPTION을 통해 허가했던 권한들도 연쇄적으로 취소됨
  • 권한을 허가했던 사람만 그 권한 취소 가능
REVOKE {권한들의 리스트 | ALL}
ON 객체
FROM {사용자 | 역할 | PUBLIC};

 

REVOKE SELECT, INSERT 
ON DEPARTMENT
FROM LEE;

-> CHOI의 권한도 연쇄적으로 취소됨

 

역할(role)

  • 여러 사용자에 대한 권한 관리 단순화를 위해 역할 사용
  • 역할: 사용자에게 허가할 수 있는 연관된 권한들의 그룹으로서 이름을 가짐
  • 각 사용자는 여러 역할에 속할 수 있음
  • 여러 사용자들이 동일한 역할 허가받을 수 있음
  • 역할 생성 -> 역할에 권한 부여 -> 사용자에게 역할 부여
  • 오라클에서는 CREATE ROLE문 사용하여 역할 생성

 

ex: programmer 역할에게 CREATE TABLE 권한 부여, 사용자 CHOI에게 programmer 역할 부여

GRANT CREATE TABLE
TO programmer;

GRANT programmer
TO CHOI;

 

 

10.3 오라클의 보안 및 권한 관리

오라클 보안 및 권한 관리 개요

  • 사용자는 접속하려는 DB에 계정과 패스워드 가져야 함
  • if 별도로 권한 허가 X -> 데이터베이스에서 어떤 작업도 수행 X
  • 시스템 권한: 사용자가 DB에서 특정 작업을 수행할 수 있도록 함(ex: 테이블 생성에는 CREATE TABLE 권한 필요)
  • 객체 권한: 사용자가 특정 객체(테이블, 뷰, 프로시저 등)에 대해 특정 연산을 수행할 수 있도록 함

 

TABLE

  • CREATE TABLE
  • CREATE ANY TABLE
  • ALTER ANY TABLE
  • DROP ANY TABLE - 테이블 삭제
  • SELECT ANY TABLE

INDEX

  • CREATE ANY INDEX
  • ALTER ANY INDEX
  • DROP ANY INDEX

TABLESPACE

  • CREATE TABLESPACE
  • ALTER TABLESPACE
  • DROP TABLESPACE

SESSION

  • CREATE SESSION
  • ALTER SESSION

 

시스템 권한의 허가

  • GRANT문 -> 사용자에게 시스템 권한 허가
  • WITH ADMIN OPTION (=WITH GRANT OPTION)
  • 시스템 권한을 취소할 때는 연쇄적 취소가 일어나지 않음

 

객체 권한

  • 객체 소유자 -> 객체에 대한 모든 권한 보유
  • 자신의 객체에 대한 특정 권한 -> 다른 사용자나 역할에게 허가 
  • PUBLIC 키워드: 모든 사용자에게 권한 부여
  • 각 객체마다 허가할 수 있는 권한들에 차이 존재

 

-> EXECUTE 권한은 테이블, 뷰에 부여 불가능

-> 뷰에 REFERENCES 권한 부여 불가능

 

미리 정의된 역할

  • 미리 정해놓은 역할 약 20여개 존재 
  • connect 역할: 데이터베이스에 접속할 수 있는 권한
  • resource 역할: 테이블과 인덱스 생성(스키마 오브젝트를 생성, 변경, 삭제), 자신의 객체에 대해 다른 사용자에게 권한을 허가하거나 취소 가능(시스템 권한의 일정 부분 부여)
  • dba(database administrator): WITH ADMIN OPTION과 함께 모든 시스템 권한 보유

데이터베이스 관리자 권한

  • 데이터베이스 관리자만 관리자 권한을 가진 채 데이터베이스에 접속할 수 있어야 함
유형 권한
SYSOPER STARTUP
SHUTDOWN
ALTER DATABASE OPEN
ALTER DATABASE BACKUP
SYSDBA WITH ADMIN OPTION과 함께 SYSOPER의 권한
CREATE DATABASE

 

모든 권한 취소

REVOKE ALL
ON EMPLOYEE
FROM LEE;

REVOKE ALL PRIVILEGES
FROM LEE;

 

-> LEE에게 허가한 EMPLOYEE에 대한 모든 권한 취소

-> LEE에게 허가한 모든 권한 취소

 

데이터 사전 뷰를 사용하여 권한에 관련된 정보 검색

  • USER_TAB_PRIVS 데이터 사전 뷰 혹은 DBA_TAB_PRIVS 데이터 사전  뷰를 통해서 검색할 수 있음
SELECT * 
FROM USER_TAB_PRIVS;
  • GRANTEE: 권한을 허가 받은 사용자
  • OWNER: 객체의 소유자
  • TABLE_NAME: 테이블의 이름
  • GRANTOR: 권한을 허가한 사용자
  • PRIVILEGE: 객체에 대한 권한
  • GRANTABLE: 권한을 허가받은 사용자가 다시 다른 사용자에게 권한 허가할 수 있는지 여부

-> SELECT 권한 허가 받아야 함

사용자 LEE가 허가 받은 시스템 권한 확인

  • 사용자 LEE로 로그인 한 후 아래 질의 수행
SELECT *
FROM USER_SYS_PRIVS;
  • USER_SYS_PRIVS: 사용자에게 허가된 시스템 권한을 보여주는 데이터 사전 뷰
  • USERNAME은 권한 허가받은 사용자, PRIVILEGE는 허가받은 시스템 권한, ADMIN_OPTION은 시스템 권한을 허가받은 사용자가 다른 사용자에게 허가 가능한지 여부

 

-> 다른 소유자의 테이블 접근할 때테이블 앞에 소유자의 계정을 붙여야 함

 

동의어(synonym) 정의

CREATE SYNONYM 동의어 FOR 객체;

 

ex) 사용자 LEE가 KIM.EMPLOYEE를 EMP로 간단하게 지정

CREATE SYNONYM EMP FOR KIM.EMPLOYEE;

 

사용자 LEE에 대해서 EMPLOYEE 테이블에서 SALARY 애트리뷰트를 제외한 애트리뷰트들만 SELECT할 수 있도록 하려면 

  • 오라클에서는 애트리뷰트 단위로 SELECT 권한 허가 불가능
  • SALARY 애트리뷰트를 제외한 나머지 애트리뷰트들을 포함하는 뷰를 정의 -> 이 뷰에 대한 SELECT 권한
  • INSERT, UPDATE, REFERENCES 권한은 애트리뷰트 단위로 허가 가능