데이터베이스 권한 관리 완벽 정리
데이터베이스(DB) 시스템에서 권한 관리는 매우 중요한 역할을 합니다. 사용자마다 적절한 권한을 부여하여 데이터의 무단 접근을 방지하고, 데이터 무결성과 보안을 유지하는 것이 목적입니다.
1. 권한 부여 (GRANT)
권한 부여는 특정 객체(테이블, 뷰, 등)에 대해 사용자가 수행할 수 있는 작업을 지정하는 명령어입니다. 기본 구문은 다음과 같습니다:
GRANT 권한 ON 객체 TO 사용자 [WITH GRANT OPTION];
부여 가능한 권한 종류:
SELECT
: 데이터 조회 권한INSERT
: 데이터 삽입 권한UPDATE
: 데이터 수정 권한DELETE
: 데이터 삭제 권한REFERENCES
: 외래키 참조 권한
특별 키워드
PUBLIC
: 모든 사용자에게 동일한 권한을 부여WITH GRANT OPTION
: 해당 권한을 받은 사용자가 다시 다른 사용자에게 권한을 부여할 수 있음
예시
GRANT SELECT ON 고객 TO HONG;
GRANT INSERT, DELETE ON 고객 TO PUBLIC;
GRANT UPDATE(등급, 적립금) ON 고객 TO PUBLIC;
GRANT SELECT ON 고객 TO LEE WITH GRANT OPTION;
GRANT CREATE TABLE TO Song;
GRANT CREATE VIEW TO Shin;
위 예시는 각각 고객
테이블에 대해 다양한 권한을 특정 사용자 또는 전체 사용자에게 부여한 모습입니다.
2. 권한 취소 (REVOKE)
부여한 권한을 취소할 때는 REVOKE
명령어를 사용합니다. 구문은 다음과 같습니다:
REVOKE 권한 ON 객체 FROM 사용자 [CASCADE | RESTRICT];
옵션 설명:
CASCADE
: 해당 권한을 받은 사용자가 다시 부여한 권한들도 모두 연쇄적으로 취소RESTRICT
: 다른 사용자에게 부여된 권한이 있으면 취소하지 않고 제한
예시
REVOKE SELECT ON 고객 FROM Hong CASCADE;
REVOKE SELECT ON 고객 FROM Hong RESTRICT;
REVOKE CREATE TABLE FROM Hong;
위 예시처럼 특정 사용자의 권한을 취소할 때 연쇄적 영향을 선택할 수 있습니다.
3. 역할(Role) 관리
여러 권한을 묶어 관리할 때 역할(Role)이라는 개념을 사용합니다. 역할은 권한의 집합으로, 여러 사용자에게 동일한 권한 세트를 효율적으로 부여하거나 관리할 수 있습니다.
주요 명령어
CREATE ROLE 롤이름;
: 새로운 역할 생성GRANT 권한 ON 객체 TO 롤이름;
: 역할에 권한 부여GRANT 롤이름 TO 사용자;
: 역할을 사용자에게 부여REVOKE 롤이름 FROM 사용자;
: 역할 권한 회수DROP ROLE 롤이름;
: 역할 삭제
예시
CREATE ROLE role_1;
GRANT SELECT, INSERT, DELETE ON 고객 TO role_1;
GRANT role_1 TO Hong;
REVOKE role_1 FROM Hong;
DROP ROLE role_1;
위와 같이 역할을 생성하고 권한을 할당한 뒤, 역할을 사용자에게 부여 및 취소할 수 있습니다.
TIP: 역할 관리를 통해 권한 부여와 회수를 일괄적으로 쉽게 관리할 수 있어, 다수 사용자 권한 관리에 매우 효율적입니다.
마무리
권한 관리는 데이터베이스 보안의 기본입니다. 적절한 권한 부여와 엄격한 권한 취소를 통해 데이터 무결성과 보안을 지키는 것은 개발자 및 DBA의 핵심 책임 중 하나입니다. 또한 역할을 활용한 권한 집합 관리는 대규모 시스템 운영 시 관리 효율성을 극대화합니다.
반응형
'공부 > 데이터베이스' 카테고리의 다른 글
[데이터베이스] DB 회복과 병행 제어 (Recovery and Concurrency Control) (0) | 2025.06.15 |
---|---|
[데이터베이스] DB 정규화 (Normalization) (0) | 2025.06.15 |
[데이터베이스] DB 데이터베이스 설계 및 인덱싱 완벽 정리 (2) | 2025.06.15 |
[데이터베이스] DB DML 심화 – 집계, 조인, 서브쿼리, 뷰 (0) | 2025.06.15 |
[데이터베이스] DB DML 기본 – INSERT & SELECT (0) | 2025.06.15 |