수업/└Oracle

[CH15]사용자, 롤, 권한

onlyun 2022. 1. 19. 09:08

 

계정을 생성하거나 권한을 부여하는 권한이

시스템 계정인 경우가 많아

시스템 계정에서 권한을 부여하고 일반 계정(SCOTT)에서 부여된 권한 확인하는 작업.

 

 

 

※ 명령프롬프트(CMD) 접속

오라클 SQL과 다른 세션으로 권한 부여 등의 상태를 확인하려고.

SQLPLUS SYSTEM/ORACLE  --시스템 접속

CONN ORCLSTUDY/ORACLE -- 생성한 계정과 비번

 

※ 새로운 사용자 접속 ※

[ + ] 눌러서 NAME, 사용자 이름, 비밀번호 입력. → 테스트 : 접속 성공

SYSTEM 계정 일반 계정
사용자(USER) 생성, 권한 부여, 삭제
사용자 정의 롤 관리
객체 권한(테이블 조회, 삽입 등)
사전 정의된 롤 관리

 

1. 사용자

데이터베이스 접속해 데이터를 사용/관리하는 계정. ex)SCOTT, system

데이터베이스 스키마 : 데이터를 저장 및 관리하기 위해 정의한 데이터베이스 구조의 범위를 분류

  ex) SCOTT(사용자)가 만든 모든 객체 : 테이블, 뷰, 제약 조건, 인덱스, 시퀀스, 동의어 등등

CREATE USER 사용자이름(필)
IDENTIFIED BY 패스워드(필)
DEFAULT TABLESPACE 테이블 스페이스 이름(선)
TEMPORARY TABLESPACE 테이블 스페이스(그룹) 이름(선)
QUOTA 테이블 스페이스크기 ON 테이블 스페이스 이름(선)
PROFILE 프로파일 이름(선)
PASSWORD EXPIRE (선)
ACCOUNT [LOCK | UNLOCK]

(1) 사용자 생성, 권한 부여, 삭제__SYSTEM 계정에서

-사용자 생성

--SYSTEM 사용자로 접속 후 사용자 생성
CREATE USER ORCLSTUDY
IDENTIFIED BY ORACLE;

-사용자 권한 부여 및 취소

--ORCLSTUDY 사용자에게 권한 부여
GRANT CREATE SESSION TO ORCLSTUDY;

--ORCLSTUDY 사용자에게 부여한 RESOURCE, CREATE TABLE 권한 취소
REVOKE RESOURCE, CREATE TABLE FROM ORCLSTUDY;

-사용자 비밀번호 변경

--오라클 사용자의 비밀번호 변경
ALTER USER ORCLSTUDY
IDENTIFIED BY ORACLE1;

-사용자 삭제 | 사용자와 객체 모두 삭제

--사용자 삭제하기
DROP USER ORCLSTUDY;

--사용자와 객체 모두 삭제
DROP USER ORCLSTUDY CASCADE;

 

 

2. 권한

접속 사용자에 따라 접근할 수 있는 데이터 영역 지정.

-시스템 권한 : 사용자 생성하고 정보 수정 및 삭제, 데이터베이스 접근.

  CREATE USER / ALTER USER / DROP USER
  CREATE SESSION / ALTER SESSION
  CREATE TABLE / CREATE ANY TABLE / ALTER ANY TABLE / DROP ANY TABLE etc

 

(1) 사용자 권한_SYSTEM 계정에서

-권한 부여

GRANT 권한을 부여할 종류 TO [사용자이름 | 롤(ROLE)이름 | PUBLIC] [WITH ADMIN OPTION];

GRANT RESOURCE, CREATE SESSION, CREATE TABLE TO ORCLSTUDY;

 

-확인

명령프롬프터(CMD)나 새로운 사용자로 접속(새로운 사용자 만들어서)해서 확인.

 

-권한 취소 : REVOKE ~ FROM

--REVOKE 시스템 권한 FROM [사용자이름 | 롤(ROLE)이름 | PUBLIC] [WITH ADMIN OPTION];

REVOKE RESOURCE, CREATE TABLE FROM ORCLSTUDY;

 

(2) 객체 권한_SCOTT 계정에서

-객체 권한

    TABLE : ALTER / DELETE / INDEX / INSERT / SELECT / UPDATE
    VIEW : DELETE / INSERT / SELECT / UPDATE

 

-새로운 사용자 접속(ORCLSTUDY/ORACLE) >> 테이블 조회 : 안 됨. 권한이 없어서

-권한 부여_ORCLSTUDY에

GRANT [객체 권한] ON [스키마 객체 이름] TO [WITH GRANT OPTION];

GRANT SELECT ON TEMP TO ORCLSTUDY;  --조회할 권한 : SELECT
GRANT INSERT ON TEMP TO ORCLSTUDY;  --삽입할 권한 : INSERT

 

-다른 사용자의 테이블 등을 조회하기

SELECT * FROM SCOTT.TEMP;

└권한을 부여받은 상태여야 함.

   SCOTT.TEMP 점(.)을 붙여야 SCOTT계정의 TEMP를 조회. 안 붙이면 ORCLSTUDY의 TEMP 조회

 

-ORCLSTUDY 계정에서 변경한 사항을 커밋(COMMIT)해줘야

  SCOTT 계정에서 변경사항을 확인할 수 있음. 세션이 다르기 때문에.

 

-권한 취소

REVOKE 부여한 권한 중 취소할 것들 FROM [사용자이름 | 롤(ROLE)이름 | PUBLIC] [WITH ADMIN OPTION];

REVOKE RESOURCE, CREATE TABLE FROM ORCLSTUDY;
			--RESOURCE, CREATE TABLE 권한 취소

 

3. 롤 관리

여러 종류의 권한을 묶어놓은 그룹

(1) 사전 정의된 롤_SCOTT 계정에서

사전 정의된 롤 : CONNECT, RESOURCE, DBA

CREATE TRIGGER, CTREATE WEQUENCE, CREATE TYPE, CREATE PROCEDURE,

CREATE CLUSTER, CREATE OPERRATOR, CREATE INDEXTYPE, CREATE TABLE

 

(2) 사용자 정의 롤_SYSTEM 계정에서

필요에 의해 직접 권한을 포함시켜 생성한 롤

-CREATE ROLE  :  롤 생성

CREATE ROLE ROLESTUDY;

-GRANT  :  생성한 롤에 권한 포함시키기 → 권한이 포함된 롤을 특정 사용자에게 부여

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

GRANT ROLESTUDY TO ORCLSTUDY;

 

-부여된 권한 확인

SELECT * FROM USER_SYS_PRIVS;
SELECT * FROM USER_ROLE_PRIVS;

-REVOKE : 권한 취소

REVOKE ROLESTUDY FROM ORCLSTUDY;

 

-부여된 롤 삭제

DROP ROLE ROLESTUDY;