)로 분리시킨다.
- 디렉토리명에 환경변수를 사용하면 안 된다.
==== Admin 권한 제한 ====
- 심각한 문제를 일으킬 수 있는 과도한 권한은 제한한다.
* sys 권한 : SYSDBA & SYSOPER
* DB • 사용자에게 SYSTEM & OBJECT 권한 부여 및 권한 수
* 필요성 : “DROP ANY TABLE”, “CREATE ANY TABLE” 등의 과도한 권한 부여로 테이블 삭제나 절단, 불필요한 생성 같은 사용자 과실의 문제가 발생한다.
==== 원격 클라이언트 사용자 인증 ====
* 초기화 파라미터 설정
-
REMOTE_OS_AUTHENT = BOOLEAN''CREATE TABLE ORDERS ( ORDER ID NUMBER(12) NOT NULL, CUSTOMER_ID NUMBER(12) NOT NULL, CREDIT_CARD VARCHAR2(19) ENCRYPT );
종류 | 설명 |
---|---|
계정 잠금 | FAILED_LOGIN_ATTEMPTS, PASSWORD_LOCK_TIME ALTER USER명령어나 EM에서 변경 가능하며, 비밀번호 시도 횟수와 잠금 시간과 관련된 파라미터이다. |
비밀번호 기간경과 | PASSWORD_LIFE_TIME, PASSWORD_GRACE_TIME 애플리케이션 계정에도 적용되며, 비밀번호 생명 주기와 관련된 파라미터이다. |
비밀번호 이력관리 | PASSWORD_REUSE_TIME, PASSWORD_REUSE_MAX 비밀번호 재사용성과 관련된 파라미터이며, 상호 배타적이므로 하나의 파라미터가 “UNLIMITED”이면 나머지 파라미터도 “UNLIMITED”로 설정한다. |
비밀번호 검사 | 비밀번호 관리 규칙 |
파라미터 | 설명 |
---|---|
FAILED_LOGIN_ATTEMPTS | 계정을 잠그기 전까지 로그인 시도하다 실패한 횟수 설정 값에 도달하면 자동으로 계정을 잠근다. |
PASSWORD_LOCK_TIME | 암호가 기간 만료되어 계정이 잠겨진 채로 남아 있었던 일수 |
PASSWORD_LIFE_TIME | 일수로 표시한 암호의 수명으로 이 기간이 지나면 기간 만료됨 |
PASSWORD_GRACE_TIME | 암호가 기간 만료된 후 첫 번째 성공적인 로그인부터 암호를 변경할 때까지의 유예기간 |
PASSWORD_REUSE_TIME | 암호가 재사용될 때까지의 일수 |
PASSWORD_REUSE_MAX | 암호가 재사용될 수 있는 최대 횟수 |
PASSWORD_VERIFY_FUNCTION | 암호를 할당하기 전 복잡성 검사를 수행할 PL/SQL 함수 SYS 소유(SYS 스키마에서 수행)이며, BOOLEAN값을 리턴한다. |
function_name(userid_parameter IN VARCHAR2, password_parameter IN VARCHAR2, old_password_parameter IN VARCHAR2) RETURN BOOLEAN
감사형태 | 감사 대상 | 감사 추적 |
---|---|---|
표준 감사 | object 접근을 포함한 권한 | 지정한 데이터 |
값기반 감사 | DML문에 의해서 변경된 데이터 | 관리자가 지정한 구문 |
상세 감사 | 컨텐츠를 기준으로 select + DML구문 | SQL 구문을 포함한 지정된 데이터 |
AUDIT_TRAIL Value | 설명 |
---|---|
NONE/FALUE | 감사 기능 비활성화 |
DB/TRUE | 감사기능 활성화, 감사결과는 SYS.AUD$에 저장됨 |
OS | OS에서 허용하는 경우 활성화, 감사결과는 OS파일로 저장됨 |
DB_EXTENDED | 10g 추가된 기능. 감사 기능 활성화 SYS.AUD$에 저장되는 감사 추적(AUDIT TRAIL) 정보 중에 SQLBIND, SQLTEXT 컬럼 정보가 추가로 생성된다. |
Options | Command | Description |
---|---|---|
SQL Statement Auditing | AUDIT TABLE ~ | DDL문의 유형에 따른 감사 설정 Sucess/Failure 사용하여 제한가능 |
System privilege auditing | AUDIT CREATE ~ | 사용되는 권한에 따른 감사 설정 유저이름 또는 Sucess/Failure 사용하여 제한가능 |
Object privilege auditing | AUDIT ~ on schema.objectname | 특정 스키마의 개체의 명령문에 대한 감사 설정 Sucess/Failure 사용하여 제한할 수 있으며 세션이나 액세스별 그룹화도 가능 |
NOAUDIT | NOAUDIT ~ | 설정한 감사 기능을 제거한다 |
AUDIT TABLE BY SCOTT BY ACCESS WHENEVER SUCCESSFUL;
AUDIT CREATE TABLE BY SCOTT BY SESSION;
AUDIT ALL ON SCOTT.EMP;
NOAUDIT ALL ON SCOTT.EMP;
Execute Command | 감사 기능이 지정된 명령어를 사용자가 수행한다. 즉, 사용자가 SQL or PL/SQL문을 실행 할 때 서버 프로세스는 감사 옵션을 검색하여 실행중인 문장이 감사 대상에 포함되는지 여부를 결정한다. |
---|---|
Generate Audit Trail | AUDIT_TRAIL 파라미터에 정의된 값에 따라 OS의 파일 또는 DB 내에 SYS.AUD$에 AUDIT_TRAIL 레코드를 생성한다. 이 작업은 사용자의 트랜잭션과 무관하므로 Transaction Rollback이 수행될지라도 AUDIT_TRAIL 레코드는 그대로 유지된다. AUDIT_TRAIL 레코드는 구문의 execute 단계에서 생성되므로 Parsing 단계에서 오류가 발생되면 생성 되지 않는다. |
Review Audit Information | 감사 설정, 감사를 통해 생성된 정보는 Audit Trail Data Dictionary View를 통해 확인 할 수 있다. OS에 생성된 Audit_trail인 경우 OS Utility를 사용해서 확인한다. 이 정보를 토대로 의심이 가는 작업을 확인하거나 DB작업에 대한 모니터링을 할 수 있다. |
View | Description |
---|---|
STMT_AUDIT_OPTION_MAP | 감사 옵션 타입 코드에 대한 정보를 보여준다. |
AUDIT_ACTIONS | Audit_trail Action 타입 코드에 대한 설명을 포함한다. |
ALL_DEF_AUDIT_OPTS | Object가 생성될 때 적용될 수 있는 기본적인 Object-auditing 옵션을 보여준다. |
DBA_STMT_AUDIT_OPTS | 시스템과 사용자에 걸쳐 현재 시스템의 감사 옵션을 보여준다. |
DBA_PRIV_AUDIT_OPTS | 시스템과 사용자에 걸쳐 감사되고 현재 시스템 권한을 보여준다. |
DBA_OBJ_AUDIT_OPTS USER_AUDIT_OPTS | 모든 Object에 대한 감사 옵션을 보여준다. USER뷰는 현재 사용자가 소유한 모든 Object의 감사 옵션을 보여준다. |
DBA_AUDIT_TRAIL USER_AUDIT_TRAIL | 모든 Audit Trail 엔트리를 리스트한다. USER뷰는 현재 사용자에 관련된 Audit Trail 엔트리를 보여준다. |
DBA_AUDIT_OBJECT USER_AUDIT_OBJECT | 시스템의 모든 Object에 대한 Audit Trail 레코드를 보여준다. USER뷰는 현재 사용자가 접근할 수 있는 Object와 관련된 구문에 대한 Audit Trail 레코드를 리스트한다. |
DBA_AUDIT_SESSION USER_AUDIT_SESSION | CONNECT와 DISCONNECT에 관련된 모든 Audit Trail 레코드를 리스트한다. USER뷰는 현재 사용자에 대한 연결 설정과 해제에 관련된 모든 Audit Trail 레코드를 리스트한다. |
DBA_AUDIT_STATEMENT USER_AUDIT_STATEMENT | DB 전반적으로 Grant, Revoke, Audit, NOAUDIT, Alter system 구문과 관계되는 Audit Trail 레코드를 리스트 한다. USER뷰는 현재 사용자와 관련된 내용만을 보여준다. |
DBA_AUDIT_EXISTS | AUDIT EXISTS와 AUDIT NOT EXISTS와 관련된 Audit Trail 엔트리를 리스트한다. |
audit_file_dest = 'directory path & name' audit_trail = XML
파라미터 | 데이터 타입 | 설명 |
---|---|---|
object_schema | VARCHAR2 | FGA에서 설정하고자 하는 스키마명 |
object_name | VARCHAR2 | FGA에서 설정하고자 하는 객체명(테이블, 뷰 이름) |
policy_name | VARCHAR2 | FGA에서 설정하고자 하는 Policy명(Unique) |
audit_condition | VARCHAR2 | 상세 감사 지정. 스키마 객체에 대한 논리적인 데이터 그룹에 상응하는 where 절 지정 ex) “department_id=10” 으로 지정 : 조회대상 객체에 AUDIT_CONDITION을 만족하는 데이터가 있다면, 명시적인 조건을 만족하지 않아도 Audit Trail은 생성된다. SELECT … FROM employees; ⇒ where 절에 조건 없이 전체를 조회하는 것 역시, AUDIT_CONDITION에 지정한 “department_id=10”인 데이터도 조회되므로 이 문장도 FGA의 대상이다. |
audit_column | VARCHAR2 | 감사 대상이 되는 컬럼명 지정. 1개 이상의 컬럼 지정 가능(10g 추가 기능) |
handler_schema handler_module | VARCHAR2 | FGA설정에 의해서 Audit Trail이 생성될 때 같이 실행될 수 있는 프로시저를 작성하는 경우, 프로시저의 스키마명과 프로시저명을 기술 프로시저 생성 패턴 : PROCEDURE <fname>(object_schema VARCHAR2, object_name VARCHAR2, policy_name VARCHAR2) AS … |
enable | BOOLEAN | FGA 기능 활성화 여부 지정. default가 TRUE임에도 불구하고 TRUE로 설정하지 않으면 FGA 설정이 활성화되지 않는다. |
statement_types | VARCHAR2 | 10g 추가된 기능. FGA가 적용되는 문장 종류에 대해서 기술. INSERT, UPDATE, DELETE, SELECT(default) 중에서 지정하며, MERGE문은 내부적으로 INSERT 또는 UPDATE의 지정의 영향을 받음 |
audit_trail | BINARY_INTEGER IN DEFAULT | 10g 추가된 기능. “AUDIT_TRAIL ⇒ DBMS_FGA.DB_EXTENDED”로 설정하는 경우 SYS.FGA_LOG$의 LSQLTEXT, LSQLBIND컬럼에 Audit Trail이 생성된다. |
audit_trail_opts | BINARY_INTEGER IN DEFAULT | 10g 추가된 기능. DBMS_FGA.ALL_COLUMNS & DBMS_FGA.ANY_COLUMNS DBMS_FGA.ALL_COLUMNS : AUDIT_COLUMN에 나열된 컬럼 중에서 모두 액세스될 때 AUDIT TRAIL을 생성하도록 지정 DBMS_FGA.ANY_COLUMNS : AUDIT_COLUMN에 나열된 컬럼 중에서 하나라도 액세스될 때 AUDIT TRAIL을 생성하도록 지정 |
VIEW NAME | DESCRIPTION |
---|---|
DBA_AUDIT_POLICIES | FGA 정책 설정에 대한 정보. ALL/DBA/USER_뷰가 모두 존재한다. |
DBA_AUDIT_POLICY_COLUMN | FGA 정책 컬럼에 대한 정보. ALL/DBA/USER_뷰가 모두 존재한다. |
DBA_FGA_AUDIT_TRAIL | FGA설정에 따른 AUDIT TRAIL 정보 |
DBA_COMMON_AUDIT_TRAIL | DB 감사와 FGA 정보(통합적인 감사 정보) 확인 DBA_AUDIT_TRAIL, DBA_FGA_AUDIT_TRAIL의 UNION으로 구성 |
파라미터 | 설명 |
---|---|
TIMESTAMP | 감사 기록의 시간 |
DB_USER | DB 사용자 이름 |
OS_USER | OS 사용자 이름 |
OBJECT_SCHEMA | 감사 대상인 객체의 스키마명 |
OBJECT_NAME | 감사 대상인 객체명 |
POLICY_NAME | 감사 이벤트를 수행할 정책명 |
SCN(System Change Number) | 변경 전의 값을 확인 할 때 사용된다. |
sQL_TEXT | 감사 대상인 SQL 구문 |
SQL_BIND | 바인드 변수. 형식 : #n(s):v: #n: 문장에서 n번째 바인드 변수를 나타냄 #s: 바인드 변수 길이 v: 바인드 변수 값 |
COMMENT$TEXT | 설명 |
Audit Condition | FGA 정책 생성시, 감사 상태는 null(default. 모든 문장은 감사 대상이다.)이다 |
---|---|
Policy Name Error | 정책명은 DB내에서 고유해야 하며 소유자가 없다.(ORA-28101 에러 발생) |
Audited Object Errors | 감사 대상인 테이블이나 뷰는 정책을 생성할 때 존재해야한다. (ORA-00942 에러 발생) |
Audit Condition Errors | 정책 생성시 에러가 없더라도 감사 상태가 잘못된 문법을 가지고 있다면 에러 발생한다(ORA-28112) |
Audit Column Errors | 정책 생성 후 테이블에서 컬럼이 없으면 안된다. 감사 컬럼이 없다면 액세스 될 수 없기 때문에 로우는 감사되지 않는다. 감사 컬럼명이 유효하나 정확하지 않다면 다른 로우가 수행될 수 있다. |
Event Handler Error | 정책이 존재하지 않거나 유효하지 않은 이벤트 핸들러를 참조 할 때 정책은 생성될 수 있으나, 감사 이벤트가 발생할 때 리턴하는 로우는 없다. |