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가 컨트롤 하지 못하게 막을 수 있습니다.