TECH
QUESTION
자주하는 질문답변 입니다.
Oracle
작성자 | 유건데이타 | 등록일 | 2015-08-14 |
제목 | PRODUCT_USER_PROFILE의 기능 (특정 SQL문 수행 못하도록 하는 방법) | ||
---|---|---|---|
PRODUCT_USER_PROFILE의 기능 (특정 SQL문 수행 못하도록 하는 방법)
================================================================ Purpose ------- product_user_profile 의 기능과 사용방법에 대해 이해하도록 하자. Explanation ----------- system user가 아닌 일반 user로 SQL*Plus에 접속 시에 다음과 같은 warning message가 발생할 경우가 종종 있다. Error accessing PRODUCT_USER_PROFILE Warning: Product user profile information not loaded! You may need to run PUPBLD.SQL as SYSTEM 이 때 취하는 조치사항은 ?/sqlplus/admin/pupbld.sql을 system user로 접속하여 수행하는 것이다. 아래에서는 pupbld.sql의 수행에 의해서 생성되는 object들의 기능은 무엇인지를 간략하게 살펴본다. * PRODUCT_USER_PROFILE 1. 개요 grant, revoke SQL문을 이용한 user-level의 보안에 추가하여, Oracle product들은 PRODUCT_USER_PROFILE table을 이용하여 보안 관리를 할 수 있다. 예를 들어 SQL*Plus는 user가 login하는 시점에 PRODUCT_USER_ PROFILE을 읽어서 해당 session이 특정 명령문을 수행할 수 없도록 제한을 가할 수 있다.(RDBMS가 아닌 SQL*Plus가 제한을 가한다는 점에 유의) 2. Table 생성 unix의 경우 보통 ?/sqlplus/pupbld.sql을 system user로 수행함 으로써 생성된다. ** system user는 PRODUCT_USER_PROFILE에 의한 제한을 받지 않기 때문에 login시 이 table에 access를 하지 않는다. 반면 일반 user가 login시에는 PRODUCT_USER_PROFILE에 access를 한다. 이러한 이유로 PRODUCT_USER_PROFILE이 생성되어 있지 않으면, system user로 login할 때는 문제가 없으나 일반 user로 login할 때는 warning message가 발생하게 된다. 3. Table 구조 product : product name 예) SQL*Plus userid : 특정 command의 사용을 제한하고자 하는 user의 username. wildcard(%)사용가능 attribute : 제한하고자 하는 command, 특정 role의 사용을 제한하려면 ROLES로 set scope : SQL*Plus에서는 사용하지 않음 numeric_value : SQL*Plus에서는 사용하지 않음 char_value : 제한하려는 것이 command일 경우는 DISABLED로 set, role일 경우는 role name을 set date_value : SQL*Plus에서는 사용하지 않음 long_value : SQL*Plus에서는 사용하지 않음 Example ------- NUMERIC CHAR DATE PRODUCT USERID ATTRIBUTE SCOPE VALUE VALUE VALUE -------------------------------------------------------------- SQL*Plus SCOTT HOST DISABLED SQL*Plus % INSERT DISABLED SQL*Plus SCOTT ROLES ROLE1 위의 예에 의하면 scott user는 host라는 sqlplus 명령어를 사용할 수 없으며, role1 이라는 role을 사용할 수 없다. 또한, system user를 제외한 모든 user들은 insert SQL문을 사용할 수 없다. * 모든 유저에게 truncate 를 못하게 하는 방법 insert into PRODUCT_USER_PROFILE(product,userid,attribute,char_value) values('SQL*Plus','%','TRUNCATE','DISABLED'); 위의 결과 SQL> truncate table table_name; invalid command: truncate PRODUCT_USER_PROFILE 는 PRODUCT_PROFILE 의 synonym 입니다. Reference Document ------------------ SQL*Plus User's Guide and Reference |
Comment | |||
---|---|---|---|
등록된 코멘트가 없습니다. |