Azure Database for PostgreSQL - 단일 서버의 감사 로깅

적용 대상: Azure Database for PostgreSQL - 단일 서버

Important

Azure Database for PostgreSQL - 단일 서버는 곧 사용 중지됩니다. Azure Database for PostgreSQL - 유연한 서버로 업그레이드하는 것이 좋습니다. Azure Database for PostgreSQL - 유연한 서버로 마이그레이션하는 방법에 대한 자세한 내용은 Azure Database for PostgreSQL 단일 서버에 대한 새로운 소식을 참조하세요.

Azure Database for PostgreSQL - 단일 서버의 데이터베이스 활동 감사 로깅은 PostgreSQL Audit 확장인 pgAudit를 통해 사용할 수 있습니다. pgAudit 확장은 자세한 세션 및 개체 감사 로깅을 제공합니다.

참고 항목

pgAudit 확장은 Azure Database for PostgreSQL에서 미리 보기로 제공됩니다. 이 확장은 범용 및 메모리 최적화 서버에서만 사용할 수 있습니다.

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

사용 고려 사항

기본적으로 pgAudit 로그 문은 Postgres 표준 로깅 기능을 사용하여 일반 로그 문과 함께 내보내집니다. Azure Database for PostgreSQL에서 Azure Portal 또는 Azure CLI를 통해 .log 파일을 다운로드할 수 있습니다. 파일 컬렉션의 최대 스토리지는 1GB입니다. 각 파일은 최대 7일 동안 사용할 수 있습니다. 기본값은 3일입니다. 이 서비스는 단기 스토리지 옵션입니다.

또는 나중에 Log Analytics에서 분석하기 위해 모든 로그가 Azure Monitor 로그 저장소로 전송되도록 구성할 수 있습니다. Monitor 리소스 로깅을 사용하도록 설정하면 사용자의 선택에 따라 로그가 자동으로 JSON 형식으로 Azure Storage, Azure Event Hubs 또는 Monitor 로그에 전송됩니다.

pgAudit를 사용하도록 설정하면 서버에서 대량 로깅이 생성되어 성능 및 로그 스토리지에 영향을 줍니다. 장기 스토리지 옵션과 분석 및 경고 기능을 제공하는 Monitor 로그를 사용하는 것이 좋습니다. 추가 로깅이 성능에 미치는 영향을 줄이려면 표준 로깅을 끕니다.

  1. logging_collector 매개 변수를 OFF로 설정합니다.
  2. 서버를 다시 시작하여 이 변경 내용을 적용합니다.

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

pgAudit 설치

pgAudit를 설치하려면 서버의 미리 로드된 공유 라이브러리에 포함해야 합니다. Postgres shared_preload_libraries 매개 변수에 대한 변경 내용은 서버를 다시 시작해야 적용됩니다. 포털, CLI 또는 REST API를 사용하여 매개 변수를 변경할 수 있습니다.

포털을 사용하려면 다음을 수행합니다.

  1. Azure Database for PostgreSQL 서버를 선택합니다.

  2. 왼쪽 설정에서 서버 매개 변수를 선택합니다.

  3. shared_preload_libraries를 검색합니다.

  4. PGAUDIT를 선택합니다.

    PGAUDIT에 shared_preload_libraries를 사용하도록 설정하는 Azure Database for PostgreSQL을 보여 주는 스크린샷

  5. 서버를 다시 시작하여 변경 내용을 적용합니다.

  6. 클라이언트(예: psql)를 사용하여 서버에 연결하고 pgAudit 확장을 사용하도록 설정합니다.

    CREATE EXTENSION pgaudit;
    

오류가 표시되면 shared_preload_libraries를 저장한 후 서버를 다시 시작했는지 확인합니다.

pgAudit 설정

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

참고 항목

pgAudit 설정은 전체적으로 지정되며 데이터베이스 또는 역할 수준에서 지정할 수 없습니다.

pgAudit를 설치한 후 로깅을 시작하도록 해당 매개 변수를 구성할 수 있습니다.

pgAudit를 구성하려면 포털에서 다음을 수행합니다.

  1. Azure Database for PostgreSQL 서버를 선택합니다.

  2. 왼쪽 설정에서 서버 매개 변수를 선택합니다.

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

  4. 편집할 적절한 설정 매개 변수를 선택합니다. 예를 들어 로깅을 시작하려면 pgaudit.logWRITE로 설정합니다.

    pgAudit를 사용하여 로깅을 구성하는 Azure Database for PostgreSQL을 보여 주는 스크린샷

  5. 저장을 선택하여 변경 내용을 저장합니다.

pgAudit 설명서는 각 매개 변수의 정의를 제공합니다. 먼저 매개 변수를 테스트하고 예상대로 동작하는지 확인합니다. 예시:

  • pgaudit.log_client 설정이 켜진 경우 파일에 쓰는 대신 psql과 같은 클라이언트 프로세스로 로그를 리디렉션합니다. 일반적으로 이 설정은 사용 안 함 상태로 둡니다.
  • pgaudit.log_level 매개 변수는 pgaudit.log_client가 on인 경우에만 사용할 수 있습니다.

참고 항목

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

감사 로그 형식

각 감사 항목은 로그 줄 시작 부분 근처의 AUDIT:로 표시됩니다. 항목 나머지 부분의 형식은 pgAudit 설명서에 자세히 설명되어 있습니다.

감사 요구 사항을 충족하기 위해 다른 필드가 필요한 경우 Postgres 매개 변수 log_line_prefix를 사용하세요. log_line_prefix 문자열은 모든 Postgres 로그 줄의 시작 부분에 출력됩니다. 예를 들어 다음 log_line_prefix 설정은 타임스탬프, 사용자 이름, 데이터베이스 이름 및 프로세스 ID를 제공합니다.

t=%m u=%u db=%d pid=[%p]:

log_line_prefix에 대한 자세한 내용은 PostgreSQL 설명서를 참조하세요.

시작하기

빠르게 시작하려면 pgaudit.logWRITE로 설정합니다. 그런 다음, 로그를 열어 출력을 검토합니다.

감사 로그 보기

.log 파일을 사용하는 경우 PostgreSQL 오류 로그와 동일한 파일에 감사 로그가 포함됩니다. 포털 또는 CLI에서 로그 파일을 다운로드할 수 있습니다.

Azure 리소스 로깅을 사용하는 경우 로그에 액세스하는 방법은 선택한 엔드포인트에 따라 다릅니다. Storage의 경우 Azure 리소스 로그를 참조하세요. Event Hubs의 경우 Azure 리소스 로그도 참조하세요.

Monitor 로그의 경우 선택한 작업 영역으로 로그가 전송됩니다. Postgres 로그는 AzureDiagnostics 컬렉션 모드를 사용하므로, 표시된 것처럼 AzureDiagnostics 테이블에서 쿼리할 수 있습니다. 쿼리 및 경고에 대한 자세한 내용은 Azure Monitor의 로그 쿼리를 참조하세요.

이 쿼리를 사용하여 시작합니다. 쿼리를 기반으로 한 경고를 구성할 수 있습니다.

마지막 날에 특정 서버에 대한 모든 Postgres 로그를 검색합니다.

AzureDiagnostics
| where LogicalServerName_s == "myservername"
| where TimeGenerated > ago(1d) 
| where Message contains "AUDIT:"

다음 단계