본문 바로가기
■Development■/《Database》

[DB] ORACLE DB 사용자 계정 패스워드 없애는 방법

by 은스타 2020. 4. 8.
반응형

Oracle DB 사용자 계정 패스워드 제거 및 인증 방식 변경 완벽 가이드

안녕하세요

이번 포스팅에서는 Oracle 데이터베이스 사용자 계정의 패스워드를 제거하거나 대체 인증 방식으로 변경하는 다양한 방법에 대해 상세히 알아보겠습니다. 패스워드 인증 없이 데이터베이스에 접근해야 하는 특수한 상황이나 보안 정책에 따라 대체 인증 방식을 적용해야 할 때 참고하시기 바랍니다.


목차

  1. 패스워드 인증 방식 변경의 개요
  2. 패스워드 없는 인증 방식의 종류
  3. 운영체제 인증(OS Authentication) 설정 방법
  4. 외부 인증(External Authentication) 구성하기
  5. 전역 인증(Global Authentication) 설정
  6. 프록시 사용자 인증 구성
  7. Oracle Internet Directory(OID) 인증
  8. Kerberos 인증 구성
  9. Oracle 버전별 인증 방식 차이점
  10. 보안 고려사항 및 모범 사례
  11. 자주 발생하는 오류와 해결 방법
  12. 자주 묻는 질문

 

#1. 패스워드 인증 방식 변경의 개요

Oracle 데이터베이스에서는 기본적으로 사용자 계정에 패스워드를 부여하여 인증을 수행합니다. 그러나 특정 상황에서는 패스워드 인증을 제거하거나 다른 인증 방식으로 대체해야 할 필요가 있습니다.

패스워드 인증을 제거하거나 변경하는 일반적인 이유:

  • 애플리케이션 서버와 데이터베이스 간 연결 보안 강화
  • 중앙 집중식 사용자 관리 구현
  • 서비스 계정의 자동화된 접근 관리
  • 운영체제 수준의 보안 정책과 통합
  • 엔터프라이즈 싱글 사인온(SSO) 시스템 구현

주의사항:
패스워드 인증을 제거하는 것은 보안에 영향을 미칠 수 있으므로, 반드시 적절한 대체 인증 방식이 구현되어야 합니다. 특히 SYS나 SYSTEM과 같은 관리자 계정에서는 패스워드를 완전히 제거하지 않는 것이 좋습니다.

 

#2. 패스워드 없는 인증 방식의 종류

Oracle은 패스워드 기반 인증 외에도 다양한 인증 방식을 지원합니다:

  1. 운영체제 인증(OS Authentication): 운영체제 계정을 통해 데이터베이스 인증
  2. 외부 인증(External Authentication): 외부 서비스를 통한 인증
  3. 전역 인증(Global Authentication): LDAP, Active Directory 등을 통한 인증
  4. 프록시 인증(Proxy Authentication): 다른 사용자를 대신하여 연결
  5. Oracle Internet Directory(OID) 인증: Oracle의 LDAP 디렉토리 서비스 사용
  6. Kerberos 인증: 네트워크 인증 프로토콜 사용

각 방식의 특징과 구현 방법을 자세히 살펴보겠습니다.

 

#3. 운영체제 인증(OS Authentication) 설정 방법

운영체제 인증을 사용하면 데이터베이스 패스워드 없이 운영체제 계정을 통해 Oracle에 접속할 수 있습니다.

3.1 초기 설정

먼저 Oracle 초기화 파라미터 파일(init.ora 또는 spfile)에서 OS 인증을 활성화합니다:

-- 현재 설정 확인
SHOW PARAMETER os_authent_prefix;

-- 설정 변경 (기본값은 'ops$')
ALTER SYSTEM SET os_authent_prefix='ops$' SCOPE=SPFILE;

3.2 OS 인증 사용자 생성

-- SYSDBA 또는 적절한 권한을 가진 계정으로 로그인
CONNECT sys/password AS SYSDBA

