본문 바로가기
Database

오라클 데이터베이스 권한 관리: GRANT와 REVOKE의 활용

by 굿센스굿 2024. 12. 3.
반응형


데이터베이스는 보안과 효율적인 관리가 필수적이며, 사용자 권한 관리가 그 중심에 있습니다. GRANT REVOKE는 사용자가 데이터베이스 자원에 접근할 수 있는 권한을 부여하거나 취소하는 명령입니다. 이 글에서는 GRANT와 REVOKE의 개념, 활용 방법, 그리고 실무에서의 주의사항을 살펴보겠습니다.


1. GRANT: 권한 부여

GRANT 명령은 특정 사용자나 역할(Role)에게 데이터베이스 객체에 대한 접근 권한을 부여하는 데 사용됩니다.

구문:

GRANT 권한목록
ON 객체명
TO 사용자목록
[WITH GRANT OPTION];
  • 권한목록: 부여할 권한(SELECT, INSERT, UPDATE 등)을 지정합니다.
  • 객체명: 권한을 적용할 데이터베이스 객체(테이블, 뷰 등)입니다.
  • 사용자목록: 권한을 받을 사용자 또는 역할(Role)입니다.
  • WITH GRANT OPTION: 해당 사용자가 다른 사용자에게 권한을 다시 부여할 수 있게 허용합니다.

[예시 1] SELECT 권한 부여

GRANT SELECT
ON employees
TO user1;

employees 테이블에 대해 user1에게 SELECT 권한을 부여합니다.

[예시 2] 다중 권한 부여

GRANT SELECT, INSERT, UPDATE
ON orders
TO user2, user3;

orders 테이블에 대해 user2와 user3에게 SELECT, INSERT, UPDATE 권한을 부여합니다.

[예시 3] WITH GRANT OPTION 사용

GRANT SELECT
ON products
TO manager
WITH GRANT OPTION;

manager 사용자는 products 테이블의 SELECT 권한을 다른 사용자에게도 부여할 수 있습니다.


2. REVOKE: 권한 취소

REVOKE 명령은 특정 사용자나 역할에게 부여된 권한을 취소합니다.

구문:

REVOKE 권한목록
ON 객체명
FROM 사용자목록;
  • 권한목록: 취소할 권한(SELECT, INSERT, UPDATE 등)을 지정합니다.
  • 객체명: 권한이 적용된 데이터베이스 객체입니다.
  • 사용자목록: 권한이 취소될 사용자 또는 역할(Role)입니다.

[예시 1] SELECT 권한 취소

REVOKE SELECT
ON employees
FROM user1;

employees 테이블에 대해 user1의 SELECT 권한을 취소합니다.

[예시 2] 다중 권한 취소

REVOKE INSERT, UPDATE
ON orders
FROM user2, user3;

orders 테이블에서 user2와 user3의 INSERT, UPDATE 권한을 취소합니다.

[예시 3] GRANT OPTION으로 부여된 권한 취소

REVOKE GRANT OPTION FOR SELECT
ON products
FROM manager;

manager 사용자가 다른 사용자에게 SELECT 권한을 부여할 수 있는 권한을 취소합니다.


3. 주요 권한 목록

다양한 권한은 데이터베이스 객체와 작업에 따라 다릅니다. 주요 권한은 다음과 같습니다:

권한 설명

SELECT 테이블, 뷰 등의 데이터를 조회할 수 있음
INSERT 테이블에 데이터를 삽입할 수 있음
UPDATE 테이블 데이터를 수정할 수 있음
DELETE 테이블 데이터를 삭제할 수 있음
EXECUTE 저장 프로시저나 함수 등을 실행할 수 있음
ALTER 테이블, 뷰 등의 구조를 변경할 수 있음
DROP 테이블, 뷰, 스키마 등을 삭제할 수 있음
ALL PRIVILEGES 모든 권한을 부여하거나 취소함

4. 실무에서의 권한 관리 전략

1) 최소 권한 원칙 (Principle of Least Privilege)

사용자에게 필요한 최소한의 권한만 부여해야 보안을 강화하고 실수로 인한 문제를 방지할 수 있습니다.

[예시] 최소 권한 부여

운영팀에게는 SELECT 권한만 부여:

GRANT SELECT
ON sales_data
TO operations_team;

2) 역할(Role)을 활용한 관리

여러 사용자에게 동일한 권한을 부여할 경우, 개별 사용자가 아닌 **역할(Role)**을 생성하여 관리합니다.

[예시] 역할 생성 및 권한 부여

  1. 역할 생성:
    CREATE ROLE reporting_role;
    
  2. 역할에 권한 부여:
    GRANT SELECT
    ON sales_data
    TO reporting_role;
    
  3. 역할을 사용자에게 할당:
    GRANT reporting_role TO user1, user2;
    

3) 트랜잭션을 사용한 권한 변경

대규모 권한 변경 작업 시 **트랜잭션(TRANSACTION)**을 사용하여 실수를 방지합니다.

BEGIN TRANSACTION;
GRANT SELECT, INSERT
ON orders
TO user1;
ROLLBACK; -- 문제 발생 시 롤백
COMMIT;   -- 작업 확정

5. 권한 관리 시 주의사항

  1. WITH GRANT OPTION 남용 금지
    권한을 부여받은 사용자가 추가로 권한을 남용할 가능성이 있습니다. 신뢰할 수 있는 사용자에게만 부여하세요.
  2. REVOKE의 연쇄 효과 확인
    REVOKE 명령은 권한을 취소할 때 연관된 권한 체계에 영향을 미칠 수 있습니다. 이를 고려하고 신중히 실행하세요.
  3. 권한 변경 기록 관리
    권한 부여와 취소는 데이터베이스 보안에 중요한 이벤트이므로 로그를 남기거나 관리 도구를 활용해 기록을 유지합니다.

결론

GRANT REVOKE는 데이터베이스 보안의 핵심 요소입니다. 권한 관리 전략을 통해 보안을 강화하고 데이터 접근을 효율적으로 제어할 수 있습니다. 최소 권한 원칙과 역할(Role)을 활용한 관리로 사용자 및 데이터베이스의 안전성을 높여보세요.

반응형