다음을 통해 공유


Azure Database for PostgreSQL - 유연한 서버의 감사 로깅

적용 대상: Azure Database for PostgreSQL - 유연한 서버

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

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

사용 시 고려 사항

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

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

pgaudit 설치

Azure Database for PostgreSQL 유연한 서버에 확장을 설치 pgaudit 하려면 사용을 허용 목록 pgaudit 확장해야 합니다.

Azure Portal 사용:

   1. Azure Database for PostgreSQL 유연한 서버 인스턴스를 선택합니다.    1. 사이드바에서 서버 매개 변수를 선택합니다.    1. 매개 변수를 검색합니다 azure.extensions .    1. 허용 목록을 원하는 확장으로 선택합니다 pgaudit .

Azure Database for PostgreSQL의 허용 목록 스크린샷

Azure CLI 사용:

CLI 매개 변수 설정 명령을 통해 확장을 허용 목록에 추가할 수 있습니다.

 az postgres flexible-server parameter set --resource-group <your resource group>  --server-name <your server name> --subscription <your subscription id> --name azure.extensions --value `pgaudit`

설치 pgaudit하려면 서버의 공유 프리로드 라이브러리에 포함해야 합니다. Postgres의 shared_preload_libraries 매개 변수를 변경하려면 서버를 다시 시작해야 합니다. 매개 변수는 Azure Portal, Azure CLI 또는 REST API를 사용하여 바꿀 수 있습니다.

Azure Portal 사용:

  1. Azure Database for PostgreSQL 유연한 서버 인스턴스를 선택합니다.

  2. 사이드바에서 서버 매개 변수를 선택합니다.

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

  4. pgaudit를 선택합니다.

    'pgaudit'에 shared_preload_libraries 사용하도록 설정하는 Azure Database for PostgreSQL 유연한 서버를 보여 주는 스크린샷.

  5. psql에서 다음 쿼리를 실행하여 shared_preload_libraries 로드되어 있는지 확인할 pgaudit수 있습니다.

    show shared_preload_libraries;
    

    shared_preload_libraries 반환할 쿼리 결과가 표시됩니다 pgaudit.

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

    CREATE EXTENSION `pgaudit`;
    

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

pgaudit 설정

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

사용하도록 설정하면 로깅을 pgaudit시작하도록 매개 변수를 구성할 수 있습니다.
구성 pgaudit 하려면 아래 지침을 따를 수 있습니다.
Azure Portal 사용:

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

  2. 사이드바에서 서버 매개 변수를 선택합니다.

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

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

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

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

ON으로 설정 pgaudit.log_client 하면 로그가 파일에 기록되는 대신 클라이언트 프로세스(예: psql)로 리디렉션됩니다. 이 설정은 일반적으로 사용하지 않도록 설정해야 합니다.

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

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

log_statement 매개 변수를 DDL 또는 ALL로 설정하고 명령 또는 ALTER ROLE/USER ... WITH PASSWORD ... ;명령을 실행하는 CREATE ROLE/USER ... WITH PASSWORD ... ; 경우 PostgreSQL은 PostgreSQL 로그에 항목을 만듭니다. 여기서 암호는 명확한 텍스트로 기록되어 보안 위험이 발생할 수 있습니다. PostgreSQL 엔진 디자인에 따라 예상되는 동작입니다.

그러나 확장을 사용하고 pgaudit Postgres 설정과 달리 Postgres 로그에 문을 CREATE/ALTER ROLE 기록하지 않는 서버 매개 변수 페이지에서 매개 변수를 설정할 pgaudit.log=DDL 수 있습니다log_statement=DDL. 이러한 문을 기록해야 하는 경우 로깅CREATE/ALTER ROLE하는 동안 로그에서 암호를 수정하는 문을 추가할 pgaudit.log ='ROLE' 수도 있습니다.

감사 로그 형식

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

시작

빠르게 시작하려면 서버 로그로 WRITE설정하고 pgaudit.log 서버 로그를 열어 출력을 검토합니다.

감사 로그 보기

로그에 액세스하는 방법은 선택한 엔드포인트에 따라 다릅니다. Azure Storage에 대한 로그 스토리지 계정 문서를 참조하세요. Event Hubs대한 Azure 로그 스트림 문서를 참조하세요.

Azure Monitor 로그의 경우 선택한 작업 영역으로 로그가 전송됩니다. Postgres 로그는 AzureDiagnostics 컬렉션 모드를 사용하므로, AzureDiagnostics 테이블에서 쿼리될 수 있습니다. 테이블의 필드는 아래에 설명되어 있습니다. 쿼리와 경고에 대한 자세한 정보는 Azure Monitor 로그 쿼리 개요에서 알아 보세요.

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

마지막 날의 특정 서버에 대한 Postgres 로그의 모든 pgaudit 항목 검색

AzureDiagnostics
| where Resource =~ "myservername"
| where Category == "PostgreSQLLogs"
| where TimeGenerated > ago(1d)
| where Message contains "AUDIT:"