-- 운영체제 사용자에 해당하는 데이터베이스 사용자 생성
CREATE USER ops$username IDENTIFIED EXTERNALLY;

-- 필요한 권한 부여
GRANT CONNECTRESOURCE TO ops$username;

username은 실제 운영체제 사용자 이름으로 대체합니다.

3.3 OS 인증으로 접속하기

# Unix/Linux
sqlplus /

# 또는 명시적으로 지정
sqlplus /nolog
CONNECT /@database_name

Windows에서는:

sqlplus /nolog
CONNECT /@database_name

3.4 기존 사용자를 OS 인증으로 변환

-- 기존 사용자의 인증 방식을 외부 인증으로 변경
ALTER USER username IDENTIFIED EXTERNALLY;

이 명령을 실행하면 해당 사용자의 패스워드가 제거되고 OS 인증으로 변경됩니다.

 

#4. 외부 인증(External Authentication) 구성하기

외부 인증은 운영체제 인증의 확장 개념으로, Oracle 외부의 서비스를 통해 사용자를 인증합니다.

4.1 외부 인증 사용자 생성

-- 외부 인증 사용자 생성
CREATE USER username IDENTIFIED EXTERNALLY;

-- 필요한 권한 부여
GRANT CONNECT, RESOURCE TO username;

4.2 외부 인증 설정 파일 구성

Oracle Net Services 구성 파일(sqlnet.ora)을 수정하여 외부 인증을 설정합니다:

# $ORACLE_HOME/network/admin/sqlnet.ora 파일에 추가
SQLNET.AUTHENTICATION_SERVICES = (NONE, BEQ, TCPS, NTS)

4.3 외부 인증으로 접속

# Unix/Linux
sqlplus /@service_name

 

#5. 전역 인증(Global Authentication) 설정

Enterprise Directory Service(LDAP, Active Directory 등)를 통해 인증할 수 있습니다.

5.1 전역 인증 사용자 생성

-- 전역 인증 사용자 생성 (디렉토리 서비스의 DN 사용)
CREATE USER username IDENTIFIED GLOBALLY AS 'CN=username,OU=Users,DC=example,DC=com';

5.2 기존 사용자를 전역 인증으로 변환

-- 기존 사용자를 전역 인증으로 변경
ALTER USER username IDENTIFIED GLOBALLY AS 'CN=username,OU=Users,DC=example,DC=com';

5.3 Oracle Net 구성

sqlnet.ora 파일에 다음 설정을 추가합니다:

SQLNET.AUTHENTICATION_SERVICES = (LDAP)
NAMES.DIRECTORY_PATH = (LDAP, TNSNAMES)

ldap.ora 파일도 적절히 구성해야 합니다:

DIRECTORY_SERVERS = (ldap_server:389:636)
DEFAULT_ADMIN_CONTEXT = "dc=example,dc=com"
DIRECTORY_SERVER_TYPE = OID

 

#6. 프록시 사용자 인증 구성

프록시 인증을 사용하면 중간 계층 애플리케이션이 최종 사용자를 대신하여 데이터베이스에 접속할 수 있습니다.

6.1 프록시 권한 부여

-- 특정 사용자에게 프록시 권한 부여
ALTER USER target_user GRANT CONNECT THROUGH proxy_user;

-- 모든 사용자에게 프록시 권한 부여
ALTER USER target_user GRANT CONNECT THROUGH proxy_user WITH ROLE ALL EXCEPT DBA;

6.2 프록시 인증으로 접속

-- 프록시 사용자를 통해 접속
CONNECT proxy_user[target_user]@database

Java 애플리케이션에서는:

Properties props = new Properties();
props.put(OracleConnection.PROXY_USER_NAME, "target_user");
String url = "jdbc:oracle:thin:@database";
Connection conn = DriverManager.getConnection(url, "proxy_user", "proxy_password");

 

#7. Oracle Internet Directory(OID) 인증

Oracle Internet Directory를 사용하여 중앙 집중식 인증을 구현할 수 있습니다.

