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.rpmrpm -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
- extension 생성
$ vi $PGDATA/postgresql.conf
…
shared_preload_libraries = ‘pgaudit’
…$ pg_ctl restart
$ psql
$ Create extension pgaudit ;
- 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;
지금까지 ‘PostgreSQL의 pgAudit’에 관해 알아보았습니다
‘PostgreSQL의 환경 변수(Environment Variables)’를 바로 이어서 확인해보세요!