Download presentation
Presentation is loading. Please wait.
1
제 23 장 오라클에서 보안 기능
2
보안과 권한 DBMS는 ① 로그인 단계에서 DBMS 접근을 제한하는 로그인 사용자 관리 ② 로그인한 사용자별로 특정 데이터로의 접근을 제한하는 권한 관리의 기능 제공 DBMS 데이터베이스 사용자1 테이블1 허가 사용자2 거부 테이블2 거부 ① 로그인 확인 ② 권한확인 그림 9-2 데이터베이스 접근 권한
3
1. 테이블스페이스와 로그인 사용자 관리 테이블스페이스 생성하기
테이블스페이스 : 오라클에서 데이터를 저장할 때 사용하는 논리적 저장공간(하드디스크에서는 실제 여러 개의 물리적인 데이터 파일로 구성될 수 있음). 오라클 시스템 운영에 필요한 필수 정보를 담고 있음 CREATE TABLESPACE 테이블스페이스명 DATAFILE ‘저장될 경로 및 사용할 파일명’ SIZE 저장공간 질의 (system 계정) 10M의 용량의 테이블스페이스 md_tbs, mb_test를 C:\madang\oradata 폴더에 생성하시오. 이때 데이터 파일 이름은 각각 md_tbs_data01.dbf, md_test_data01.dbf로 한다(폴더 가 없으면 생성 후 진행). CREATE TABLESPACE md_tbs DATAFILE 'C:\madang\oradata\md_tbs_data01.dbf' SIZE 10M; CREATE TABLESPACE md_test DATAFILE 'C:\madang\oradata\md_test_data01.dbf'
4
1. 테이블스페이스와 로그인 사용자 관리 테이블스페이스 삭제하기
DROP TABLESPACE 테이블스페이스이름 [INCLUDING CONTENTS [AND DATAFILES] [CASCADE CONSTRAINTS]]; 질의 9-2 (system 계정) md_test 테이블스페이스를 데이터 파일까지 포함하여 모두 삭제하라. DROP TABLESPACE md_test INCLUDING CONTENTS AND DATAFILES;
5
1.2 신규 로그인 사용자 계정 생성하기 사용자 계정 생성하기 사용자 계정 설정 변경하기 사용자 계정 삭제하기
CREATE USER [사용자이름] IDENTIFIED BY [비밀번호] DEFAULT TABLESPACE [테이블스페이스]; 사용자 계정 설정 변경하기 ALTER USER [사용자이름] IDENTIFIED BY [비밀번호]; 사용자 계정 삭제하기 DROP USER [사용자이름] CASCADE;
6
1.2 신규 로그인 사용자 계정 생성하기 질의 9-3 (system 계정) 새로운 사용자 mdguest를 생성하시오. 비밀번호는 mdguest, 테이블스페이스는 users로 설정한다. CREATE USER mdguest IDENTIFIED BY mdguest; 질의 9-4 (system 계정) 새로운 사용자 mdguest2를 생성하시오. 비밀번호는 mdguest2, 테이블스페이스는 앞에서 생성한 md_tbs로 설정한다. CREATE USER mdguest2 IDENTIFIED BY mdguest2 DEFAULT TABLESPACE md_tbs;
7
2. 권한 관리 소유한 개체에 대한 사용 권한을 관리하기 위한 명령을 DCL(Data Control Language)이라고 함
대표적 DCL 문 : 권한 허가 GRANT 문, 권한 취소 REVOKE 문 OWNER mduser GRANT With grant option REVOKE 권한 허가 mdguest GRANT REVOKE 권한 취소 mdguest2 그림 9-6 GRANT 문과 REVOKE 문의 관계
8
2.1 권한 허가 - GRANT 객체를 생성한 소유자가 대상 객체에 대한 권한을 다른 사용자에게 허가하는 명령
GRANT 권한 [(컬럼[ ,...n ])] [ ,...n ] [ON 객체] TO {사용자Ι롤ΙPUBLIC [ ,...n ]} [WITH GRANT OPTION] * [ , ... n ] : 반복가능을 의미 질의 (madang 계정) mdguest에게 Book 테이블의 SELECT 권한을 부여하시오. GRANT SELECT ON Book TO mdguest; 질의 (madang 계정) mdguestguest에게 Customer 테이블의 SELECT, UPDATE 권한을 WITH GRANT OPTION과 함께 부여하시오. GRANT SELECT, UPDATE ON Customer TO mdguest WITH GRANT OPTION;
9
2.1 권한 허가 - GRANT 질의 (mdguest 계정) madang.Book 테이블과 madang.Customer 테이블의 SELECT 권한을 mdguest2에 부여하시오. GRANT SELECT ON Book TO mdguest2; GRANT SELECT ON Customer TO mdguest2; 질의 (madang 계정) Orders 테이블을 모든 사용자가 SELECT할 수 있도록 권한을 부여하시오. GRANT SELECT ON Orders TO PUBLIC;
10
2.2 권한 취소 - REVOKE GRANT 문으로 허가한 권한을 취소, 회수하는 명령
GRANT 문이 권한 부여를 위해 ‘TO 사용자’를 표기하였다면, REVOKE 문은 권한 취소를 위해 ‘FROM 사용자’를 표기함 권한을 재부여하는 WITH GRANT OPTION의 회수를 위해 ‘CASCADE’ 옵션을 사용함 CASCADE는 사용자가 다른 사용자에게 부여한 권한까지 연쇄적으로 취소하라는 의미로, 사전에 주의 깊게 확인하고 사용해야 함 REVOKE 권한 [(컬럼[ ,...n ])] [ ,...n ] [ON 객체] FROM { 사용자Ι롤ΙPUBLIC [ ,...n ]} [CASCADE]
11
2.2 권한 취소 - REVOKE 질의 (madang 계정) mdguest에게 부여된 Book 테이블의 SELECT 권한을 취소하시오. REVOKE SELECT ON Book FROM mdguest; 질의 (madang 계정) mdguest에게 부여된 Customer 테이블의 SELECT 권한을 취소하시오. REVOKE SELECT ON Customer FROM mdguest;
12
2.3 역할 - ROLE 롤(ROLE): 데이터베이스 객체에 대한 권한을 모아둔 집합
그림 9-12 마당서점 사용자별 시스템 권한 그림 9-12 마당서점 사용자별 역할과 권한
13
2.3 역할 - ROLE 역할 생성 역할 제거 역할에 권한 부여 역할에 권한 회수 사용자에게 역할 부여
CREATE ROLE 역할 이름 DROP ROLE 역할이름 GRANT 권한 [ON 객체] TO 역할이름 REVOKE 권한 [ON 객체] FROM 역할이름; GRANT 역할이름 TO 사용자
14
2.3 역할 - ROLE 역할 생성부터 사용자 추가까지의 단계 역할을 제거하면 반대로 수행 CREATE ROLE - 역할 생성
GRANT - 만들어진 역할에 권한 부여 GRANT - 사용자에게 역할 부여 역할을 제거하면 반대로 수행 DROP ROLE - 역할 삭제(사용자에게 부여된 역할에 대한 권한 역시 제거됨) 질의 (system 계정) ‘programmer’라는 역할을 생성하시오. CREATE ROLE programmer;
15
2.3 역할 - ROLE 질의 ( system 계정) programmer 역할에 CREATE ANY TABLE과 CREATE ANY VIEW 권한을 부여하시오. GRANT CREATE ANY TABLE, CREATE ANY VIEW TO programmer; 질의 (system 계정) mdguest에 programmer 역할의 권한을 부여하시오. GRANT programmer TO mdguest;
16
2.3 역할 - ROLE 질의 (mdguest 계정) mdguest2 사용자에게 다음의 테이블을 생성하고 데이터를 삽입(INSERT)하시오. CREATE TABLE mdguest2.NEWTABLE ( myname VARCHAR2(40), myphone VARCHAR2(20) ); INSERT INTO mdguest2.NEWTABLE (myname, myphone) VALUES ('홍길동', ' ');
17
2.3 역할 - ROLE 질의 9-16 ( system 계정) programmer 역할에 mdguest2.NEWTABLE 테이블에 대한 SELECT와 INSERT 권한을 부여하시오. 그리고 (mdguset 계정) INSERT 문을 수행한 후 조회(SELECT)해 보시오. (system 계정) GRANT SELECT, INSERT ON mdguest2.NEWTABLE TO programmer; (mdguest 계정) INSERT INTO mdguest2.NEWTABLE (myname, myphone) VALUES ('홍길동', ' '); COMMIT; SELECT * FROM mdguest2.NEWTABLE;
18
2.3 역할 - ROLE 질의 9-17 (system 계정) mdguest2.NEWTABLE 계정의 SELECT 권한을 회수하시오. 그리고 (mdguest 계정) mdguest2.NEWTABLE 테이블을 조회(SELECT)해 보시오. (system 계정) REVOKE SELECT ON mdguest2.NEWTABLE FROM programmer; (mdguest 계정) SELECT * FROM mdguest2.NEWTABLE;
19
2.3 역할 - ROLE 질의 9-18 (system 계정) programmer 역할을 제거하시오. mdguest2.NEWTABLE 역시 제거하시오 DROP ROLE programmer; DROP TABLE mdguest2.NEWTABLE;
Similar presentations