본문 바로가기
Database/Oracle

[ORACLE] GRANT() 권한 부여 문법과 실무 예제 완벽 정리

by Papa Martino V 2025. 6. 9.
728x90

오라클 GRANT() 권한 부여 문법과 실무 예제 완벽 정리
[Oracle] GRANT

 

1. GRANT란 무엇인가?

GRANT는 Oracle Database에서 특정 사용자에게 데이터베이스 리소스에 대한 권한(Privilege)을 부여하는 명령어입니다. 권한은 테이블에 대한 SELECT, INSERT와 같은 DML 권한이나 사용자 생성과 같은 시스템 권한으로 나뉩니다.

2. GRANT의 기본 구조

GRANT 권한명 [, ...] TO 사용자명 [, ...];

여러 권한과 여러 사용자에게 동시에 부여할 수 있습니다.

3. 객체 권한(OBJECT PRIVILEGES)

  • SELECT
  • INSERT
  • UPDATE
  • DELETE
  • REFERENCES
  • INDEX

예제: 테이블에 SELECT 권한 부여

GRANT SELECT ON hr.employees TO dev_user;

dev_userhr.employees 테이블에 대해 SELECT만 수행할 수 있게 됩니다.

4. 시스템 권한(SYSTEM PRIVILEGES)

  • CREATE SESSION
  • CREATE TABLE
  • CREATE USER
  • DROP USER
  • ALTER SYSTEM
  • CREATE VIEW

예제: 사용자에게 세션 연결 권한 부여

GRANT CREATE SESSION TO dev_user;

해당 사용자는 데이터베이스에 접속할 수 있게 됩니다.

5. WITH ADMIN OPTION과 WITH GRANT OPTION

옵션 설명 적용 대상
WITH GRANT OPTION 부여받은 객체 권한을 다른 사용자에게 다시 부여할 수 있음 객체 권한
WITH ADMIN OPTION 부여받은 시스템 권한이나 ROLE을 다른 사용자에게 부여 가능 시스템 권한, ROLE

예제: WITH GRANT OPTION 사용

GRANT SELECT ON hr.employees TO dev_user WITH GRANT OPTION;

이제 dev_user는 다른 사용자에게 SELECT 권한을 줄 수 있습니다.

6. ROLE을 통한 권한 부여

GRANT connect, resource TO dev_user;

Oracle이 미리 정의해 둔 역할(Role)을 통해 여러 권한을 한 번에 부여할 수 있습니다.

7. 권한 확인 방법

  • DBA_SYS_PRIVS: 시스템 권한
  • DBA_TAB_PRIVS: 객체 권한
  • DBA_ROLE_PRIVS: 역할(Role) 권한

예제: 특정 사용자 권한 확인

SELECT * FROM dba_sys_privs WHERE grantee = 'DEV_USER';

8. 권한 회수(REVOKE)

REVOKE SELECT ON hr.employees FROM dev_user;
REVOKE CREATE SESSION FROM dev_user;

GRANT와 반대로, 권한을 회수할 수 있습니다.

9. GRANT 관련 실무 예제

-- 새로운 사용자에게 기본 권한 부여
CREATE USER report_user IDENTIFIED BY report123;
GRANT CONNECT TO report_user;
GRANT SELECT ON sales_data TO report_user;

-- 관리 권한 포함 부여
GRANT CREATE USER TO admin_user WITH ADMIN OPTION;

10. 실무 팁 및 권한 부여 전략

  • 직접 GRANT보다 ROLE을 활용하면 유지보수가 쉬움
  • 불필요한 WITH GRANT OPTION 사용은 보안 리스크
  • REVOKE 후에도 권한 전파가 남을 수 있으므로 정기 점검 필요
  • 사용자별 최소 권한 원칙 적용

11. 사용자 권한 감사(AUDIT)

보안이 중요한 환경에서는 권한 부여 내역과 사용 로그를 감시하는 것이 중요합니다.

AUDIT GRANT;
SELECT * FROM DBA_AUDIT_TRAIL;

12. 결론

Oracle의 GRANT 문은 데이터베이스 보안과 사용자 관리의 핵심 도구입니다. 부여하는 권한의 범위를 명확히 하고, ROLE과 옵션을 효과적으로 조합하여 안전하고 효율적인 권한 관리를 실현할 수 있습니다. 무엇보다 '최소 권한 원칙(Principle of Least Privilege)'을 기반으로 계획적인 권한 설계가 필요합니다.

출처

728x90