1월1일에 포스팅을.....
가끔 프로젝트를 들어가다 보면 Password를 오픈하지 않는 사이트들이 있다..
흠.. 하드코딩된 쉘 같은거 몇개만 열거나 cat * |grep 하면 되는걸 꼭 숨긴다..
보안서약을 했기때문에 아는척을 하기도 그렇고 뭐 어쩌겠나...
상황은
A라는 유저가 Application을 돌리기 위한 계정이었고
B라는 유저를 신규생성해서 DBA권한을 줬지만
A유저의 테이블을 조회하기 위해서는 테이블마다 A.이라는 스키마 정의가 필요하다
끄으... 소스의 모든 쿼리를 수정할수도 없고.. 시노님을 만들자니 어마어마한 테이블량;;
A라는 유저의 패스워드를 절대 받을수는 없다
그리하여 찾은것이 'grant connect through'
한번보자
SQL> create user app_user identified by app_user; 사용자가 생성되었습니다. SQL> create user dba_user identified by dba_user; 사용자가 생성되었습니다. SQL> grant connect , resource to app_user; 권한이 부여되었습니다. SQL> grant connect , resource to dba_user; 권한이 부여되었습니다. SQL> alter user app_user grant connect through dba_user; 사용자가 변경되었습니다. |
app_user 와 dba_user를 생성하고
alter user app_user grant connect trough dba_user;로
dba_user가 app_user인것처럼 로그인이 가능하도록 설정이 된다
이런 경우에는 패스워드가 없어도 dba_user가 app_user로 접속처리가 가능하다
SQL> conn app_user/app_user 연결되었습니다. SQL> create table test_user (username varchar(50), usernum int); 테이블이 생성되었습니다. SQL> insert into test_user values ('sean','1'); 1 개의 행이 만들어졌습니다. SQL> select * from test_user; USERNAME USERNUM ------------------------------ ---------- sean 1 SQL> show user USER은 "APP_USER"입니다 SQL> commit; 커밋이 완료되었습니다. |
app_user에 테이블을 만들고 상큼한 데이터도 넣어줍니다
$sqlplus dba_user[app_user]/dba_user SQL*Plus: Release 11.2.0.3.0 Production on 목 1월 1 23:22:13 2015 Copyright (c) 1982, 2011, Oracle. All rights reserved. 다음에 접속됨: Oracle Database 11g 11.2.0.3.0 - 64bit Production SQL> select * from test_user; USERNAME USERNUM ------------------------------ ---------- sean 1 SQL> show user USER은 "APP_USER"입니다 |
상큼하게 조회가 가능하고
dba_user[app_user]로 로그인을 했기 떄문에 show user시에 app_user로 나온다
good?
'Technical posts > Oracle' 카테고리의 다른 글
ORACLE 리스너 종속성 설정으로 인스턴스 뜨고 난 다음에 띄우기 (0) | 2015.01.19 |
---|---|
오라클 테이블 축소 / oracle table shrink / alter table table_name shrink (0) | 2015.01.08 |
Oracle LISTENER Dynamic_registration / 리스너에 불필요한 인스턴스 등록방지 (0) | 2015.01.07 |
ORACLE vs MS-SQL vs MariaDB // 오라클, MS-SQL, Mysql MariaDB 비교 (6) | 2015.01.06 |
오라클 UNDO 재생성 / UNDO 다른위치로 이동 (0) | 2015.01.05 |