DCL

한준수·2023년 6월 2일
0

SQLD

목록 보기
30/31

DCL 이란

유저를 생성하고 권한을 제어할 수 있는 명렁어 이다.
대부분의 DB는 데이터 보호와 보안을 위해서 유저와 권한을 관리함.
개별 오브젝트에 대한 작업을 위해서는 오브젝트 권한 부여 필요


Oracle과 SQL Server의 사용자 아키텍처 차이

Oracle

유저를 통해 DB에 접속하는 형태이다.
ID와 PW방식으로 인스턴스에 접속을 하고 그에 해당하는 스키마에 오브젝트 생성등의 권한을 부여받게 됨

SQL Server

인스턴스에 접속하기 위해 로그인이라는 것을 생성하게 되며, 인스턴스 내에 존재하는 다수의DB에 연결하여 작업하기 위해 유저를 생성한 후 로그인과 유저를 매핑해 주어야 한다.
Windows 인증 방식과 혼합 모드 방식이 존재한다.


시스템 권한

사용자가 SQL문을 실행하기 위해 적절한 권한 부여
시스템 권한 관련 명령어는 DBA 권한이 있는 사용자만이 부여할 수 있으므로 SYSTEM 계정으로 접속해야 한다.

모든 유저는 각각 자신이 생성한 테이블 외에 다른 유저의 테이블에 접근 하려면 해당 테이블에 대한 오브젝트 권한을 소유자로부터 부여받아야 한다.

GRANT - 권한부여

  • 예제
scott 계정에 뷰를 생성할 수 있는 권한을 부여
GRANT CREATE VIEW TO scott;

scott 계정에 유저를 생성할 수 있는 권한으 ㄹ부여
GRANT CREATE USER TO scott;

REVOKE - 권한 취소

  • 예제
scott 계정에 뷰를 생성할 수 있는 권한을 취소
REVOKE CREATE VIEW FROM scott;

scott 계정에 유저를 생성할 수 있는 권한을 취소
REVOKE CREATE USER FROM scott;

ROLE - 유저와 권한 사이에서 중개 역할

  • 유저에게 알맞은 권한들을 한 번에 부여하기 위해 사용한다.
  • ROLE을 생성하고, ROLE에 각종 권한들을 부여한 후, ROLE을 다른 ROLE 혹은 유저에 부여 ROLE을 만들어 사용하는 것이 권한을 직접 부여하는 것보다 빠르고 안전하게 관리할 수 있다

ROLE 생성 및 권한 부여

// 생성
CREATE ROLE LOGIN_TABLE;
// 권한 부여
GRANT CREATE SESSION, CREATE TABLE TO LOGIN_TABLE;

ROLE을 통한 권한 부여

// USER 준수에게 LOGIN_TABLE ROLE 이 가지고 있는 권한을 모두 부여
GRANT LOGIN_TABLE TO JUNSU;

CASCADE - 하위 오브젝트까지 삭제

유저를 삭제하는 명령어는 DROP USER 이고, CASCADE 옵션을 주면 해당 유저가 생성한 오브젝트를 먼저 삭제 후 유저를 삭제한다.

// USER 준수가 가지고 있는 모든 데이터 삭제
DROP USER JUNSU CASCADE;
profile
응애에요

0개의 댓글