SQL_DCL, 유저 권한 설정

김수경·2024년 1월 16일

SQLD 자격증

목록 보기
11/14

1. DCL(Data Control Language)

DCL이란?

  • 특정 유저의 권한을 제어할 수 있는 명령어
  • 권한부여(GRANT), 권한회수(REVOKE)
  • DDL과 마찬가지로 COMMIT, ROLLBACK이 필요 없이 실행하는 순간 적용

DCL 구문


CASCADE란 ?
DB의 값을 수정/삭제할 때, 해당 값을 참조하고 있는 레코드 역시 종속적으로 수정/삭제를 가능하게 함. 사용자가 소유한 모든 오브젝트를 함께 삭제한다.

2. 유저와 권한

  • 데이터 공유를 위해 기존 운영자가 아닌 새로운 대상에게 DB를 오픈해야 하는 경우
  • DCL을 통해 데이터에 대한 보호와 보안을 할 수 있음
    Oracle 유저생성 권한부여
--1. Oracle SQL Plus 사용
CONN SCOTT/TIGER;

--2. ERROR 발생
CREATE USER PJS IDENTIFIED BY KOREA7; 

--3. 유저 생성 권한 부여
CONN SYSTEM/비밀번호;
GRANT CREATE USER TO SCOTT; 

--4. 정상 동작
CONN SCOTT/TIGER;
CREATE USER PJS IDENTIFIED BY KOREA7;  

--5. ERROR 발생 
CONN PJS/KOREA7; 

--6. 로그인 권한 부여
CONN SYSTEM/비밀번호;
GRANT CREATE SESSION TO PJS;  

--7. 정상 동작
CONN PJS/KOREA7;  

--8. ERROR 발생
CREATE TABLE MENU (MENU_SEQ NUMBER NOT NULL, TITLE VARCHAR2(10));  

--9. 테이블 생성 권한 부여
CONN SYSTEM/비밀번호;
GRANT CREATE TABLE TO PJS;  

--10. 정상 동작
CONN PJS/KOREA7;
CREATE TABLE MENU (MENU_SEQ NUMBER NOT NULL, TITLE VARCHAR2(10));  

SQL Server 유저 생성 및 권한 부여 과정

--1. 유저 매핑
CREATE LOGIN PJS WITH PASSWORD='KOREA7', DEFAULT_DATABASE=AdventureWorks

--2. 데이터베이스로 이동하여 유저 생성
USE ADVENTUREWORKS;
GO CREATE USER PJS FOR LOGIN PJS WITH DEFAULT_SCHEMA = dbo;

--3. ERROR 발생
CREATE TABLE MENU (MENU_SEQ INT NOT NULL, TITLE VARCHAR(10)); 

--4. 권한 부여
GRANT CREATE TABLE TO PJS;  

--5. 스키마에 권한 부여
GRANT Control ON SCHEMA::dbo TO PJS 

--6. 정상 동작
CREATE TABLE MENU (MENU_SEQ INT NOT NULL, TITLE VARCHAR(10));  

3. 권한

시스템 권한

  • 사용자가 데이터베이스에서 특정 작업을 수행할 수 있도록 함
    • system_privilege
      • 부여할 시스템 권한의 이름
    • role
      • 부여할 데이터베이스 역할의 이름
    • user, role
      • 부여할 사용자 이름과 다른 데이터 베이스 역할 이름
    • PUBLIC
      • 시스템권한, 또는 데이터베이스 역할을 모든 사용자에게 부여 가능
    • WITH ADMIN OPTION
      • 권한을 부여 받은 사용자도 부여 받은 권한을 다른 사용자 또는 역할로 부여 가능

객체 권한

  • 유저가 소유하고 있는 특정 객체를 다른 사용자들이 엑세스 하거나 조작할 수 있게 생성
  • SELECT, INSERT, DELETE, UPDATE 작업 명령 수행 가능
  • 모든 유저는 각각 자신이 생성한 테이블 외에 다른 유저의 테이블에 접근하려면 해당 테이블에 대한 오브젝트 권한을 소유자로부터 부여받아야 한다.
    • object_privilege
      • 부여할 객체권한의 이름
    • object
      • 객체명
    • user, role
      • 부여할 사용자 이름과 다른 데이터 베이스 역할 이름
    • PUBLIC
      • 객체권한, 또는 데이터베이스 역할을 모든 사용자에게 부여 가능
      • PUBLIC으로 권한을 부여하면 회수할 때도 PUBLIC으로 설정
    • WITH GRANT OPTION
      • 권한을 부여 받은 사용자도 부여 받은 권한을 다른 사용자 또는 역할로 부여 가능

ROLE

  • 권한부여와 회수를 쉽게하기 위함
profile
잘 하고 있는겨?

0개의 댓글