DB 계정 관리

데이터베이스 계정 관리에 대한 위험 분석, 위험 영향, 해결 방안을 설명합니다.

개발 및 운영 시스템 분리 사용

위험 분석

개발 시스템과 운영 시스템을 하드웨어적으로 분리하여 Link가 설정되지 않아야 하며, 운영 시스템의 데이터를 개발 시스템으로 이전할 때 중요 데이터의 삭제 같은 통제와 검증 절차를 거쳐야 합니다.

위험 영향

운영 시스템의 중요 데이터가 개발 시스템으로 누출될 가능성이 있습니다.

해결 방안

개발 시스템과 운영 시스템의 분리를 회사의 정책으로 정의하고 개발자와 운영자를 원칙적으로 분리합니다. 만약 분리할 수 없다면 개발자가 운영 시스템에 접근할 경우 통제 절차를 거치도록 해야 합니다.

DBA 권한 제한

위험 분석

인가되지 않은 사용자가 DBA 권한으로 DBMS를 오용 및 남용할 수 있습니다.

위험 영향

DBA 권한을 사용하여 시스템 장애 및 데이터베이스를 변조할 가능성이 있습니다.

해결 방안

DBA 권한이 있는 계정의 사용자와 필요성을 확인합니다. 만약 불필요하게 DBA 권한이 허용된 계정이 있다면 계정을 없애거나 DBA 권한을 제거하고 데이터 누출 및 유실을 막기 위해 보안 정책을 수립합니다.

다음은 DBA 권한 제거 방법입니다.

SQL> REVOKE DBA FROM <username>;

디폴트 계정 사용

위험 분석

잘 알려진 디폴트 계정과 디폴트 패스워드를 이용하여 데이터베이스에 접근할 수 있습니다.

위험 영향

데이터베이스 접근 또는 상위 권한을 획득하여 데이터를 열람, 수정, 삭제할 수 있습니다.

해결 방안

  • OS, DB 레벨에서 원천적으로 접근을 제한하기 위해 사용하지 않는 애플리케이션 계정을 삭제합니다.

  • 계정은 다른 용도로 사용하고 특정 데이터베이스의 접근만 제한해야 하는 경우 SUPER USER 또는 설치 계정 의 GROUP에서 삭제합니다.

디폴트 DB 패스워드 사용

위험 분석

디폴트 생성 DB 사용자(SYSCAT, SYSGIS, OUTLN, TIBERO, TIBERO1)의 디폴트 패스워드를 이용하여 인가되 지 않은 사용자가 DBMS에 접근할 수 있습니다.

위험 영향

데이터베이스 접근 및 상위 권한을 획득하여 데이터를 열람, 수정, 삭제할 수 있습니다.

해결 방안

사용하지 않는 디폴트 DB 계정은 삭제하거나 Lock 시키고, 사용하는 계정이라면 디폴트 패스워드를 수정합니다.

계정 Lock

SQL> ALTER USER <username> ACCOUNT LOCK;

패스워드 변경

SQL> ALTER USER <username> IDENTIFIED BY ‘<new_password>’;

무제한 로그인 시도 차단

위험 분석

무제한으로 로그인 시도가 가능한 경우 Brute Force 공격으로 무제한 로그인 시도가 발생할 수 있습니다.

위험 영향

Brute Force 공격의 피해가 발생할 수 있습니다.

해결 방안

로그인 실패 횟수를 설정하는 FAILED_LOGIN_ATTEMPTS 항목을 설정하여 일정 횟수로 로그인을 실패할 경우 계정이 Lock 되게 합니다.

profile은 사용자 패스워드 관리 정책을 다양하게 생성하고 각각의 사용자에게 특정 정책을 사용하도록 지정 함으로써 사용자별로 그룹화된 패스워드 정책을 관리할 수 있는 기능을 제공합니다.

profile 생성

SQL> CREATE PROFILE <profile_name>
    LIMIT PASSWORD_VERIFY_FUNCTION verify_function 
    FAILED_LOGIN_ATTEMPTS <횟수>;

profile 변경

SQL> ALTER PROFILE <profile_name> LIMIT FAILED_LOGIN_ATTEMPTS <횟수>;

profile 할당

SQL> ALTER USER <username> PROFILE <profile_name>;

패스워드 Lock 기간 설정 점검

위험 분석

악의적인 사용자의 Brute Force 공격으로 무제한 로그인 시도가 발생할 수 있습니다.

위험 영향

Brute Force 공격의 피해가 발생할 수 있습니다.

해결 방안

패스워드 Lock 기간을 설정하는 PASSWORD_LOCK_TIME 항목을 설정하여 일정 시간동안 로그인을 할 수 없도록 계정이 Lock 되게 합니다. (기본값 : UNLIMITED, 권장값 : 1 또는 2 또는 24)

profile 변경

SQL> ALTER PROFILE <profile_name> LIMIT PASSWORD_LOCK_TIME <시간>;

profile 할당

SQL> ALTER USER <username> PROFILE <profile_name>;

패스워드 주기적 변경

위험 분석

DBA_USERS 계정에 대해 주기적으로 패스워드를 변경하지 않고 취약한 패스워드로 설정할 경우 인증되지 않은 사용자에게 DBA 또는 USER 권한을 줄 수 있습니다.

위험 영향

권한이 노출되어 남용될 수 있습니다.

해결 방안

profile의 PASSWORD_LIFE_TIME 항목 설정값을 변경합니다. (기본값 : UNLIMITED, 권장값 : 30 ~ 90days)

profile 변경

SQL> ALTER PROFILE <profile_name> LIMIT PASSWORD_LIFE_TIME <일수>;

profile 할당

SQL> ALTER USER <username> PROFILE <profile_name>;

DB 계정에 대한 패스워드 재사용 기간 설정 점검

위험 분석

DBA_USERS 계정의 패스워드를 변경할 때 패스워드 재사용 기간을 설정하지 않고 동일 패스워드를 사용할 경우 인증되지 않은 사용자에게 DBA 권한을 줄 수 있습니다.

위험 영향

권한이 노출되어 남용될 수 있습니다.

해결 방안

PASSWORD_REUSE_TIME에 지정한 날짜 동안에는 전에 사용했던 패스워드를 재사용하지 못하게 profile의 PASSWORD_REUSE_TIME 항목 설정값을 변경합니다. (기본값 : UNLIMITED, 권장값 : 30 ~ 90 days)

profile 변경

SQL> ALTER PROFILE <profile_name> LIMIT PASSWORD_REUSE_TIME <일수>;

profile 할당

SQL> ALTER USER <username> PROFILE <profile_name>;

Last updated