다음을 통해 공유


Azure Database for PostgreSQL의 감사 로깅입니다.

Azure Database for PostgreSQL에서의 데이터베이스 활동에 대한 감사 로깅은 pgaudit 확장을 통해 사용할 수 있습니다. pgaudit는 자세한 세션 및/또는 개체 감사 로깅을 제공합니다.

컴퓨팅 및 스토리지 스케일링과 같은 작업에 대한 Azure 리소스 수준 로그를 원하는 경우 Azure 활동 로그를 참조하세요.

사용 시 고려 사항

기본 설정에 따라, pgaudit 로그 문 및 사용자의 일반 로그 문은 Postgres의 표준 로깅 기능을 사용하여 내보내집니다. Azure Database for PostgreSQL에서는, 나중에 Log Analytics에서의 분석을 위해 Azure Monitor 로그 저장소로 보낼 모든 로그를 사용자가 구성할 수 있습니다. Azure Monitor 리소스 로깅을 활성화한 경우, 사용자의 선택에 따라 로그가 Azure Storage, Azure Event Hubs 및/또는 Azure Monitor 로그에 (JSON 형식으로) 자동으로 전송됩니다.

Azure Storage, Event Hubs 또는 Azure Monitor 로그에 로깅을 설정하는 방법을 알아보려면 서버 로그 문서의 리소스 로그 섹션을 참조하세요.

확장 설치

pgaudit 확장을 사용하려면, 확장을 사용하려는 데이터베이스에서 해당 확장을 허용 목록에 추가, 로드만들어야 합니다.

확장 프로그램 설정 구성

pgaudit를 사용하면 사용자가 세션 또는 개체 감사 로깅을 구성할 수 있습니다. 세션 감사 로깅은 실행된 문의 자세한 로그를 내보냅니다. 개체 감사 로깅은 특정 관계로 범위가 지정된 감사입니다. 하나 또는 두 가지 로깅 유형을 설정하도록 선택할 수 있습니다.

pgaudit 활성화를 한 이후에는, 사용자가 해당 매개 변수를 구성하여 로깅을 시작하도록 할 수 있습니다.

pgaudit를 구성하려면, 다음 지침을 따르면 됩니다.

Azure Portal 사용:

  1. Azure Database for the PostgreSQL의 인스턴스를 선택하세요.

  2. 리소스 메뉴의 설정 아래에서 서버 매개 변수를 선택하세요.

  3. pgaudit 매개 변수를 검색합니다.

  4. 편집하려는 적절한 설정 매개 변수를 선택하세요. 예를 들어, INSERT, UPDATE, DELETE, TRUNCATECOPY 문의 로깅을 시작하려면, pgaudit.logWRITE로 설정하세요.

  5. 저장 버튼을 선택하여 변경 내용을 저장하세요.

pgaudit의 공식 설명서에 각 매개 변수의 정의가 설명되어 있습니다. 먼저 매개 변수를 테스트하고 예상대로 동작하는지 확인합니다.

예를 들어, pgaudit.log_clientON으로 설정하면 감사 이벤트를 서버 로그에 쓸 뿐만 아니라, 클라이언트 프로세스(예: psql)에도 보냅니다. 이 설정은 일반적으로 사용하지 않도록 설정해야 합니다.

pgaudit.log_levelpgaudit.log_client가 on인 경우에만 사용하도록 설정됩니다.

Azure Database for PostgreSQL에서는 pgaudit 설명서에서 설명한 바와 같이, pgaudit.log- (빼기) 기호 바로 가기를 사용하여 설정할 수 없습니다. 모든 필수적인 문 클래스들(READ, WRITE 등)은 개별적으로 지정되어야 합니다.

log_statement 매개 변수를 DDL 또는 ALL로 설정하고 CREATE ROLE/USER ... WITH PASSWORD ... ; 또는 ALTER ROLE/USER ... WITH PASSWORD ... ; 명령을 실행하면, PostgreSQL은 PostgreSQL 로그에 항목을 만듭니다. 이러한 경우에는 암호가 일반 텍스트로 로깅되므로, 잠재적인 보안 위험이 발생할 수도 있습니다. 이것은 PostgreSQL 엔진 설계에 의해 예상되는 동작입니다.

그러나 pgaudit 확장을 사용하고 pgaudit.logDDL로 설정할 수 있습니다. 이렇게 하면 어떤 CREATE/ALTER ROLE 문도 Postgres 서버 로그에 기록되지 않지만, log_statementDDL로 설정하면 서버 로그에 기록됩니다. 이러한 문들을 로깅해야 하는 경우, pgaudit.logROLE로 설정할 수도 있습니다. 이 설정은 CREATE/ALTER ROLE을 로깅하는 중에 로그에서 암호를 삭제합니다.

감사 로그 형식

각 감사 항목은 AUDIT:로 시작됩니다. 나머지 항목들의 형식은 pgaudit설명서에 자세하게 설명되어 있습니다.

시작하기

빠르게 시작하려면, pgaudit.logALL로 설정한 다음 서버 로그를 열어 출력을 검토하세요.

감사 로그 보기

로그에 액세스하는 방법은 선택한 엔드포인트에 따라 다릅니다. 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에 설정된 사용자 지정 구성이나 그 외의 관련된 매개 변수가 자동으로 유지되지 않습니다.