User 별로 SQL*PLUS 자체에 별도의 제약을 해주지 않으면 보안상 문제가 될 수도 있습니다.


한 예로 클라이언트를 통하여 터미널로 접속을 하여 HOST(!) 명령어를 통하여 OS 로 접속이 가능합니다.


   


User 별로 각 명령어를 수행 할 수 없게끔 제약을 둘 수가 있는데 아래와 같은 Table을 이용하여 제약을 줄 수가 있습니다.


   



   


— SQL*PLUS 와 SQL,PL/SQL 을 아래의 명령어들을 컨트롤 못 하게 할 수 있습니다.



   



   


해당 PRODUCT_USER_PROFILE은 SYSTEM User 로 컨트롤이 가능합니다.


SCOTT User 의 HOST명령어를 DISABLE 시켜보도록 하겠습니다.


   



  • SCOTT User 의 Host 명령어 사용 가능 상태 확인.

SQL> conn scott/tiger


Connected.


SQL> host


[oracle@rac1 ~]$ exit


SQL> !


[oracle@rac1 ~]$


   



  • SYSTEM User 로 접속하여 Insert

SQL> conn system/oracle


Connected.


SQL> INSERT INTO PRODUCT_USER_PROFILE VALUES (‘SQL*Plus’, ‘SCOTT’, ‘HOST’, NULL, NULL, ‘DISABLED’, NULL, NULL);


1 row created.


SQL> select * from PRODUCT_USER_PROFILE;


PRODUCT USERID ATTRIBUTE SCOPE NUMERIC_VALUE CHAR_VALUE DATE_VALU LONG_VALUE


———– ——— ————— ——– ——————- ————— ————- —————


SQL*Plus SCOTT HOST                                 DISABLED


   



  • SCOTT User 로 접속해서 Host 명령어 수행

SQL> conn scott/tiger


Connected.


SQL> host


SP2-0544: Command “host” disabled in Product User Profile


SQL> !


SP2-0544: Command “! (HOST)” disabled in Product User Profile


   


위와 같이 PRODUCT_USER_PROFILE 를 통해 Host 이외에 select,alter 등을 User가 컨트롤 하지 못하게 막을 수 있습니다.

By haisins

오라클 DBA 박용석 입니다. haisins@gmail.com 으로 문의 주세요.

답글 남기기

이메일 주소를 발행하지 않을 것입니다. 필수 항목은 *(으)로 표시합니다