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

Seojin Kwak·2022년 6월 1일
0

Database

목록 보기
7/9

데이터베이스 보안

  • 보안 유형
    - 물리적 보호: 자연 재해, 컴퓨터 시스템 우연 손상, 데이터 손상 주는 위험으로부터 보호
    - 권한 보호: 권한을 가진 사용자만 특정 접근 모드로 데이터베이스 접근할 수 있ㄷ록 보호
    - 운영 보호: 데이터베이스 무결성에 대한 사용자 실수 영향 최소화, 제거

  • DBMS 보안 기능
    - 접근 제어: 데이터베이스 시스템 접근 통제. 로그인 과정 통제 위해 사용자 계정, 암호 관리
    - 보안 및 권한 관리: 특정 사용자 또는 사용자들의 그룹이 지정된 데이터베이스 영역만 접근할 수 있고, 그 외의 영역은 접근할 수 없도록 통제

  • 보안 기법
    - 임의 보안 기법: 사용자들에게 특정 릴레이션, 튜플, 애트리뷰트를 지정된 모드로 접근할 수 있는 권한을 허가(GRANT), 취소(REVOKE)하는 기법
    대부분의 상용 관계 DBMS에서 사용.
    시스템 카탈로그에 권한 허가, 취소 기록
    - 강제 보안 기법: 데이터와 사용자들을 다양한 보안 등급(1급 비밀, 2급 비밀, 3급 비밀, 일반 정보 등)으로 분류. 해당 조직에 적합한 보안 정책 적용, 다단계 보안 시행.

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

권한 관리

권한 허가

객체의 생성자: 객체에 대한 모든 권한 가짐. GRANT문 사용해서 다른 사용자나 역할에게 허가.

GRANT	권한 [(애트리뷰트들의 리스트)] // SELECT, INSERT, DELETE, UPDATE, REFERENCES 중 한 개 이상
ON		객체
TO		{사용자 | 역할 | PUBLIC}
[WITH GRANT OPTION];
  • UPDATE문 사용하여 애트리뷰트 수정하려면 애트리뷰트에 대한 UPDATE 권한 필요
  • 릴레이션 참조하는 외래 키 제약 조건 만드려면 해당 릴레이션에 대한 REFERENCES 권한 필요
  • WITH GRANT OPTION절과 함께 권한 허가 받았으면, 그 사용자도 다른 사용자에게 권한 허가 가능
  • 기본 릴레이션 소유자가 다른 사용자들의 릴레이션 직접 접근 막으려면, 릴레이션 자체 권한 허가 X. 릴레이션 참조 뷰 정의 후, 뷰에 대한 권한 부여
  1. 사용자 KIM이 자신이 소유한 EMPLOYEE 릴레이션에 대한 SELECT 권한을 사용자 LEE에게 허가
GRANT	SELECT
ON		EMPLOYEE
TO		LEE;
  1. 사용자 KIM이 자신이 소유한 EMPLOYEE 릴레이션의 TITLE과 MANAGER 애트리뷰트에 대한 UPDATE 권한을 사용자 LEE에게 허가
GRANT	UPDATE (TITLE, MANAGER)
ON		EMPLOYEE
TO		LEE;
  1. 사용자 KIM이 자신이 소유한 EMPLOYEE 릴레이션의 기본 키 애트리뷰트인 EMPNO에 대한 REFERENCES 권한을 사용자 CHOI에게 허가
GRANT	REFERENCES (EMPNO)
ON		EMPLOYEE
TO		CHOI;
  1. 사용자 KIM이 자신이 소유한 DEPARTMENT 릴레이션에 대한 SELECT와 INSERT 권한을 사용자 LEE에게 허가하고 사용자 LEE는 다른 사용자에게 권한 부여 가능
GRANT	SELECT, INSERT
ON		DEPARTMENT
TO		LEE
WITH GRANT OPTION;
  1. 사용자 KIM이 자신이 생성한 EMPLOYEE 릴레이션에 대한 SELECT 권한을 모든 사용자들에게 허가
GRANT	SELECT
ON		EMPLOYEE
TO		PUBLIC;

권한 취소

어떤 사용자가 다른 사용자에게 허가했던 권한 취소 시, 권한을 취소 당한 사용자가 WITH GRANT OPTION을 통해 다른 사용자에게 허가했던 권한들도 연쇄적으로 취소

REVOKE	{권한들의 리스트 | ALL}
ON		객체
FROM	{사용자 | 역할 | PUBLIC};
  1. 사용자 KIM이 DEPARTMENT 릴레이션에 대해 LEE에게 허가한 SELECT, INSERT 권한을 취소
REVOKE	SELECT, INSERT
ON		DEPARTMENT
FROM 	LEE;

역할(ROLE)

: 사용자에게 허가할 수 있는 연관된 권한들의 그룹
사용자: 여러 역할에 속할 수 있음. 여러 사용자들: 동일한 역할 허가받을 수 있음.
역할 권한들에 변화 생기면 즉시 변경된 권한 가지는 사용자들.

  1. programmer 역할 생성
CREATE ROLE	programmer;
  1. programmer 역할에게 CREATE TABLE 권한 부여
GRANT	CREATE TABLE
TO		programmer;
  1. 사용자 CHOI에게 programmer 역할 허가
GRANT	programmer
TO		CHOI;

오라클의 보안 및 권한 관리

  • 시스템 권한: 사용자가 데이터베이스에서 특정 작업을 수행할 수 있도록 함
    권한 취소 시에 연쇄적 취소 X
GRANT CREATE SESSION TO KIM WITH ADMIN OPTION;
// WITH ADMIN OPTION: 권한을 허가받은 사용자가 다시 이 권한을 다른 사용자에게 허가 가능
  • 객체 권한: 사용자가 특정 객체(테이블, 뷰, 프로시저 등)에 대해 특정 연산을 수행할 수 있도록 함
    객체 소유자: 객체에 대한 모든 권한 보유. 다른 사용자나 역할에게 허가 가능.

  • 미리 정의된 역할: 사용 패턴을 여러 관점에서 분석하여 각 사용 패턴에 맞게 미리 정해놓은 역할 약 20여개.
    - connect: 오라클 데이터베이스 로그인. 권한 허가 받았을 시, 검색, 갱신 등등 가능
    - resource: connect + resource => 테이블, 인덱스 생성. 자신의 객체에 대해 다른 사용자에게 권한 허가, 취소 가능

SELECT	*
FROM 	ROLE_SYS_PRIVS
WHERE	ROLE = 'CONNECT' OR ROLE = 'RESOURCE';

오라클에서는 애트리뷰트 단위로 SELECT 권한 허가 불가

profile
Hello, World!

0개의 댓글