7.1 OID 설정

먼저 Oracle Internet Directory가 설치되고 구성되어 있어야 합니다.

7.2 데이터베이스 구성

-- Enterprise User Security 활성화
ALTER SYSTEM SET ldap_directory_access = 'SSL';

7.3 OID 사용자 생성 및 매핑

Oracle Enterprise Manager나 Oracle Directory Manager를 사용하여 OID에 사용자를 생성하고 데이터베이스 스키마에 매핑합니다.

7.4 OID 인증으로 접속

sqlplus username@database

 

#8. Kerberos 인증 구성

Kerberos는 강력한 네트워크 인증 프로토콜로, 패스워드 없이 안전한 인증을 제공합니다.

8.1 Kerberos 사전 요구사항

  • Kerberos 서버(KDC) 설정
  • Oracle 클라이언트 및 서버에 Kerberos 클라이언트 설치

8.2 Oracle 구성

sqlnet.ora 파일을 수정합니다:

SQLNET.AUTHENTICATION_SERVICES = (KERBEROS5)
SQLNET.KERBEROS5_CONF = /etc/krb5.conf
SQLNET.KERBEROS5_KEYTAB = /etc/krb5.keytab
SQLNET.KERBEROS5_REALMS = /etc/krb5.realms

8.3 Kerberos 인증 사용자 생성

-- Kerberos 주체로 사용자 생성
CREATE USER username IDENTIFIED EXTERNALLY AS 'krbprincipal@REALM.COM';

8.4 기존 사용자를 Kerberos 인증으로 변환

-- 기존 사용자를 Kerberos 인증으로 변경
ALTER USER username IDENTIFIED EXTERNALLY AS 'krbprincipal@REALM.COM';

8.5 Kerberos 인증으로 접속

# 먼저 Kerberos 티켓 획득
kinit username

# 패스워드 없이 접속
sqlplus /@database_service

 

#9. Oracle 버전별 인증 방식 차이점

Oracle 버전에 따라 인증 방식 지원 및 구현 방법에 차이가 있습니다.

9.1 Oracle 11g

  • 기본 인증 옵션 지원
  • 암호 기반 인증에 SHA-1 해시 사용

9.2 Oracle 12c

  • 통합 감사(Unified Auditing) 도입
  • 암호 기반 인증에 SHA-2 해시 지원
  • 멀티테넌트 환경에서의 공통 사용자 인증 지원

9.3 Oracle 19c

  • 암호 검증 함수 기능 강화
  • 향상된 Kerberos 및 LDAP 통합
  • 사용자 마이그레이션 시 인증 방식 간 변환 기능 강화

9.4 Oracle 21c

  • 보안 강화를 위한 추가 인증 옵션
  • 클라우드 환경에서의 통합 인증 지원 확대
  • Centrally Managed Users(CMU) 기능 강화

 

#10. 보안 고려사항 및 모범 사례

패스워드 없는 인증을 구현할 때 고려해야 할 보안 사항:

10.1 일반 보안 고려사항

  • 관리자 계정은 항상 패스워드 유지: SYS, SYSTEM 등의 관리자 계정은 항상 패스워드를 유지하세요.
  • 최소 권한 원칙 적용: 사용자에게 필요한 최소한의 권한만 부여하세요.
  • 정기적인 감사: 인증 방식과 관계없이 정기적인 보안 감사를 수행하세요.

10.2 OS 인증 보안

-- OS 인증 접근 범위를 특정 사용자로 제한
CREATE PROFILE os_auth_profile LIMIT OS_AUTHENT_PREFIX 'ops$domain\\';
ALTER USER ops$username PROFILE os_auth_profile;

10.3 데이터베이스 설정 보안

-- 외부 인증 서비스 제한
ALTER SYSTEM SET remote_os_authent=FALSE SCOPE=SPFILE;

-- 운영체제 역할 사용 제한
ALTER SYSTEM SET os_roles=FALSE SCOPE=SPFILE;

 

