DCL 마스터하기: SQL에서 GRANT와 REVOKE에 대한 궁극적인 가이드

발행: (2026년 2월 28일 오후 11:13 GMT+9)
6 분 소요
원문: Dev.to

Source: Dev.to

Introduction

데이터베이스를 다루고 있다면—소프트웨어 엔지니어링, 데이터 사이언스, 혹은 금융 분야의 미션 크리티컬 DB를 관리하든—보안이 선택 사항이 아니라는 것을 잘 알고 있을 겁니다. 프로덕션 환경에서 아무나 테이블을 삭제하도록 내버려 둘 수 없죠, 맞나요?

바로 여기서 DCL(Data Control Language)이 등장합니다. DML이 데이터를 조작하고 DDL이 구조를 정의한다면, DCL은 데이터베이스의 문지기 역할을 합니다. 누가 들어올 수 있는지, 어디로 갈 수 있는지, 무엇을 할 수 있는지를 결정하죠.

오늘은 이 카테고리에서 절대적인 파워하우스 명령어 두 가지, GRANTREVOKE를 자세히 살펴보겠습니다.

The Golden Rule: The Basic Structure

DCL의 아름다움은 구문이 매우 논리적이라는 점입니다. 마치 간단한 영어 문장처럼 생각하면 됩니다:

동작 + 허용/금지되는 내용 + 대상 + 대상자/부여자.

GRANTREVOKE는 이 동일한 골격을 따릅니다.

GRANT: Handing Out the Access Badge

Basic Syntax

GRANT [privileges] ON [table/view] TO [user];

Practical Example 1 – Read and Write Access

새로 입사한 주니어 HR 분석가가 팀에 합류했다고 가정해 봅시다. 데이터를 조회하고 신규 직원을 삽입할 수는 필요하지만, 삭제는 하지 못하게 하고 싶습니다.

GRANT SELECT, INSERT ON HR05_EMPLOYEE TO junior_analyst;

Practical Example 2 – Full Access (God Mode)

특정 테이블에 대해 시니어 개발자에게 완전한 제어 권한을 부여해야 할 경우:

GRANT ALL PRIVILEGES ON HR05_EMPLOYEE TO senior_dev;

The Pro Tip: WITH GRANT OPTION

사용자가 권한을 받는 것뿐만 아니라 다른 사람에게도 그 권한을 전달할 수 있도록 하려면 어떻게 할까요? WITH GRANT OPTION을 사용합니다. 이는 스키마 관리 권한을 기술 리드에게 위임할 때 흔히 쓰입니다.

GRANT SELECT ON SALES_TABLE TO tech_lead WITH GRANT OPTION;

REVOKE: Taking the Badge Back

Basic Syntax

REVOKE [privileges] ON [table/view] FROM [user];

(TO에서 FROM으로 바뀐 것을 주목하세요. 누군가에게는 grant하고, 누군가에게는 revoke합니다.)

Practical Example 1 – Surgical Privilege Removal

사용자 HR5678이 실수를 저질러서 이제 직원 테이블에서 행을 삭제할 수 없게 해야 하지만, 조회와 삽입은 계속 가능하도록 해야 한다고 가정해 봅시다. 우리는 DELETE 권한만 제거합니다:

REVOKE DELETE ON HR05_EMPLOYEE FROM HR5678;

Practical Example 2 – Cutting Everything Off

직원이 부서를 옮기거나 시스템이 침해된 경우, 모든 권한을 한 번에 차단합니다:

REVOKE ALL PRIVILEGES ON HR05_EMPLOYEE FROM HR5678;

The Ripple Effect (CASCADE vs RESTRICT)

WITH GRANT OPTION을 기억하시나요? 기술 리드가 5명의 인턴에게 권한을 부여했는데, 기술 리드의 접근 권한을 회수하면 인턴들의 권한은 어떻게 될까요?

많은 DBMS(예: Oracle)에서는 권한 회수가 기본적으로 CASCADE 효과를 가집니다. “루트”가 권한을 잃으면, 그 권한을 통해 받은 모든 하위도 함께 잃게 됩니다.

Best Practices: The Principle of Least Privilege (PoLP)

실제 환경(그리고 좋은 아키텍처)에서는 “혹시 몰라”라는 이유로 권한을 남발하지 않습니다. 황금률은 최소 권한 원칙(Principle of Least Privilege)입니다: 사용자는 자신의 업무를 수행하는 데 필요한 최소한의 권한만 가져야 하며, 그 외는 없어야 합니다.

  • PowerBI 대시보드를 연결하거나 데이터 사이언스를 위해 데이터를 추출할 경우? DB 연결 사용자에게는 GRANT SELECT만 필요합니다.
  • 웹 애플리케이션이 고객 등록 정보를 업데이트해야 할 경우? GRANT UPDATE를 부여합니다.

이렇게 하면 비밀번호가 유출되거나 코드가 부실하게 배포되었을 때, 피해 범위가 DCL “펜스” 안에 제한됩니다.

0 조회
Back to Blog

관련 글

더 보기 »

SQL 조인 및 윈도우 함수

markdown !Musungu Ruth Ambogohttps://media2.dev.to/dynamic/image/width=50,height=50,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws...

SQL 조인 및 윈도우 함수

SQL 조인 및 윈도우 함수 !tonny otieno https://media2.dev.to/dynamic/image/width=50,height=50,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uplo...