문서유형ㅣ기술정보
분야ㅣ유틸리티
적용제품버전ㅣ-
문서번호ㅣTUTTI020
개요
데이터베이스 보안(Security)은 사용자가 고의나 실수로 데이터베이스에 저장된 데이터를 조작해 일관성을 손상 시키거나 전체 데이터베이스를 파손 시키는 일을 방지하려는 데 목적이 있습니다.
감사(Auditing)는 데이터베이스 내에서 지정된 사용자의 동작을 기록하는 보안 기술입니다. 관리자는 감사 기능을 통해 특정 동작 또는 특정 사용자에 대해 별도의 로그를 남김으로써 데이터베이스를 보다 효과적으로 보호할 수 있습니다.
방법
1. DB 보안 관리 원칙
보안 그룹의 가이드를 기반으로 DB에 대한 보안 및 정보 보호를 위한 DB보안 운영 방안을 수립합니다.
1.1. 필수 관리 항목
1) 기본 계정/패스워드 변경 또는 제거 확인
sys/tibero, sysgis/sysgis, syscat/syscat, tibero1/tmax, tibero/tmax
확인방법
아래 두 가지 방법 중 하나로 확인합니다.
- 명령 창에서 tbsql ID/PASSWD 입력 시 로그인 되는지 확인
select * from ALL_USERS; 후의 기본 ID 확인 후, tbsql ID/PASSWD로 접속 시도, 로그인 되는지 확인
2) DB 패스워드 강화 적용
패스워드 사용 규칙 적용 확인
- 8자리 이상, 영문/숫자 혼용, 동일 문자 연속 4회 이상 사용 금지
확인 방법
- profile이 없는 경우, 데이터 베이스의 DBA계정 및 일반 DB 사용자 계정에 대해 담당자가 접속하도록 하여 단순 패스워드로 접속 되는지 여부를 확인 합니다.
- profile로 관리되는 경우, 사용자에게 지정된 profile에 패스워드 사용 규칙을 정의한 패스워드 검증 함수가 설정이 되어 있고 해당 함수의 검증 규칙 확인합니다.(4.7.3 절에서 USER Profile 적용 참조)
3) 일반 사용자의 DBA 권한 사용 금지
- 일반 DB 사용자 계정으로부터 DBA 권한 삭제
- DBA 계정을 제외한 일반 사용자 계정 중 DBA Role을 revoke 확인
확인 방법
[예제] DBA 권한 사용자 조회
SQL> SELECT * FROM DBA_ROLE_PRIVS WHERE GRANTED_ROLE='DBA';SYS을 제외한 일반 사용자가 조회 되면 안 됩니다.
1.2. 목표 관리 항목
1) DB 계정 관리 강화
DB 계정 중 자격이 없거나 테스트 목적이 소멸되거나 불필요하게 생성된 계정은 삭제합니다. 삭제하기 어려운 경우 해당 계정을 사용 할 수 없게 lock을 설정합니다.
- 자격이 없는 계정: 퇴직, 전배, 휴직, 계약해지자
- 테스트 목적 소멸 계정: 어플리케이션 테스트 등의 목적으로 생성 후 테스트 기간 종료로 목적이 소멸된 경우
- 불필요 계정: 패키지 설치 등 생성된 기본 계정으로 사용되지 않는 계정
확인 방법
[예제] LOCK 걸린 사용 자 조회
SQL> SELECT USERNAME, LOCK_DATE FROM DBA_USERS;
2) 클라이언트 IP 접근 제한 적용
TIBERO_SID 연동 AP 및 관리자 개발자 및 기타 인가 된 DB 접근 자의 Client IP를 제외한 나머지 IP의 접근을 제어합니다.
확인 방법
Tibero TIP 파일에 "LSNR_INVITED_IP_FILE=$TB_HOME/invite_ip/invited.list" 설정을 확인하고 접근 IP 를 확인합니다.
[예제] 인가 된 DB 접근 자의 Client IP 설정
$ TB_SID.tip
#####################
##IP Access Control
#####################
LSNR_INVAITED_IP_FILE=/tibero/DB/tibero7/invite_ip/invited.list
3) Database Link 운영의 최소화
사용되지 않는 DB Link는 삭제 되어야 하며 DB Link는 최소한으로 운영 되어야 합니다.
아래 확인 방법에 의해 나타난 DB LINK의 목적을 운영자 매뉴얼에 기록 관리하여야 합니다.
확인 방법
[예제] PRIVILEGE 조회
SQL>
SELECT * FROM
DBA_SYS_PRIVS
WHERE PRIVILEGE IN ('CREATE DATABASE LINK', 'CREATE PUBLIC DATABASE LINK');
4. 시스템에 임의의 경로나 파일에 대한 읽기/쓰기 권한을 제한
- UTL_FILE 패키지 권한을 모든 사용자로부터 제한하고, 필요한 경우에만 부여합니다.
- UTL_FILE이 사용할 수 있는 경로인 utl_file_dir에 '*'혹은 '.'는 금지합니다.
- 확인 방법 (현재 PUBLIC으로 설정되어 있음.)
[예제] UTL_FIILE 패키지 권한 확인
SQL> REVOKE EXECUTE ON UTL_FILE FROM PUBLIC; -- 필요한 계정에만 grant로 부여
Revoked.
SQL> SELECT NAME, VALUE FROM V$PARAMETERS WHERE NAME = 'UTL_FILE_DIR';
-- UTL_FILE이 사용 허가된 경우에 한해 결과에 '*'혹은 '.'이 나오면 안됨
2. Object 보안
2.1. 계정 암호화
목적
- 사용자 패스워드는 암호화 알고리즘을 사용하여 저장되고 있는지 확인합니다.
현재 환경
- Tibero는 사용자 패스워드를 기본적으로 암호화 방식을 사용하여 저장합니다.
환경 설정 방법
- 신규 사용자 생성 시 반드시 그룹 보안 규정을 준수하여 생성해야 합니다.
- 패스워드 8자리 이상, 영문/숫자 혼용, 동일 문자 연속 4회 이상 또는 ID와 동일 문자 사용을 금지합니다.
운영 절차
- 계정 암호 확인 방법 : tbsql를 통해 DB에 접속 후 아래 Query문을 실행하여 DB 사용자 별 Password의
암호화를 확인합니다.
[예제] 사용자 Password 암호화 확인
SQL> SELECT USERNAME, PASSWORD FROM DBA_USERS;
USERNAME PASSWORD
------------------------------ ------------------------
SYS A6sRMebBoEvNcvxfFJIcVw==
SYSCAT p45Ud4F6Fn7b7/ifeQD3bg==
SYSGIS ZDn9sWH5kDMS9yLxF6UZcg==
OUTLN vNhIe1qdJmGQvgq82nKdUA==
TIBERO +N2TQ1DXn1cB93y5+z83RA==
TIBERO1 +N2TQ1DXn1cB93y5+z83RA==
TEST Uyh8rWkIsW1CMqqftNt9aA==
7 rows selected.
3. DB 감사(Auditing)
3.1. DB 감사 개요
목적
- 사후 보안 강화를 위한 사전 보안 기록
감사 기능은 감사의 대상에 따라 두 종류로 구분됩니다.
- Schema 객체에 대한 감사
지정된 Schema 객체에 수행되는 모든 동작을 기록할 수 있습니다. - 시스템 특권에 대한 감사
지정된 시스템 특권을 사용하는 모든 동작을 기록할 수 있습니다.
감사 기록(Audit Trail)을 남기고 싶은 사용자 또는 역할을 지정할 수 있으며, 성공한 동작 또는 실패한 동작에 대해서 만 감사 기록을 남기도록 지정할 수 있습니다. 또한 Session 별로 한 번만 감사 기록을 남기거나 동작이 수행될 때마다 감사 기록을 남기도록 지정할 수 있습니다.
3.2. 감사 관리 방법
현재 환경
- Auditing 기능은 동적 혹은 정적으로 관리 가능하며, 정적 기능은 설정되어 있지 않습니다.
환경 설정 방법
- 감사 설정하거나 해제하려면 AUDIT 또는 NOAUDIT 명령을 사용합니다.
운영 절차
감사 설정과 해제
1. Schema 객체에 대한 감사
다른 사용자가 소유한 Schema의 객체 또는 디렉터리 객체를 감사하기 위해서는 AUDIT ANY 시스템 특권을 부여 받아야 합니다.
다음은 Schema 객체에 대한 감사를 설정하는 예입니다.
[예제] Schema 객체에 대한 감사 설정
SQL> AUDIT DELETE ON TEST_TABLE BY SESSION WHENEVER SUCCESSFUL;
Audited.위의 SQL 문장이 성공하면 test_table에 수행되는 모든 delete 문에 대해 성공하는 경우에만 감사 기록을 남깁니다.
2. 시스템 특권에 대한 감사
시스템 특권을 감사하기 위해서는 AUDIT SYSTEM 시스템 특권을 부여 받아야 합니다.
다음은 시스템 특권에 대한 감사를 설정하는 예입니다.
[예제] 시스템 특권에 대한 감사 설정
SQL> AUDIT CREATE TABLE BY TIBERO;
Audited.위의 SQL 문장이 성공하면 TIBERO라는 사용자가 테이블을 생성하려고 할 때 성공 여부와 관계 없이 감사 기록을 남깁니다.
3. 감사 해제
시스템 특권의 감사를 해제하기 위해서는 AUDIT SYSTEM 시스템 특권을 부여 받아야 합니다. 다른 사용자가 소유한 Schema의 객체 또는 디렉터리 객체의 감사를 해제 하기 위해서는 AUDIT ANY 시스템 특권을 부여 받아야 합니다.
다음은 이미 설정된 감사를 해제하는 예입니다.
[예제] 감사 해제
SQL> NOAUDIT CREATE TABLE BY TIBERO;
Noaudited.위의 SQL 문장이 성공하면 TIBERO라는 사용자가 테이블을 생성할 때 더 이상 감사 기록을 남기지 않습니다.
감사 기록
감사 기록(Audit Trail)은 명령을 수행한 사용자, 명령이 수행된 Schema 객체, 수행 시각, 세션ID등의 기본 정보와 실행된 SQL문장으로 이루어집니다.
1. 감사 기록 저장
감사 기록은 $TB_SID.tip 파일에 설정된 AUDIT_TRAIL 파라미터에 따라 데이터베이스 내부 또는 OS 파일에 저장할 수 있습니다. OS 파일에 감사 기록을 저장하는 경우 파 일의 위치와 최대 크기를 각각 $TB_SID.tip파일의 AUDIT_FILE_DEST 파라미터와 AUDIT_FILE_SIZE 파라미터로 설정할 수 있습니다.
다음은 감사 기록의 저장 위치를 지정하는 예입니다.
[예제] 저장장치에 기록 TIP 설정
AUDIT_TRAIL=OS
AUDIT_FILE_DEST=/home/tibero/tibero7/instance/t7/audit
AUDIT_FILE_SIZE=10M위와 같이 설정하면 "/home/tibero/tibero7/instance/t7/audit"에 최대 10MB의 크기로 감사 기록이 저장됩니다.
아래는 SQL구문까지 저장하는 예입니다.
[예제] TIP 파일 설정(SQL 실행 구문 저장)
AUDIT_TRAIL=DB_EXTENDED위와 같이 설정하면 감사 기록에 포함되는 기본 정보 뿐만 아니라 사용자가 실행한 SQL 문장까지 데이터 베이스에 저장됩니다.
2. 감사 기록 조회
감사 기록은 OS 파일 또는 데이터베이스에 저장됩니다. OS 파일에 저장하도록 설정한 경우 일반 텍스트 파일의 형태로 저장되므로 쉽게 내용을 열람할 수 있습니다. 데이터베이스에 저장하도록 설정한 경우에는 다음의 정적 View를 통해 감사 기록을 조회할 수 있습니다.
[표] Audit 관련 정적 뷰 설명
| View | 설명 |
|---|---|
| DBA_AUDIT_TRAIL | 데이터베이스에 저장된 모든 감사 기록을 조회하는 View입니다. |
| USER_AUDIT_TRAIL | 데이터베이스에 저장된 현재 사용자의 감사 기록을 조회하는 View입니다. |
3. SYS 사용자에 대한 감사
SYS 사용자의 명령은 보안 상의 이유로 다른 사용자의 명령과는 다른 방식으로 감사됩니다. SYS 사용자는 기본적으로 감사의 대상에서 제외되기 때문에 AUDIT 또는 NOAUDIT 명령을 사용해 감사를 설정 또는 해제할 수 없습니다.
SYS 사용자의 명령을 감사하기 위해서는 $TB_SID.tip 파일의 AUDIT_SYS_OPERATION 파라미터를 Y로 설정해야 합니다. SYS 사용자의 명령을 감사하도록 설정하며, 수행한 모든 동작이 OS 파일에 기록되며 보안 상의 이유로 데이터베이스에는 기록되지 않습니다.
다음은 SYS 사용자의 동작을 감사하도록 설정한 예입니다.
[예제] Audit, SYS 사용자 감사 설정
AUDIT_SYS_OPERATION=Y
AUDIT_FILE_DEST=/home/tibero/tibero7/instance/t7/audit
AUDIT_FILE_SIZE=10M