Data Control Language

DCL은 사용자와 역할이 어떤 객체에 접근할 수 있는지 관리한다

DCL은 데이터 값이나 스키마 모양을 직접 바꾸는 언어가 아니라 접근 권한을 부여하고 회수하는 언어입니다. 권한은 사용자에게 직접 줄 수도 있지만, 운영에서는 역할로 묶어 관리하는 일이 많습니다.

User analyst_user

직접 권한을 받거나 역할을 통해 권한을 상속받는다.

Role readonly
SELECT 부여됨
INSERT 부여되지 않음
UPDATE 부여되지 않음
Object products 테이블

DBMS는 요청한 명령과 보유 권한을 비교해 실행 여부를 결정한다.

GRANT 권한 또는 역할을 부여한다

객체 권한을 역할에 주고, 그 역할을 사용자에게 연결할 수 있다.

GRANT SELECT ON products TO readonly;
GRANT readonly TO analyst_user;
REVOKE 부여된 권한을 회수한다

회수 뒤에도 다른 경로로 같은 권한을 받는지 함께 확인해야 한다.

REVOKE SELECT ON products FROM readonly;
대상 사용자, 역할, 객체 권한

누가 어떤 테이블, 뷰, 스키마에 무엇을 할 수 있는지 정한다.

운영 역할 단위 관리가 기본이다

개별 사용자마다 권한을 흩뿌리면 회수와 감사가 어려워진다.

보안 권한 없음은 실행 거부로 이어진다

명령 문법이 맞아도 접근 권한이 없으면 DBMS가 실행을 막는다.