본문 바로가기

IT관련

오라클DB 패스워드 없이 로그인하는 방법 (전자지갑 wallet 이용)

Oracle DB에 접속할 때, ID/PW를 입력하지 않고 DB에 접속할 수 있도록 설정할 수 있습니다.

이걸 OS 인증이라고도 하는데, 전자지갑(Wallet)을 만들어서 거기에 패스워드를 집어넣고 이것을 이용해서 DB에 로그인하는 방식입니다.

 

먼저, DB에 SQL*Net 접속을 위한 tns 명이 필요합니다.

저는 아래와 같이 "ORA12R2" 라는 이름의 tns 명을 사용할 겁니다.

 

 

이제 전자지갑을 만들어보겠습니다.

전자지갑은 mkstore 커맨드를 이용해서 생성/변경/삭제 등의 관리작업을 할 수 있습니다.

 



$ mkstore -wrl . -create
   ---> 전자지갑 생성 (전자지갑용 패스워드 입력 필요)
   ---> . 은 현재위치에 지갑생성. 다른 위치로 지정하려면 . 대신 디렉토리 Full Path 를 넣어주면 됨.

$ mkstore -wrl . -createCredential ORA12R2 scott tiger
   ---> 전자지갑에 엔트리 추가
   ---> "ORA12R2" 는 tnsnames.ora 에 등록되어 있는 tns 명.


 

위와 같이 해서 전자지갑(wallet)을 만들면 아래와 같이 4개의 파일이 생성됩니다.

 

 

이 전자지갑을 이용해서 DB에 접속하려면 sqlnet.ora 에 이 전자지갑의 위치가 등록되어 있어야 합니다.

sqlnet.ora 파일은 보통 $ORACLE_HOME/network/admin 디렉토리에 있고, 없으면 vi 등으로 새로 만들어 주면 됩니다.

 

 

앞에서 저는 현재위치(.)에 전자지갑을 만들었었는데, 그 위치가 /home/ora12r2 입니다. 그래서 위에서처럼 DIRECTORY 항목에 그 위치를 적어줬습니다.

 

 

이제, 생성된 전자지갑을 통해 DB에 접속해 보겠습니다.

 

 

잘 접속되네요.  원래는 sqlplus scott/tiger@ORA12R2 와 같이 @앞에 ID/PW를 써줘야 하는데, 그런거 없이 그냥 "/" 만 입력해서 접속이 되었습니다.

 

 

여기에서는 DB서버내에 로컬환경에서 접속을 해봤는데, 물론 원격시스템 또는 원격PC에서도 똑같이 이런식으로 접속할 수 있습니다.

 

이때는

     1) 앞에서 만들어진 wallet 관련 파일들 4개를 PC로 복사해주고,

     2) wallet 파일들의 위치를 sqlnet.ora에 등록해주고,

     3) wallet 에서 사용하는 tns명을 tnsnames.ora 에 등록해주면 됩니다.

 

 

FTP 등을 이용해서 DB서버에서 생성된 4개의 wallet 관련 파일들을 클라이언트 PC 로 복사해왔습니다.

 

 

클라이언트 PC 의 sqlnet.ora 파일 내용 ..

 

 

클라이언트 PC 의 tnsnames.ora 파일 내용 ..

 

 

윈도우즈의 커맨드창을 열어서 서버에서처럼 "sqlplus /@ORA12R2" 로 접속해봅니다.

 

 

역시 ID/PW 입력없이 정상적으로 잘 접속이 되는 것을 확인할 수 있습니다.

oracle login without password wallet