본문 바로가기
SQL/개념

11. 사용자, 권한, 롤 관리

by Merware 2023. 5. 9.

01. 사용자 (USER)

  • 사용자: 데이터베이스에 접속하여 데이터를 사용/관리하는 계정.
  • 데이터베이스 스키마: 데이터를 저장 및 관리하기 위해 정의된 데이터베이스 구조의 범위. 사용자는 하나의 스키마를 소유합니다.
  • 권한 (Privileges): 접속 사용자에 따라 접근할 수 있는 데이터 영역을 지정. 권한에는 시스템 권한과 객체 권한이 있음.
  • GRANT: 권한을 사용자에게 부여하는 명령어.
  • REVOKE: 사용자에게 부여된 권한을 회수하는 명령어.
  • 시스템 권한: 사용자 생성, 정보 수정, 데이터베이스 접근 등과 관련된 권한.
  • 객체 권한: 특정 사용자가 생성한 객체(테이블, 뷰 등)와 관련된 권한.

1. 시스템 권한과 객체 권한의 차이

  • 시스템 권한: 사용자가 데이터베이스 시스템 내에서 객체를 생성, 삭제, 수정할 수 있는 권한.
    • 예: CREATE USER, CREATE TABLE, CREATE VIEW 등.
  • 객체 권한: 특정 객체(테이블, 뷰 등)에 대해 데이터를 조회, 수정, 삭제할 수 있는 권한.
    • 예: SELECT, INSERT, UPDATE, DELETE 등.

2. 객체 권한 분류

객체 유형 권한 설명

TABLE ALTER 테이블 구조 수정
  DELETE 테이블 데이터 삭제
  INDEX 테이블 인덱스 생성
  INSERT 테이블에 데이터 추가
  REFERENCES 테이블 외래 키 참조
  SELECT 테이블 데이터 조회
  UPDATE 테이블 데이터 수정
VIEW DELETE 뷰에서 데이터 삭제
  INSERT 뷰에 데이터 추가
  REFERENCES 뷰 외래 키 참조
  SELECT 뷰에서 데이터 조회
  UPDATE 뷰에서 데이터 수정
SEQUENCE ALTER 시퀀스 수정
  SELECT 시퀀스 값 조회
PROCEDURE EXECUTE 프로시저 실행
FUNCTION EXECUTE 함수 실행
PACKAGE EXECUTE 패키지 실행

02. 권한 관리 (Privileges Management)

1. 사용자 생성 및 권한 부여

-- 사용자 생성
CREATE USER ORCLSTUDY IDENTIFIED BY ORACLE;

-- 사용자에게 세션 생성 권한 부여
GRANT CREATE SESSION TO ORCLSTUDY;
  • CREATE USER: 새로운 사용자 계정을 생성.
  • CREATE SESSION: 사용자가 데이터베이스에 로그인할 수 있도록 권한 부여.

2. 사용자 비밀번호 변경

-- 사용자 비밀번호 변경
ALTER USER ORCLSTUDY IDENTIFIED BY ORCL;

3. 사용자 삭제

-- 사용자 삭제
DROP USER ORCLSTUDY;

4. 사용자 권한 부여 예시

-- ORCLSTUDY 사용자에게 다양한 권한 부여
GRANT RESOURCE, CREATE SESSION, CREATE TABLE TO ORCLSTUDY;

03. 객체 권한 부여 및 취소

1. 테이블 생성 및 객체 권한 부여

-- SCOTT 사용자로 로그인하여 TEMP 테이블 생성
CREATE TABLE TEMP (
   COL1 VARCHAR(20),
   COL2 VARCHAR(20)
);

-- ORCLSTUDY 사용자에게 TEMP 테이블의 SELECT 및 INSERT 권한 부여
GRANT SELECT, INSERT ON TEMP TO ORCLSTUDY;
  • GRANT SELECT, INSERT: ORCLSTUDY 사용자에게 TEMP 테이블에 대한 조회 및 데이터 삽입 권한 부여.

2. 권한 철회 (REVOKE)

-- SCOTT 사용자로 로그인하여 ORCLSTUDY의 권한 취소
REVOKE SELECT, INSERT ON TEMP FROM ORCLSTUDY;
  • REVOKE: ORCLSTUDY 사용자에게 부여된 권한을 회수.

3. 권한 철회 후 사용 시도

-- ORCLSTUDY로 로그인하여 TEMP 테이블 접근 시도 (실패)
CONN ORCLSTUDY/ORACLE;

SELECT * FROM SCOTT.TEMP;  -- 권한 부족으로 실패

04. 롤 (Role)

롤이 없는 경우 롤이 있는 경우

 

  • 롤 (ROLE): 여러 개의 권한을 묶어서 관리할 수 있는 기능. 한 번에 여러 권한을 사용자에게 부여할 수 있음.
    • 사전 정의된 롤:
      • CONNECT: 기본적인 데이터베이스 접속 및 객체 생성 권한.
      • RESOURCE: 더 많은 객체 생성 권한 (테이블, 시퀀스, 인덱스 등).
      • DBA: 데이터베이스 전체 관리 권한을 포함한 최고 권한.

1. 롤 생성 및 권한 부여

-- SYSTEM 계정으로 로그인 후 롤 생성 및 권한 부여
CREATE ROLE ROLESTUDY;

GRANT CONNECT, RESOURCE, CREATE VIEW, CREATE SYNONYM TO ROLESTUDY;

2. 롤을 사용자에게 부여

-- ORCLSTUDY 사용자에게 ROLESTUDY 롤 부여
GRANT ROLESTUDY TO ORCLSTUDY;

3. 사용자 롤 및 권한 확인

-- ORCLSTUDY 사용자로 로그인하여 부여된 롤 및 권한 확인
CONN ORCLSTUDY/ORACLE;

-- 사용자에게 부여된 시스템 권한 확인
SELECT * FROM USER_SYS_PRIVS;

-- 사용자에게 부여된 롤 확인
SELECT * FROM USER_ROLE_PRIVS;

요약

  • 사용자: 데이터베이스에 접속하여 데이터를 관리하는 계정.
  • 권한: 시스템 권한과 객체 권한으로 나뉘며, GRANT로 부여, REVOKE로 취소.
  • 롤 (Role): 여러 권한을 묶어 사용자가 한 번에 권한을 받도록 관리하는 기능.

 

'SQL > 개념' 카테고리의 다른 글

10. 제약 조건  (0) 2023.05.09
09. 객체 종류  (0) 2023.05.09
08. 데이터 정의어(DDL)  (0) 2023.05.09
07. 트랜잭션 제어와 세션(TCL)  (0) 2023.05.09
06. 데이터 조작어(DML)  (0) 2023.05.08