[SQLD] 2과목 SQL 기본 및 활용 - DCL

박진우·2022년 6월 7일
0

SQLD

목록 보기
16/21

💡DCL

DCL의 개요

유저를 생성하고 권한을 제어할 수 있는 DCL(DATA CONTROL LANGUAGE) 명령어이며, 보안을 위해 필요하다.

  • 권한부여: GRANT
    • SQL>>

      GRANT 권한 ON 오브젝트 TO 유저명;

  • 권한 제거: REVOKE
    • SQL>>

      REVOKE 권한 ON 오브젝트 TO 유저명;


◽ Oracle의 유저


- SCOTT: 테스트용 샘플 유저

- SYS: DBA 권한이 부여된 최상위 유저

- SYSTEM: DB의 모든 시스템 권한이 부여된 DBA


◽권한(Privileges)

privileges(권한) 설    명
SELECT 지정된 테이블에 SELECT 권한 부여
INSERT 지정된 테이블에 INSERT 권한 부여
UPDATE 지정된 테이블에 UPDATE 권한 부여
DELETE 지정된 테이블에 DELETE 권한 부여
ALTER 지정된 테이블에 ALTER 권한 부여
INDEX 지정된 테이블에 INDEX 생성 권한 부여
REFERENCES 지정된 테이블에 제약조건 생성 권한 부여
ALL 지정된 테이블에 모든 권한 부여

  • SELECT, INSERT, UPDATE, DELETE, ALTER, ALL : DML 관련 권한

  • REFERENCES : 지정된 테이블을 참조하는 제약조건을 생성하는 권한

  • INDEX : 지정된 테이블에서 인덱스를 생성하는 권한



◽ ROLE을 이용한 권한부여

  • 많은 데이터베이스에서 유저들과 권한들 사이에서 중개 역할을 하는 ROLE을 제공한다.

  • 데이터베이스 관리자는 ROLE을 생성하고, ROLE에 각종 권한들을 부여한 후 ROLE을 다른 ROLE이나 유저에게 부여할 수 있다.

  • ROLE에 포함되어 있는 권한들이 필요한 유저에게는 해당 ROLE만을 부여함으로써 빠르고 정확하게 필요한 권한을 부여한다.

  • 오라클에서 기본적으로 CONNECT, RESOURCE, DBA ROLE이 제공된다.

  • ROLE 생성

    CREATE ROLE ROLE이름;

  • ROLE 권한부여

    GRANT 권한 TO ROLE이름;

  • 다른 유저에게 권한부여

    GRANT ROLE이름 TO User1, User2.... ;


  • Oracle SQL>>
REVOKE CREATE SESSION, CREATE TABLE FROM ZINU;

부여했었던 권한 취소하기

  • SQL>>
REVOKE CREATE TABLE FROM ZINU;

부여했었던 권한 취소하기

CONN SYSTEM/MANAGER;

CREATE ROLE LOGIN_TABLE;

GRANT CREATE SESSION, CREATE TABLE TO LOGIN_TABLE;

GRANT LOGIN_TABLE TO ZINU;

CONN ZINU/KOREA7;

CREATE TABLE MENU2(MENU_SEQ NUMBER NOT NULL,TITLE VARCHER2(10));

Role 만들기(LOGIN_TABLE 이라는 롤 만들기)



Oracle에서 제공하는ROLE

  • SQL>>
DROP USER ZINU CASCADE; 

유저 삭제 명령(유저가 만든 테이블도 같이 삭제 )

CREATE USER ZINU IDENTIFIED BY KOREA7; 

사용자 생성 명령

 GRANT CONNECT, RESOURCE TO ZINU;

롤을 이용한 권한 부여

SQL Server에서는 롤을 생성하여 사용하기 보다는 기본적으로 제공되는 롤에 멤버로 참여하는 방식으로 사용된다. 하지만오라클과 같이 롤을 자주 사용하지는 않는다.

  • 인스턴스 수준의 작업이 필요한 경우 : 서버 수준 역할명을 이용하여 로그인 및 사용자 권한을 제어한다.

  • 데이터베이스 수준의 작업이 필요한 경우: 데이터베이스 수준 역할을 이용하여 부여한다.

0개의 댓글