pgAudit 이란?
pgAudit 이란?
postgreSQL에서 제공하는 표준 로깅 기능을 통해 자세한 세션 또는 개체 감사 로깅을 제공합니다.
pgaudit는 특정 기관이나 ISO 인증 감사를 통과하는데 필요한 로그를 생성하는 도구를 제공합니다.
- pgAudit github -
•
pgAudit.log
세션 감사 로깅에 의해 기록되는 명령문 클래스를 지정
명령문 클래스 | 설명 |
READ | 소스가 관계 또는 쿼리인 경우 SELECT 및 COPY |
WRITE | 대상이 관계인 경우 INSERT, UPDATE, DELETE, TRUNCATE 및 COPY |
ROLE | 역할 및 권한과 관련된 명령문 |
DDL | ROLE 클래스에 포함되지 않은 모든 DDL |
MISC | 기타 명령 ( 예 : DISCARD, FETCH, CHECKPOINT, VACUUM, SET ) |
MISC_SET | 기타 SET 명령 ( 예 : SET ROLE ) |
ALL | 위에 모든 항목을 포함 |
•
pgAudit.log_catalog
명령문의 모든 관계가 pg_catalog에 있는 경우 세션 로깅이 활성화되어야 함을 지정
이 설정을 비활성화하면 카탈로그를 많이 쿼리하는 psql 및 pgAdmin과 같은 도구의 로그 노이즈가 줄어듬
•
pgAudit.log_client
메시지가 psql 과 같은 클라이언트 프로세스에 표시되는지 여부를 지정
이 설정은 일반적으로 비활성화된 상태로 두어야 하지만 디버깅 또는 기타 목적에 유용할 수 있음 ( 기본값은 OFF )
•
pgAudit.log_level
로그 항목에 사용할 로그 수준을 지정
이 설정은 회귀 테스트에 사용되며 테스트 또는 기타 목적으로 최종 사용자에게 유용할 수도 있음 ( 기본값은 log )
•
pgAudit.log_parameter
감사 로깅이 명령문과 함께 전달된 매개변수를 포함해야 함을 지정
매개변수가 있으면 명령문 텍스트 뒤에 CSV 형식으로 포함 ( 기본값은 OFF )
•
pgAudit.log_relation
세션 감사 로깅이 SELECT 또는 DML 문에서 참조되는 각 관계( TABLE,VIEW 등 )에 대해 별도의 로그 항목을 생성 해야하는지 여부를 지정
•
pgAudit.log_statement_once
명령문/하위 명령문 조합의 첫 번째 로그 항목 또는 모든 항목과 함께 명령문 텍스트 및 매개변수를 로깅에 포함할지 여부를 지정
•
pgAudit.log_role
개체 감사 로깅에 사용할 마스터 역할을 지정
여러 그룹이 감사로깅의 다양하게 담당 가능 ( 기본 값은 NULL )
설치 요구사항
•
pgAudit과 호환 되는 postgreSQL 버전
pgAudit 버전 | PostgreSQL 버전 |
pgAudit v1.7.X | postgreSQL 15 |
pgAudit v1.6.X | postgreSQL 14 |
pgAudit v1.5.X | postgreSQL 13 |
pgAudit v1.4.X | postgreSQL 12 |
pgAudit v1.3.X | postgreSQL 11 |
pgAudit v1.2.X | postgreSQL 10 |
pgAudit v1.1.X | postgreSQL 9.6 |
•
pgAudit 관련 패키지
◦
centos-release-scl-rh
◦
llvm-toolset-7-clang
◦
openssl-devel
설치 요구사항
•
RPM 설치
-- rpm 주소
http://mirror.centos.org/centos/7/extras/x86_64/Packages/centos-release-scl-rh-2-3.el7.centos.noarch.rpm
http://mirror.centos.org/centos/7/sclo/x86_64/rh/Packages/l/llvm-toolset-7-clang-5.0.1-4.el7.x86_64.rpm
http://mirror.centos.org/centos/7/os/x86_64/Packages/openssl-devel-1.0.2k-19.el7.x86_64.rpm
# rpm -ivh http://mirror.centos.org/centos/7/extras/x86_64/Packages/centos-release-scl-rh-2-3.el7.centos.noarch.rpm
# rpm -ivh http://mirror.centos.org/centos/7/sclo/x86_64/rh/Packages/l/llvm-toolset-7-clang-5.0.1-4.el7.x86_64.rpm
# rpm -ivh http://mirror.centos.org/centos/7/os/x86_64/Packages/openssl-devel-1.0.2k-19.el7.x86_64.rpm
# rpm -ivh pgaudit16_14-1.6.2-1.rhel7.x86_64.rpm
SQL
복사
•
extension 생성
$ vi $PGDATA/postgresql.conf
...
shared_preload_libraries = 'pgaudit'
...
$ pg_ctl restart
$ psql
$ Create extension pgaudit ;
SQL
복사
•
pgAudit 적용 및 확인
$ SELECT name,setting FROM pg_settings WHERE name LIKE 'pgaudit%';
$ set pgaudit.log = 'read,write,ddl';
$ CREATE TABLE table1 (id int, name text);
$ INSERT INTO table1 (id, name) values (3, 'name3');
$ SELECT * FROM table1;
SQL
복사
지금까지 ‘PostgreSQL의 pgAudit’에 관해 알아보았습니다
‘PostgreSQL의 환경 변수(Environment Variables)’를 바로 이어서 확인해보세요!