일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 오블완
- Machine Learning
- GPT-4
- LG Aimers 4th
- ChatGPT
- 티스토리챌린지
- 해커톤
- 머신러닝
- AI
- 회귀
- deep learning
- OpenAI
- LG
- 딥러닝
- 지도학습
- Classification
- LLM
- 분류
- gpt
- LG Aimers
- regression
- supervised learning
- PCA
Archives
- Today
- Total
SYDev
[데이터베이스] 10장. 데이터베이스 보안과 권한 관리 본문
경희대학교 이영구 교수님의 데이터베이스 수업 복습용 게시물입니다.
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 권한은 애트리뷰트 단위로 허가 가능
'3학년 1학기 전공 > 데이터베이스' 카테고리의 다른 글
[데이터베이스] 9장. 트랜잭션 (0) | 2024.06.18 |
---|---|
[데이터베이스] 7장. 릴레이션 정규화 (0) | 2024.06.01 |
[데이터베이스] 8장. 뷰와 시스템 카탈로그 (0) | 2024.05.23 |
[데이터베이스] 5.2. ER 모델 (1) | 2024.05.03 |
[데이터베이스] 5.1. 데이터베이스 설계의 개요 (0) | 2024.05.02 |