2장_7절 데이터제어어DCL(Data Control Language)

1.DCL 개요
-DDL(데이터 정의어 : 테이블 생성과 조작)
-DML(데이터 조작어 : 데이터조작)
-TCL(트랜잭션 제어어 : 트랜잭션 제어) 
-DCL(데이터 제어어 : 유저생성과 권한제어)를배움

2.유저와 권한
-데이터 공유를 위해 데이터베이스를 오픈해야함.
-보안의 문제가 생김
-새로운 유저를 생성, 생성한 유저에게 공유할 테이블을 정해주는 권한부여 방식으로 해결

(1)SCOTT : 오라클 테스트용 샘플유저, 디폴트암호값 : TIGER
(2)SYS : 데이터베이스 아키텍쳐 열학을 부여받은 유저
(3)SYSTEM : 데이터베이스의 모든 시스템 권한을 부여받은 유저, 오라클 설치시 생성
-Oracle과 Sql Server의 로그인 구조는 다르다.
-Oracle은 유저를 통해 DB에 접속한다.
-Sql Server는 인스턴스에 접속하기위해 로그인을 생성한다.??(Windows인증방식, Sql인증방식)

가. 유저생성과 시스템 권한부여
(1)SCOTT유저로 접속하여 유저를 생성하면 권한이 불충분 하다는 오류를 발생시킨다.
SQL> CONN PYTHONTS/200901618
Connected.
SQL> CREATE USER AAA IDENTIFIED BY 1234;
CREATE USER AAA IDENTIFIED BY 1234
                              *
ERROR at line 1:
ORA-01031: insufficient privileges

(2)SYSTEM유저로 접속하여, SCOTT유저에게 유저생성권한을 부여한후,
SCOTT유저로 접속하여 유저를 생성하면 권한이 있으므로 새로운 유저를 생성할 수 있다.
SQL> CONN SYSTEM/200901618
Connected.
SQL> GRANT CREATE USER TO PYTHONTS;

Grant succeeded.

SQL> CONN PYTHONTS/200901618
Connected.
SQL> CREATE USER AAA IDENTIFIED BY 1234;

User created.

(3)AAA유저로 접속하려하면 세션생성 권한이 없어 로그인이 거절당한다.
-SYSTEM유저로 접속하여 세션생성 권한을 AAA에게 부여하고
-AAA유저로 접속하면 접속이 가능하다(세션을 생성함)

SQL> CONN AAA/1234;
ERROR:
ORA-01045: user AAA lacks CREATE SESSION privilege; logon denied


SQL> CONN SYSTEM/200901618
Connected.
SQL> GRANT CREATE SESSION TO AAA;

Grant succeeded.

SQL> CONN AAA/1234;
Connected.

나. OBJECT에 대한 권한 부여
(1)OBJECT에 대한 권한이란 특정 유저가 소유한 객체에 대한 접근권한이다.
-특정 유저가 소유한 테이블,뷰,시퀀스,프로시져에대한
-SELECT, INSERT, DELETE, UPDATE, ALTER, EXECUTE, INDEX, REFERENCES의 접근권한이다.

SQL> SELECT *
  2  FROM AAA.테이블명;
의 방식으로 접근가능하다.

(2)권한부여방식
SQL> GRANT SELECT ON 테이블명 TO 유저이름;<-SELECT권한을 부여함.

3.ROLE을 이용한 권한부여
-유저를 생성하면 기본적으로 테이블, 션, 프로시져 생성권한등 많은 권한들을 부여해야함
-유저를 많이 생성할때마다 일일이 권한을 부여하려면 힘들다.
(1)따라서 여러 권한을 가진 ROLE이라는 것을 생성해서 생성할 유저마다 ROLE권한을 부여하면 일일이 부여 안해도됨.

(2)시스템유저로 로그인하여 LOGIN_TABLE이라는 롤을 생성하고
-LOGIN_TABLE 롤에 테이블,세션생성 권한을 허가한다.
(3)권한을 부여할 유저인 AAA에 ROLE이 가진 권한을 허가한다.
SQL> CONN SYSTEM/200901618
Connected.
SQL> CREATE ROLE LOGIN_TABLE;

Role created.

SQL> GRANT CREATE SESSION, CREATE TABLE TO LOGIN_TABLE;

Grant succeeded.

SQL> GRANT LOGIN_TABLE TO AAA;

Grant succeeded.

(4)오라클에서 기본적으로 제공하는 ROLE이 있다.
-CONNECT ROLE : 세션변경, 클러스터, 링크, 메뉴시퀀스?, 세션, 문법, 테이블,뷰생성권한 OK
-RESOURCE ROLE : 클러스터, 인덱스타입, 오퍼레이터, 프로시져, 메뉴시퀀스, 테이블, 트리거생성 권한OK



댓글

이 블로그의 인기 게시물

1장_1절 관계형 데이터베이스 개요

1장_2절 DDL(Data Definition Language : 데이터 정의어)

1장_5절. Where 조건절