#11. 자주 발생하는 오류와 해결 방법

11.1 ORA-01031: 권한이 불충분합니다

원인: OS 인증 사용자에게 적절한 권한이 없음
해결 방법:

-- 필요한 권한 부여
GRANT CONNECT, RESOURCE TO ops$username;

11.2 ORA-01017: 사용자명/비밀번호가 부적합, 로그온할 수 없습니다

원인: OS 인증 프리픽스 불일치 또는 외부 인증 구성 오류
해결 방법:

-- OS 인증 프리픽스 확인
SHOW PARAMETER os_authent_prefix;

-- OS 인증 사용자 이름 확인
SELECT username FROM dba_users WHERE authentication_type = 'EXTERNAL';

11.3 ORA-28030: 서버에 서버 인증이 필요합니다

원인: 서버 인증 구성 오류
해결 방법: sqlnet.ora 파일에서 인증 서비스 설정 확인 및 수정

11.4 ORA-28221: KERBEROS5 어댑터가 초기화되지 않았습니다

원인: Kerberos 구성 파일 경로 오류 또는 Kerberos 클라이언트 문제
해결 방법: sqlnet.ora 파일의 Kerberos 구성 경로 확인 및 Kerberos 티켓 상태 확인

 

#12. 자주 묻는 질문

Q: Oracle 계정의 패스워드를 완전히 제거할 수 있나요?

A: Oracle 계정의 패스워드를 직접적으로 '제거'하는 것은 불가능합니다. 대신 패스워드 인증을 외부 인증(OS, LDAP, Kerberos 등)으로 대체할 수 있습니다. 이렇게 하면 패스워드 없이 로그인이 가능합니다.

Q: 기존 패스워드 기반 계정을 OS 인증으로 변경하면 데이터에 영향이 있나요?

A: 아니요, 인증 방식 변경은 사용자의 데이터나 스키마 객체에 영향을 미치지 않습니다. 단, 해당 사용자의 접속 방식만 변경됩니다.

Q: 운영체제 인증과 외부 인증의 차이점은 무엇인가요?

A: 운영체제 인증은 외부 인증의 한 유형입니다. 운영체제 인증은 특별히 로컬 운영체제의 사용자 계정을 이용하는 반면, 외부 인증은 LDAP, Kerberos 등 다양한 외부 서비스를 통한 인증을 포함합니다.

Q: Oracle Cloud Database에서도 패스워드 없는 인증을 구성할 수 있나요?

A: Oracle Cloud Database에서도 일부 외부 인증 방식을 지원합니다. 그러나 클라우드 환경의 특성상 일부 제한이 있을 수 있으므로, Oracle Cloud 문서를 참조하세요.

Q: 어떤 인증 방식이 가장 안전한가요?

A: 보안 요구사항에 따라 다릅니다. 일반적으로 Kerberos나 인증서 기반 인증이 가장 강력한 보안을 제공합니다. 하지만 구현 복잡성과 운영 환경을 고려하여 선택해야 합니다.


마무리

Oracle 데이터베이스에서 사용자 계정의 패스워드를 제거하고 대체 인증 방식을 구성하는 다양한 방법을 살펴보았습니다. 운영체제 인증, 외부 인증, 전역 인증, Kerberos 인증 등 각 방식은 서로 다른 장점과 사용 시나리오를 가지고 있습니다.

패스워드 없는 인증은 보안을 강화하고 관리를 단순화할 수 있지만, 올바르게 구성하지 않으면 보안 위험을 초래할 수 있습니다. 따라서 각 인증 방식의 장단점을 이해하고, 조직의 보안 정책과 요구사항에 맞는 방식을 선택하는 것이 중요합니다.

특히 관리자 계정과 중요한 시스템 계정에는 적절한 보안 조치를 유지하고, 정기적인 감사와 모니터링을 통해 인증 시스템의 무결성을 확보하시기 바랍니다.

긴 글 읽어주셔서 감사합니다.

끝.

반응형