데이터베이스 연구실.log

사용자, 스키마, 인증

비밀번호, OS와 패스워드 파일 인증의 차이, 관리자 역할과 스키마 전용 계정

OS 인증패스워드 파일REMOTE_LOGIN_PASSWORDFILESYSBACKUPNO AUTHENTICATIONOPS$

#핵심 요약

일반 사용자는 주로 비밀번호 인증을, 관리자는 OS 인증이나 패스워드 파일 인증을 씀

OS 인증은 OS의 dba 그룹 소속으로 sqlplus / as sysdba처럼 비밀번호 없이 관리자로 접속하는 방식임

패스워드 파일은 원격 SYSDBA 같은 관리자 인증에 씀
사용 여부는 REMOTE_LOGIN_PASSWORDFILE이 정하며 기본값은 EXCLUSIVE임

CREATE USER ... NO AUTHENTICATION으로 로그인할 수 없고 객체만 소유하는 스키마 전용 계정을 만듦

#개념과 동작 원리

#인증 방식

방식 설명
비밀번호 인증 사용자명과 비밀번호로 인증
OS 인증 OS 그룹 권한으로 관리자 인증
패스워드 파일 인증 원격 SYSDBA 등 관리자 인증
강력한 인증 Kerberos, SSL, 디렉터리 인증 등

#REMOTE_LOGIN_PASSWORDFILE

기본값은 EXCLUSIVE이고 ALTER SYSTEM으로 바꿀 수 없음(Modifiable: No)

값 의미
EXCLUSIVE 같은 DB의 인스턴스(또는 같은 클러스터의 ASM 인스턴스)가 쓰는 패스워드 파일
SYS와 SYS 아닌 사용자를 담을 수 있음
SHARED 여러 DB가 패스워드 파일을 함께 씀
파일 수정이 막혀 비밀번호 변경이나 관리자 권한 부여, 회수가 ORA-01999로 실패할 수 있음
NONE 패스워드 파일을 무시
관리자는 OS 인증으로만 접속

EXCLUSIVE나 SHARED라도 패스워드 파일이 없으면 NONE과 같이 동작함
NONE에서 EXCLUSIVE나 SHARED로 바꿀 때는 패스워드 파일과 데이터 사전의 비밀번호를 맞춰야 함

#관리자 계정

계정 역할
SYS 슈퍼유저
데이터 딕셔너리와 AWR을 소유하며 인스턴스 시작과 종료 등에 사용
SYSTEM 그 외의 관리용 테이블과 뷰를 소유
SYSBACKUP RMAN 백업, 복구 작업 지원
SYSDG Data Guard 관리 작업 지원
SYSKM TDE 키와 Wallet, Keystore 관리 작업 지원
SYSRAC RAC 관리 작업 지원
SYSMAN Enterprise Manager 관리 작업 지원
DBSNMP Enterprise Manager의 Management Agent가 DB를 모니터링, 관리할 때 사용

#필수 명령어 또는 SQL

#패스워드 파일과 인증 방식 확인

SQL*Plus (SYSDBA)조회만 함
SELECT * FROM v$pwfile_users;
SHOW PARAMETER remote_login_passwordfile
SELECT SYS_CONTEXT('USERENV', 'AUTHENTICATION_METHOD') FROM dual;

결과 해석:

수업 자료에 적힌 Linux의 패스워드 파일 위치는 $ORACLE_HOME/dbs/orapw<ORACLE_SID>임
V$PWFILE_USERS는 패스워드 파일에 등록된 관리자 계정을 보여 줌

#관리자 인증 막기

개념도개념 도식조회만 함
-- 파라미터: 원격 SYSDBA 패스워드 파일 인증 차단
REMOTE_LOGIN_PASSWORDFILE=NONE

-- $ORACLE_HOME/network/admin/sqlnet.ora: 로컬 OS 인증 차단
SQLNET.AUTHENTICATION_SERVICES=(NONE)

결과 해석:

설명: 첫 줄은 원격 SYSDBA 패스워드 파일 인증을, 둘째 줄은 sqlplus / as sysdba를 막음
REMOTE_LOGIN_PASSWORDFILE은 정적 파라미터라 SPFILE에 바꾸고 재기동해야 함
둘 다 막으면 관리자 접속 경로가 없어질 수 있으므로 실습 환경에서만 시험함

#OS 인증 일반 사용자

SQL*Plus (SYSDBA)조회만 함
SHOW PARAMETER os_authent_prefix
SQL*Plus (SYSDBA)객체 또는 설정을 변경함
CREATE USER ops$king IDENTIFIED EXTERNALLY;
GRANT CREATE SESSION TO ops$king;
셸 (OS 계정 king)조회만 함
sqlplus /

결과 해석:

OS_AUTHENT_PREFIX의 기본값은 OPS$이며, Oracle은 이 접두사를 OS 계정 이름 앞에 붙여 DB 사용자와 비교함(Oracle Database Reference 19c, OS_AUTHENT_PREFIX)
그래서 OS 계정 king은 DB 사용자 OPS$KING으로 접속함

#관리 권한 계정 사용 (SYSBACKUP, SYSDG)

SQL*Plus (SYSDBA, CDB$ROOT)객체 또는 설정을 변경함
ALTER USER sysbackup IDENTIFIED BY <PASSWORD> ACCOUNT UNLOCK;
GRANT sysbackup TO sysbackup;
GRANT sysbackup TO sysbackup CONTAINER=ALL;
셸 (oracle)조회만 함
rman target '"sysbackup/<PASSWORD>@localhost:<PORT>/<SERVICE_NAME> as sysbackup"'
sqlplus sysdg/<PASSWORD>@//localhost:<PORT>/<SERVICE_NAME> as sysdg

결과 해석:

실습에서는 RMAN 접속 뒤 report schema와 backup database를 실행했음
backup database는 백업 파일을 만드는 작업임

#스키마 전용 계정

SQL*Plus (SYSDBA)객체 또는 설정을 변경함
CREATE USER <USERNAME> NO AUTHENTICATION;
ALTER USER <USERNAME> IDENTIFIED BY <PASSWORD>;
ALTER USER <USERNAME> NO AUTHENTICATION;

결과 해석:

순서대로 생성, 비밀번호를 줘서 로그인 가능하게 해제, 다시 스키마 전용으로 되돌리기임

#구문과 옵션 설명

구문 의미 바꿀 입력값
IDENTIFIED EXTERNALLY OS 인증 사용자 OPS$ + OS 계정 이름
NO AUTHENTICATION 로그인 불가, 객체 소유만 계정 이름
GRANT <관리 권한> TO <사용자> CONTAINER=ALL 모든 컨테이너에 관리 권한 부여 권한, 사용자
SYS_CONTEXT('USERENV','AUTHENTICATION_METHOD') 현재 세션의 인증 방식

#사용 조건과 주의사항

수업 자료는 보안 사고 예방을 위해 비밀번호를 정기적으로 바꾸고, 특수 문자($, _), 숫자, 대소문자를 섞으라고 권함
비밀번호를 잊으면 DB에서 알아낼 방법이 없고 ALTER USER ... IDENTIFIED BY로 새 비밀번호를 정하는 수밖에 없음

로그인 실패 잠금은 Role과 Profile에서 다룸

명령행에 비밀번호를 쓰면 셸 히스토리와 ps에 남음

SEO_HKabsumveritas@gmail.comBuilt with Claude Code & Codex

마지막 갱신 개인 학습 기록이며 운영 환경 적용 전 공식 문서 확인 필요

두 글자 이상 입력, 위아래 화살표로 이동하고 Enter로 열기