pgaudit 확장을 사용하여 Azure Database for PostgreSQL에서 데이터베이스 활동을 감사할 수 있습니다.
pgaudit 에서는 자세한 세션 및 개체 감사 로깅을 제공합니다.
컴퓨팅 및 스토리지 스케일링과 같은 작업에 대한 Azure 리소스 수준 로그를 원하는 경우 Azure 활동 로그를 참조하세요.
사용 시 고려 사항
기본적으로 pgaudit가 로그 문을 기록하고, Postgres의 표준 로깅 기능이 일반적인 로그 문을 출력합니다. Azure Database for PostgreSQL에서는 나중에 Log Analytics에서 분석할 수 있도록 모든 로그가 Azure Monitor 로그 저장소로 전송되도록 구성할 수 있습니다. Azure Monitor 리소스 로깅을 사용하도록 설정하면 선택한 로그에 따라 로그가 자동으로 JSON 형식으로 전송되어 Azure Storage, Event Hubs 및 Azure Monitor 로그로 전송됩니다.
Azure Storage, Event Hubs 또는 Azure Monitor 로그에 로깅을 설정하는 방법을 알아보려면 서버 로그 문서의 리소스 로그 섹션을 참조하세요.
확장 설치
pgaudit 확장을 사용하려면 사용할 데이터베이스에서 해당 확장을 허용 목록에 추가하고, 로드하고, 생성하세요.
확장 프로그램 설정 구성
pgaudit를 사용하면 사용자가 세션 또는 개체 감사 로깅을 구성할 수 있습니다.
세션 감사 로깅은 실행된 문의 자세한 로그를 내보냅니다.
개체 감사 로깅은 특정 관계로 범위가 지정된 감사입니다. 하나 또는 두 가지 로깅 유형을 설정하도록 선택할 수 있습니다.
사용하도록 설정한 pgaudit 후 로깅을 시작하려면 해당 매개변수를 구성하세요.
pgaudit을 구성하려면 다음 지침을 따르세요.
Azure Database for PostgreSQL 유연한 서버의 인스턴스를 선택합니다.
리소스 메뉴의 설정 섹션에서 매개 변수를 선택합니다.
pgaudit매개 변수를 검색합니다.편집하려는 적절한 설정 매개 변수를 선택하세요. 예를 들어,
INSERT,UPDATE,DELETE,TRUNCATE및COPY문에 대한 로깅을 시작하려면pgaudit.log를WRITE로 설정합니다.저장을 선택하여 변경 내용을 저장합니다.
의 공식 pgaudit에 각 매개 변수의 정의가 설명되어 있습니다. 먼저 매개 변수를 테스트하고 예상대로 동작하는지 확인합니다.
예를 들어, pgaudit.log_client를 ON으로 설정하면 감사 이벤트를 서버 로그에 쓸 뿐만 아니라, 클라이언트 프로세스(예: psql)에도 보냅니다. 일반적으로 이 설정을 사용하지 않도록 둡니다.
pgaudit.log_level은 pgaudit.log_client가 on인 경우에만 사용하도록 설정됩니다.
Azure Database for PostgreSQL flexible server에서는 pgaudit 문서에 설명된 대로 -(빼기) 기호 바로 가기를 사용하여 pgaudit.log를 설정할 수 없습니다. 필요한 모든 문 클래스(READWRITE등)를 개별적으로 지정합니다.
log_statement 매개 변수를 DDL 또는 ALL(으)로 설정하고 CREATE ROLE/USER ... WITH PASSWORD ... ; 또는 ALTER ROLE/USER ... WITH PASSWORD ... ; 명령을 실행하면, PostgreSQL은 PostgreSQL 로그에 암호가 평문으로 기록되는 항목을 생성하며, 이로 인해 잠재적인 보안 위험이 발생할 수 있습니다. 이 동작은 PostgreSQL 엔진 디자인에 따라 필요합니다.
그러나 pgaudit 확장을 사용하고 pgaudit.log를 DDL로 설정할 수 있습니다. 이렇게 하면 어떤 CREATE/ALTER ROLE 문도 Postgres 서버 로그에 기록되지 않지만, log_statement를 DDL로 설정하면 서버 로그에 기록됩니다. 이러한 문장을 기록해야 하는 경우 pgaudit.log를 ROLE로 설정할 수도 있습니다. 그러면 CREATE/ALTER ROLE를 기록하는 동안 로그에서 암호가 가려집니다.
감사 로그 형식
각 감사 항목은 AUDIT:로 시작됩니다. 나머지 항목들의 형식은 의 pgaudit에 자세하게 설명되어 있습니다.
시작하기
빠르게 시작하려면, pgaudit.log를 ALL로 설정한 다음 서버 로그를 열어 출력을 검토하세요.
감사 로그 보기
로그에 액세스하는 방법은 선택한 엔드포인트에 따라 달라집니다. Azure Storage의 경우에는 로그 스토리지 계정 문서를 참조하세요. Event Hubs에 대해서는 Azure 로그 스트림 문서를 참조하세요.
Azure Monitor 로그의 경우 선택한 작업 영역으로 로그를 보냅니다. Postgres 로그는 AzureDiagnostics 컬렉션 모드를 사용하므로 AzureDiagnostics 테이블에서 쿼리할 수 있습니다. 쿼리 및 경고에 대한 자세한 내용은 Azure Monitor 로그 쿼리 개요를 참조하세요.
이 쿼리를 사용하여 시작할 수 있습니다. 쿼리를 기반으로 한 경고를 구성할 수 있습니다.
마지막 날의 특정 서버에 대한 Postgres 로그의 모든 pgaudit 항목을 검색합니다.
AzureDiagnostics
| where Resource =~ "<flexible-server-name>"
| where Category == "PostgreSQLLogs"
| where TimeGenerated > ago(1d)
| where Message contains "AUDIT:"
pgaudit 확장이 설치된 주 버전 업그레이드
주 버전 업그레이드 중에 프로세스는 자동으로 pgaudit 확장을 삭제한 다음 업그레이드가 완료된 후에 다시 만듭니다. 이 프로세스는 확장을 복원하지만, pgaudit.log 또는 기타 관련 매개변수에 설정된 사용자 지정 구성을 자동으로 유지하지는 않습니다.