우리는 현재
DB 구현 -> 관리자(오라클 설치, 계정관리, 사용권한)
SQL활용 -> 계정 -> 데이터 작업(DML,DQL)
을 배우고 있다.
이번 게시글에서는 사용자 권한에 대해 기록 하려한다.

오라클에서의 권한은 관리자가 각 계정별로 사용할 수 있는 작업의 범위를 지정해주는것이다. 그리고 오라클에서의 권한은 총 두가지로 나뉘는데
1. 시스템 권한
관리자가 주로 작업하며 계정관리, 생성, 수정, 삭제, 공용동의어 생성 ,,, 등이 있다.
system_privilege_map 테이블 호출시 모든 권한이 나온다. 오른쪽에 한글로 표시한 부분이 우리가 반드시 알아야할 권한 내용이다.
※스압 주의
SQL> select * from system_privilege_map;
PRIVILEGE NAME PROPERTY
---------- ---------------------------------------- ----------
-3 ALTER SYSTEM 0
-4 AUDIT SYSTEM 0
-5 CREATE SESSION 0 ====> 세션이라는 말은 로그인할때 사용하는 권한(connect(롤)와 연관)
-6 ALTER SESSION 0
-7 RESTRICTED SESSION 0
-10 CREATE TABLESPACE 0
-11 ALTER TABLESPACE 0
-12 MANAGE TABLESPACE 0
-13 DROP TABLESPACE 0
-15 UNLIMITED TABLESPACE 0
-20 CREATE USER 0 ====> 계정을 생성하는 권한
PRIVILEGE NAME PROPERTY
---------- ---------------------------------------- ----------
-21 BECOME USER 0
-22 ALTER USER 0 ===> 수정 (락걸기,락풀기,암호새로 부여)
-23 DROP USER 0 ===> 계정삭제
-30 CREATE ROLLBACK SEGMENT 0
-31 ALTER ROLLBACK SEGMENT 0
-32 DROP ROLLBACK SEGMENT 0
-40 CREATE TABLE 0 ===> 테이블 생성 권한 =>Resource롤(폴더)과 연관이 있다.
-41 CREATE ANY TABLE 0
-42 ALTER ANY TABLE 0
-43 BACKUP ANY TABLE 0
-44 DROP ANY TABLE 0
PRIVILEGE NAME PROPERTY
---------- ---------------------------------------- ----------
-45 LOCK ANY TABLE 0
-46 COMMENT ANY TABLE 0
-47 SELECT ANY TABLE 0
-48 INSERT ANY TABLE 0
-49 UPDATE ANY TABLE 0
-50 DELETE ANY TABLE 0
-60 CREATE CLUSTER 0
-61 CREATE ANY CLUSTER 0
-62 ALTER ANY CLUSTER 0
-63 DROP ANY CLUSTER 0
-71 CREATE ANY INDEX 0
PRIVILEGE NAME PROPERTY
---------- ---------------------------------------- ----------
-72 ALTER ANY INDEX 0
-73 DROP ANY INDEX 0
-80 CREATE SYNONYM 0 ==> 동의어 생성
-81 CREATE ANY SYNONYM 0
-82 DROP ANY SYNONYM 0
-83 SYSDBA 0 ==> (관리자 권한) 롤 굉장히 많은 권한이 들어있다.
-84 SYSOPER 0
-85 CREATE PUBLIC SYNONYM 0 ==>공용 동의어
-86 DROP PUBLIC SYNONYM 0
-90 CREATE VIEW 0 ===> Resource 롤에 포함되어있다가 현재는 단독 존재
-91 CREATE ANY VIEW 0
PRIVILEGE NAME PROPERTY
---------- ---------------------------------------- ----------
-92 DROP ANY VIEW 0
-105 CREATE SEQUENCE 0 ==> 시퀀스 생성 권한
-106 CREATE ANY SEQUENCE 0
-107 ALTER ANY SEQUENCE 0
-108 DROP ANY SEQUENCE 0
-109 SELECT ANY SEQUENCE 0
-115 CREATE DATABASE LINK 0
-120 CREATE PUBLIC DATABASE LINK 0
-121 DROP PUBLIC DATABASE LINK 0
-125 CREATE ROLE 0 ==> ** 권한부여의 핵심 포인트 ** 롤을 생성할 수 있는 권한
-126 DROP ANY ROLE 0
PRIVILEGE NAME PROPERTY
---------- ---------------------------------------- ----------
-127 GRANT ANY ROLE 0
-128 ALTER ANY ROLE 0
-130 AUDIT ANY 0
-135 ALTER DATABASE 0
-138 FORCE TRANSACTION 0
-139 FORCE ANY TRANSACTION 0
-140 CREATE PROCEDURE 0
-141 CREATE ANY PROCEDURE 0
-142 ALTER ANY PROCEDURE 0
-143 DROP ANY PROCEDURE 0
-144 EXECUTE ANY PROCEDURE 0
PRIVILEGE NAME PROPERTY
---------- ---------------------------------------- ----------
-151 CREATE TRIGGER 0
-152 CREATE ANY TRIGGER 0
-153 ALTER ANY TRIGGER 0
-154 DROP ANY TRIGGER 0
-160 CREATE PROFILE 0
-161 ALTER PROFILE 0
-162 DROP PROFILE 0
-163 ALTER RESOURCE COST 0
-165 ANALYZE ANY 0
-167 GRANT ANY PRIVILEGE 0
-172 CREATE MATERIALIZED VIEW 0
PRIVILEGE NAME PROPERTY
---------- ---------------------------------------- ----------
-173 CREATE ANY MATERIALIZED VIEW 0
-174 ALTER ANY MATERIALIZED VIEW 0
-175 DROP ANY MATERIALIZED VIEW 0
-177 CREATE ANY DIRECTORY 0
-178 DROP ANY DIRECTORY 0
-180 CREATE TYPE 0
-181 CREATE ANY TYPE 0
-182 ALTER ANY TYPE 0
-183 DROP ANY TYPE 0
-184 EXECUTE ANY TYPE 0
-186 UNDER ANY TYPE 0
PRIVILEGE NAME PROPERTY
---------- ---------------------------------------- ----------
-188 CREATE LIBRARY 0
-189 CREATE ANY LIBRARY 0
-190 ALTER ANY LIBRARY 0
-191 DROP ANY LIBRARY 0
-192 EXECUTE ANY LIBRARY 0
-200 CREATE OPERATOR 0
-201 CREATE ANY OPERATOR 0
-202 ALTER ANY OPERATOR 0
-203 DROP ANY OPERATOR 0
-204 EXECUTE ANY OPERATOR 0
-205 CREATE INDEXTYPE 0
PRIVILEGE NAME PROPERTY
---------- ---------------------------------------- ----------
-206 CREATE ANY INDEXTYPE 0
-207 ALTER ANY INDEXTYPE 0
-208 DROP ANY INDEXTYPE 0
-209 UNDER ANY VIEW 0
-210 QUERY REWRITE 0
-211 GLOBAL QUERY REWRITE 0
-212 EXECUTE ANY INDEXTYPE 0
-213 UNDER ANY TABLE 0
-214 CREATE DIMENSION 0
-215 CREATE ANY DIMENSION 0
-216 ALTER ANY DIMENSION 0
PRIVILEGE NAME PROPERTY
---------- ---------------------------------------- ----------
-217 DROP ANY DIMENSION 0
-218 MANAGE ANY QUEUE 1
-219 ENQUEUE ANY QUEUE 1
-220 DEQUEUE ANY QUEUE 1
-222 CREATE ANY CONTEXT 0
-223 DROP ANY CONTEXT 0
-224 CREATE ANY OUTLINE 0
-225 ALTER ANY OUTLINE 0
-226 DROP ANY OUTLINE 0
-227 ADMINISTER RESOURCE MANAGER 1
-228 ADMINISTER DATABASE TRIGGER 0
PRIVILEGE NAME PROPERTY
---------- ---------------------------------------- ----------
-233 MERGE ANY VIEW 0
-234 ON COMMIT REFRESH 0
-235 EXEMPT ACCESS POLICY 0
-236 RESUMABLE 0
-237 SELECT ANY DICTIONARY 0
-238 DEBUG CONNECT SESSION 0
-241 DEBUG ANY PROCEDURE 0
-243 FLASHBACK ANY TABLE 0
-244 GRANT ANY OBJECT PRIVILEGE 0
-245 CREATE EVALUATION CONTEXT 1
-246 CREATE ANY EVALUATION CONTEXT 1
PRIVILEGE NAME PROPERTY
---------- ---------------------------------------- ----------
-247 ALTER ANY EVALUATION CONTEXT 1
-248 DROP ANY EVALUATION CONTEXT 1
-249 EXECUTE ANY EVALUATION CONTEXT 1
-250 CREATE RULE SET 1
-251 CREATE ANY RULE SET 1
-252 ALTER ANY RULE SET 1
-253 DROP ANY RULE SET 1
-254 EXECUTE ANY RULE SET 1
-255 EXPORT FULL DATABASE 0
-256 IMPORT FULL DATABASE 0
-257 CREATE RULE 1
PRIVILEGE NAME PROPERTY
---------- ---------------------------------------- ----------
-258 CREATE ANY RULE 1
-259 ALTER ANY RULE 1
-260 DROP ANY RULE 1
-261 EXECUTE ANY RULE 1
-262 ANALYZE ANY DICTIONARY 0
-263 ADVISOR 0
-264 CREATE JOB 0
-265 CREATE ANY JOB 0
-266 EXECUTE ANY PROGRAM 0
-267 EXECUTE ANY CLASS 0
-268 MANAGE SCHEDULER 0
PRIVILEGE NAME PROPERTY
---------- ---------------------------------------- ----------
-269 SELECT ANY TRANSACTION 0
-270 DROP ANY SQL PROFILE 0
-271 ALTER ANY SQL PROFILE 0
-272 ADMINISTER SQL TUNING SET 0
-273 ADMINISTER ANY SQL TUNING SET 0
-274 CREATE ANY SQL PROFILE 0
-275 EXEMPT IDENTITY POLICY 0
-276 MANAGE FILE GROUP 1
-277 MANAGE ANY FILE GROUP 1
-278 READ ANY FILE GROUP 1
-279 CHANGE NOTIFICATION 0
PRIVILEGE NAME PROPERTY
---------- ---------------------------------------- ----------
-280 CREATE EXTERNAL JOB 0
-281 CREATE ANY EDITION 0
-282 DROP ANY EDITION 0
-283 ALTER ANY EDITION 0
-284 CREATE ASSEMBLY 0
-285 CREATE ANY ASSEMBLY 0
-286 ALTER ANY ASSEMBLY 0
-287 DROP ANY ASSEMBLY 0
-288 EXECUTE ANY ASSEMBLY 0
-289 EXECUTE ASSEMBLY 0
-290 CREATE MINING MODEL 0
PRIVILEGE NAME PROPERTY
---------- ---------------------------------------- ----------
-291 CREATE ANY MINING MODEL 0
-292 DROP ANY MINING MODEL 0
-293 SELECT ANY MINING MODEL 0
-294 ALTER ANY MINING MODEL 0
-295 COMMENT ANY MINING MODEL 0
-301 CREATE CUBE DIMENSION 0
-302 ALTER ANY CUBE DIMENSION 0
-303 CREATE ANY CUBE DIMENSION 0
-304 DELETE ANY CUBE DIMENSION 0
-305 DROP ANY CUBE DIMENSION 0
-306 INSERT ANY CUBE DIMENSION 0
PRIVILEGE NAME PROPERTY
---------- ---------------------------------------- ----------
-307 SELECT ANY CUBE DIMENSION 0
-308 CREATE CUBE 0
-309 ALTER ANY CUBE 0
-310 CREATE ANY CUBE 0
-311 DROP ANY CUBE 0
-312 SELECT ANY CUBE 0
-313 UPDATE ANY CUBE 0
-314 CREATE MEASURE FOLDER 0
-315 CREATE ANY MEASURE FOLDER 0
-316 DELETE ANY MEASURE FOLDER 0
-317 DROP ANY MEASURE FOLDER 0
PRIVILEGE NAME PROPERTY
---------- ---------------------------------------- ----------
-318 INSERT ANY MEASURE FOLDER 0
-319 CREATE CUBE BUILD PROCESS 0
-320 CREATE ANY CUBE BUILD PROCESS 0
-321 DROP ANY CUBE BUILD PROCESS 0
-322 UPDATE ANY CUBE BUILD PROCESS 0
-326 UPDATE ANY CUBE DIMENSION 0
-327 ADMINISTER SQL MANAGEMENT OBJECT 0
-328 ALTER PUBLIC DATABASE LINK 0
-329 ALTER DATABASE LINK 0
-350 FLASHBACK ARCHIVE ADMINISTER 0
208 개의 행이 선택되었습니다.
2. 객체 권한
객체권한은 각 계정이 관리한다. 즉 소유자 본인이 관리하는 권한이다. 예를들어 테이블, 뷰, 시컨스, 시노님, 인덱스,,, 등이 있다.
여기서
예제 _
계정관리 중 계정 생성을 실행해 보자.
SQL> conn sys/sys12345 as sysdba
연결되었습니다.
우선 시스템 계정으로 로그인을 한다. 그리고 기존에 우리가 알고있는 계정 생성 방식은 아래와 같았다.
create user 계정명 identified by 암호
하지만 이렇게 계정을 생성하게된다면, 계정을 생성하는 사람 또한 생성된 계정의 암호를 알고있기때문에 도용의 위험이 발생한다. 우리는 이러한 도용 방지를 위해 다른 계정 생성 방법을 알아봐야 한다. 즉 계정생성후 암호를 변경할수있도록 배려를 해주는 방식 이라고 보면 된다. 즉 alter 구문을 통해 특정계정에 암호를 변경할 수 있도록 권고 해야한다. 형식은 아래와 같다.
형식_
alter user 수정할계정명 password expire // expire의 의미는 만기가 되었다 사용할수가 없다라는 의미와 비슷하다.
미니예제_
만약 hong/h1234 계정 생성후 로그인을 한뒤 새로운 암호를 부여할수 있게 한다면?
해설_
SQL> create user hong identified by h1234;
사용자가 생성되었습니다.
SQL> alter user hong password expire;
사용자가 변경되었습니다.
SQL> grant connect,resource to hong;
권한이 부여되었습니다.
SQL> conn hong/h1234
ERROR:
ORA-28001: the password has expired
hong에 대한 비밀번호를 변경합니다.
새 비밀번호:
새 비밀번호 다시 입력:
비밀번호가 변경되었습니다.
연결되었습니다.
순서는 이렇다. 계정생성 -> 비밀번호 만기처리 -> 로그인 권한 부여 -> 생성된 계정으로 새로 로그인 -> 새로운 비밀번호 생성
**중요**
그리고 만약, 아래와 같은 에러 메시지가 나온다면, 암호가 만료되었기때문에 발생하는 에러 메세지로 암호를 다시 부여해서 사용하기위한 에러이다.
ERROR:
ORA-28001: the password has expired
**중요**
'Oracle > Privilege' 카테고리의 다른 글
데이터 베이스_ 오라클 [사용자 권한 제어] 계정 삭제 (0) | 2019.07.04 |
---|---|
데이터 베이스_ 오라클 [사용자 권한 제어] 관리자 암호 분실 (0) | 2019.07.04 |
데이터 베이스_ 오라클 [사용자 권한 제어] Lock, Unlock (0) | 2019.07.04 |
댓글