본문 바로가기
database/oracle

🛠️ 26편. 사용자 권한 및 역할(Role) 관리

by 죄니안죄니 2025. 5. 7.

🛠️ 26편. 사용자 권한 및 역할(Role) 관리

Oracle 데이터베이스는 사용자 계정과 권한 체계를 기반으로 접근 통제와 보안을 수행합니다.
이번 글에서는 사용자 계정 생성부터 시스템/객체 권한 부여, 역할(Role) 활용까지 실무 보안 설계에 필요한 내용을 정리합니다.


👤 1. 사용자 계정 생성


-- 사용자 생성
CREATE USER test_user IDENTIFIED BY test123
DEFAULT TABLESPACE users
TEMPORARY TABLESPACE temp
QUOTA 10M ON users;

-- 접속 권한 부여
GRANT CREATE SESSION TO test_user;
  • CREATE SESSION: 로그인 가능하게 해주는 최소 권한
  • QUOTA: 테이블스페이스 사용량 제한

🔑 2. 시스템 권한(System Privileges)

데이터베이스 레벨에서 객체를 생성하거나 변경할 수 있는 권한입니다.


-- 테이블 생성, 뷰 조회 권한 부여
GRANT CREATE TABLE, CREATE VIEW TO test_user;

-- 모든 테이블 조회 권한 (주의!)
GRANT SELECT ANY TABLE TO test_user;

SELECT ANY TABLE은 보안상 주의해야 할 권한입니다.


📄 3. 객체 권한(Object Privileges)

특정 테이블, 뷰, 프로시저에 대해 SELECT, INSERT, EXECUTE 등의 권한을 개별적으로 부여합니다.


-- SCOTT의 EMP 테이블을 조회 가능하도록 권한 부여
GRANT SELECT ON scott.emp TO test_user;

-- 함수 실행 권한 부여
GRANT EXECUTE ON scott.get_salary TO test_user;

📦 4. 역할(Role) 관리

Role은 여러 권한을 하나로 묶어 일괄적으로 부여 및 관리할 수 있게 해줍니다.


-- ① Role 생성
CREATE ROLE hr_readonly;

-- ② 권한 추가
GRANT SELECT ON emp TO hr_readonly;
GRANT SELECT ON dept TO hr_readonly;

-- ③ 사용자에게 Role 부여
GRANT hr_readonly TO test_user;

→ 변경 시 Role만 수정하면 되어 **관리 효율성↑**


⚠️ 5. 권한 회수


-- 시스템 권한 회수
REVOKE CREATE TABLE FROM test_user;

-- 객체 권한 회수
REVOKE SELECT ON emp FROM test_user;

-- 역할 회수
REVOKE hr_readonly FROM test_user;

🧠 실무 팁

  • 운영 계정은 최소 권한 원칙(Least Privilege)으로 구성
  • 객체 권한은 가급적 Role에 묶어서 관리
  • 계정 잠금: ALTER USER test_user ACCOUNT LOCK;
  • 비밀번호 변경: ALTER USER test_user IDENTIFIED BY newpass;

📝 마무리

이번 글에서는 Oracle 사용자 계정 생성, 권한 부여/회수, Role을 이용한 권한 관리 전략을 소개했습니다.
다음 글에서는 Alert Log와 Trace 파일 분석

댓글