#title 관리자인증 [[TableOfContents]] ==== 인증 방법의 선택 ==== * 운영체제 인증 * 암호파일의 사용 원격 데이터베이스이건 지역 데이터베이스이건 보안 접속을 가지고 있으거나 운영체제 인증을 사용하면 운영체제 인증을 사용하고, 그렇지 않으면 암호파일을 사용한다. ==== 운영체제 인증의 사용 ==== 절차는 다음과 같다. 1. 운영체제가 사용자를 인증하도록 설정 1. 초기화 매개변수 REMOTE_LOGIN_PASSWORD=NONE으로 설정 1. 다음 명령중의 하나로 접속한다. CONNECT / AS SYSOPER CONNECT / AS SYSDBA 주의 할 것은 SYSOPER, SYSDBA로 접속할 때SYSOPER, SYSDBA 시스템 권한이 있어야 하는 것은 아니다. 다만 서버는 운영체제 레벨에서 데이터베이스 관리자에게 적합한 OSOPER나 OSDBA 롤이 부여됬는지 확인한다. OSOPER와 OSDBA의 권한 차이는 OSOPER가 ADMIN OPTION 과 OSOPER 롤, 모든 시스템권한을 가진다는 것이다. OSOPER, OSDBA는 운영체제 만이 사용자에게 부여할 수 있다. GRANT명령으로 위의 두 롤을 부여하거나 취소 또는 삭제 할 수 없다. 일단 접속시에 OSDBA의 활성화를 시도하고 실패하면 OSOPER를 시도한다. 두 시도가 실패로 끝나면 접속을 실패이다. 다음은 윈2000에서 ORA_DBA그룹이 존재하는 모습이다. attachment:auth01.jpg 그리고 REMOTE_LOGIN_PASSWORDFILE은 나의 경우 지금 EXCLUSIVE로 되어 있다. 이것을 NONE으로 바꾸어 운영체제 인증을 하도록 한다. ==== 암호파일의 사용 ==== 절차는 다음과 같다. 1. ORAPWD 유틸리티를 사용하여 암호파일을 만든다. 1. 초기화 매개변수는REMOTE_LOGIN_PASSWORDFILE=EXCLUSIVE로 설정한다. 1. 데이터베이스 관리 작업을 수행할 각 사용자에게 적합한 권한을 추가하려면 SQL을 사용하여 암호 파일에 사용자를 추가한다. GRANT SYSDBA TO scott GRATN SYSOPER TO scott 1. 접속시는 다음과 같은 명령으로 접속한다. CONNECT scott/tiger@192.168.0.101 AS SYSDBA ==== 암호파일의 관리 ==== 다음은 ORAPWD 유틸리티를 실행했을때의 모습이다. attachment:auth02.jpg 다음은 그 예제이다. 5명의 관리자를 두는 것이다. attachment:auth03.jpg 이런식으로 만들게 되면 패스워드 파일의 경로가 C:\으로 만들어진다.이 경로는 보안상 중요하며, 관리자의 권한이 주어진 사람들에게 필히 협조를 구해야한다.보안레벨을 강화하려면 암호파일 작성 즉시 REMOTE_LOGIN_PASSWORD=EXCLUSIVE 로 설정해야한다. 이밖에도 REMOTE_LOGIN_PASSWORD 파라미터의 옵션은 SHARD가 있는데 이것은 여러 데이터베이스에서 사용하는 것으로, 인식되는 사용자는 SYS와 INTERNAL뿐이다. 또, 사용자를 추가할 수도 없다. 암호파일을 작성하여 새 사용자를 추가할때는 SYSDBA, INTERNAL 시스템 권한의 사용자만이 추가 를 할수 있다. 즉, 이는 시스템 권한을 부여할수 있다는 소리이다. GRANT SYSDBA TO scott; 중요한 것은 사용자들이 OS 인증 조건을 만족하는 경우 암호 파일의 사용은 OS 에서 인증한 사용자들의 접속을 막을 수 없다. 이와 관련된 시스템 카달로그는 V$PWFILE_USERS 뷰다. 다음은 그 예이다. {{{#!geshi sql SQL> desc v$pwfile_users 이름 널? 유형 ----------------------------------------- -------- ---------------------------- USERNAME VARCHAR2(30) SYSDBA VARCHAR2(5) SYSOPER VARCHAR2(5) SQL> select * from v$pwfile_users; USERNAME SYSDB SYSOP ------------------------------ ----- ----- INTERNAL TRUE TRUE SYS TRUE TRUE }}} 다음은GRANT SYSDBA TO scott; 문장을 수행한 후의 뷰에 추가된 모습니다. {{{#!geshi sql SQL> connect internal 연결되었습니다. SQL> grant sysdba to scott; 권한이 부여되었습니다. SQL> select * from v$pwfile_users; SQL> select * from v$pwfile_users; USERNAME SYSDB SYSOP ------------------------------ ----- ----- INTERNAL TRUE TRUE SYS TRUE TRUE SCOTT TRUE FALSE }}} 운영체제의 사용자명으로 데이터베이스를 사용할 수 있게 해보자. 일반적인 사용자이다. 먼저 오라클 파라미터 파일에 다음을 추가해 준다. OS_AUTHENT_PREFIX = 'OPS$' 데이터베이스를 종료후 다시 시작한다. {{{#!geshi sql SQL> connect internal 연결되었습니다. SQL> shutdown 데이터베이스가 닫혔습니다. 데이터베이스가 마운트 해제되었습니다. ORACLE 인스턴스가 종료되었습니다. SQL> startup ORACLE 인스턴스가 시작되었습니다. 시스템 글로벌 영역 237008140 바이트 합계 Fixed Size 70924 바이트 Variable Size 79572992 바이트 Database Buffers 157286400 바이트 Redo Buffers 77824 바이트 데이터베이스가 마운트되었습니다. 데이터베이스가 열려졌습니다. SQL> create user OPS$ORCL 2 identified by externally 3 default tablespace users 4 ; 사용자가 생성되었습니다. SQL> grant connect, resource to OPS$ORCL; --ORCL은 데이터베이스 이름이다. 권한이 부여되었습니다. SQL> connect OPS$ORCL/externally 연결되었습니다. }}}