반응형
Notice
Recent Posts
Recent Comments
Link
지구정복
[SQLD] 26. DCL (DATA CONTROL LANGUAGE) 본문
728x90
반응형
1. DCL 개요
- 유저를 생성하고 권한을 제어할 수 있는 DCL(DATA CONTROL LANGUAGE) 명령어
2. 유저와 권한
- 대부분의 데이터베이스는 데이터 보호와 보안을 위해서 유저와 권한을 관리함
- Oracle 을 설치하면 기본적으로 제공되는 유저들인 SYS,SYSTEM, SCOTT 유저는 아래와 같음
- ORALCE 과 SQL Server의 사용자에 대한 아키텍트는 다른 면이 많다.
- SQL Server Architecture
- Oracle Architecture
2.1. SQL SERVER 로그인 방식
2.1.1. WINDOWS 인증 방식
- Windows 에 로그인한 정보를 가지고 SQL Server 에 접속하는 방식
- SQL Server가 Windows에서 제공하는 자격 증명을 신뢰하므로 Windows 인증을 사용한 연결을 트러스트된 연결이라고 함
2.1.2. 혼합 모드(Windows 인증 또는 SQL 인증)
- 기본적으로 Windows 인증으로도 SQL Server 에 접속 가능
- Oracle 인증과 같은 방식으로 사용자 아이디와 비밀번호로 SQL Server 에 접속하는 방식
가. 유저 생성과 시스템 권한 부여
- 유저 생성후, 접속을 위한 권한 부여 필요,
- 모든 DDL 문장 수행을 위한 권한 부여 필요
- 개별로 부여 하기 보다는 ROLE 을 통한 권한 부여
* Oracle
SQL> show user
USER is "SCOTT"
SQL> create user pjs identified by korea7 ;
create user pjs identified by korea7
*
ERROR at line 1:
ORA-01031: insufficient privileges
SQL> conn /as sysdba
Connected.
SQL> show user
USER is "SYS"
SQL> grant create user to scott ;
Grant succeeded.
SQL> conn scott/tiger
Connected.
SQL> show user
USER is "SCOTT"
SQL> create user pjs identified by korea7 ;
User created.
SQL> conn pjs/korea7 << 유저 생성했다고 해서 바로 접속 할수 없다. 접속을 위한 권한 부여 필요
ERROR:
ORA-01045: user PJS lacks CREATE SESSION privilege; logon denied
SQL> conn / as sysdba
Connected.
SQL> grant create session to scott with admin option ;
Grant succeeded.
SQL> conn scott/tiger
Connected.
SQL> grant create session to pjs ;
Grant succeeded.
SQL> conn pjs/korea7 << 드뎌 접속 성능
Connected.
SQL>
SQL> select * from tab ;
no rows selected
SQL> create table menu ( menu_seq number not null, title varchar2(10)) ; << 접속 됐다고 테이블을 생성할 수 있는건 아니다.
create table menu ( menu_seq number not null, title varchar2(10))
*
ERROR at line 1:
ORA-01031: insufficient privileges
SQL> conn /as sysdba
Connected.
SQL> grant create table to pjs ;
Grant succeeded.
SQL> conn pjs/korea7
Connected.
SQL> create table menu ( menu_seq number not null, title varchar2(10)) ; << 드뎌 테이블 생성
Table created.
나. OBJECT 에 대한 권한 부여
- 오브젝트 권한와 오브젝트와의 관계
- 개별 오브젝트에 대한 작업을 위해서는 오브젝트 권한 부여 필요
SQL> conn scott/tiger
Connected.
SQL> select * from pjs.menu ;
select * from pjs.menu
*
ERROR at line 1:
ORA-00942: table or view does not exist
SQL> conn pjs/korea7
Connected.
SQL> insert into menu values(1, 'Fighting');
insert into menu values(1, 'Fighting')
*
ERROR at line 1:
ORA-01950: no privileges on tablespace 'USERS'
SQL> show user ;
USER is "PJS"
SQL> conn / as sysdba
Connected.
SQL> alter user pjs quota 100M on users ;
User altered.
SQL> conn pjs/korea7
Connected.
SQL> insert into menu values(1, 'Fighting');
1 row created.
SQL> commit ;
Commit complete.
SQL> grant select on menu to scott ; << 조회(SELECT) 권한 부여
Grant succeeded.
SQL> conn scott/tiger
Connected.
SQL> select * from pjs.menu ; << 드뎌 조회 가능
MENU_SEQ TITLE
------------ ----------
1 Fighting
SQL> update pjs.menu set title ='KKK' where menu_seq = 1 ; << 업데이트 시도 - 실패 ( 권한 부족 )
update pjs.menu set title ='KKK' where menu_seq = 1
*
ERROR at line 1:
ORA-01031: insufficient privileges
3. ROLE을 이용한 권한 부여
- 유저와 권한들 사이에서 중개 역할을 하는 ROLE 제공
- ROLE 을 생성하고, ROLE 에 각종 권한들을 부여한 후, ROLE 을 다른 ROLE 혹은 유저에 부여
- ROLE 을 만들어 사용하는 것이 권한을 직접 부여하는 것보다 빠르고 안전하게 관리 가능
SQL>CONN SYSTEM/MANAGER;
연결되었다.
REVOKE CREATE SESSION, CREATE TABLE FROM PJS ;
권한이 취소되었다.
CONN PJS/KOREA7
ERROR: 사용자 PJS은 CREATE SESSION 권한을 가지고 있지 않음, 로그온이 거절되었다.
CONN SYSTEM/MANAGER
연결되었다.
CREATE ROLE LOGIN_TABLE
롤이 생성되었다.
GRANT CREATE SESSION, CREATE TABLE TO LOGIN_tABLE ;
권한이 부여되었다.
GRANT LOGIN_tABLE TO PJS ;
CONN PJS/KOREA7
연결되었다.
CREATE TABLE MENU2 ( MENU_SEQ NUMBER NOT NULL, TITLE VARCHAR2(10)) ;
테이블이 생성되었다.
CONN SYSTEM/MANAGER
연결되었다.
DROP USER PJS CASCADE ;
사용자가 삭제되었다.
--> PJS 유저가 만든 MENU 테이블도 같이 삭제되었다.
CREATE USER PJS IDENTIFIED BY KOREA7;
사용자가 생성되었다.
GRANT CONNECT, RESOURCE TO PJS ;
권한이 부여되었다.
CONN PJS/KOREA7;
연결되었다.
CREATE TABLE MENU (MENU_SEQ NUMBER NOT NULL, TITLE VARCHAR2(10)) ;
테이블이 생성되었다.
[출처]
wiki.gurubee.net/display/STUDY/7.DCL%28DATA+CONTROL+LANGUAGE%29
728x90
반응형
'자격증 정복 > SQLD' 카테고리의 다른 글
[SQLD] 28. 옵티마이저와 실행계획 (0) | 2020.11.10 |
---|---|
[SQLD] 27. 절차형 SQL 개요 (0) | 2020.11.10 |
[SQLD] 25. 윈도우 함수 (WINDOW FUNCTION) (0) | 2020.11.10 |
[SQLD] 24. 그룹 함수 (GROUP FUNCTION) (0) | 2020.11.10 |
[SQLD] 23. 서브 쿼리 (0) | 2020.11.10 |
Comments