Rejestrowanie zdarzeń audytu w usłudze Azure Database for PostgreSQL

Rejestrowanie inspekcyjne działań bazy danych w usłudze Azure Database for PostgreSQL jest dostępne za pomocą rozszerzenia pgaudit. pgaudit zapewnia szczegółowe rejestrowanie audytu sesji i/lub obiektów.

Jeśli chcesz uzyskać dzienniki operacyjne na poziomie zasobów, takie jak skalowanie zasobów obliczeniowych i magazynowania, zobacz Dziennik aktywności platformy Azure.

Zagadnienia dotyczące użycia

Domyślnie składniki pgaudit i standardowe komunikaty logów są rejestrowane przy użyciu standardowego mechanizmu rejestrowania Postgresa. W usłudze Azure Database for PostgreSQL można skonfigurować wszystkie dzienniki, które mają być wysyłane do magazynu dzienników usługi Azure Monitor na potrzeby późniejszej analizy w usłudze Log Analytics. Jeśli włączysz rejestrowanie zasobów usługi Azure Monitor, dzienniki zostaną automatycznie wysłane (w formacie JSON) do dzienników usługi Azure Storage, usługi Event Hubs i/lub usługi Azure Monitor, w zależności od wybranej opcji.

Aby dowiedzieć się, jak skonfigurować rejestrowanie w dziennikach usługi Azure Storage, usługi Event Hubs lub usługi Azure Monitor, odwiedź sekcję dzienników zasobów w artykule dotyczącym dzienników serwera.

Instalowanie rozszerzenia

Aby móc używać rozszerzenia pgaudit, musisz dodać je do listy dozwolonych, wczytać i utworzyć je w bazie danych, w której planujesz go używać.

Konfigurowanie ustawień rozszerzenia

pgaudit umożliwia skonfigurowanie rejestrowania inspekcji sesji lub obiektu. Inspekcyjne rejestrowanie sesji emituje szczegółowe dzienniki wykonanych instrukcji. Rejestrowanie inspekcji obiektów jest objęte inspekcją w zakresie określonych relacji. Możesz skonfigurować jeden lub oba typy rejestrowania.

Po włączeniu pgaudit funkcji można skonfigurować jej parametry, aby rozpocząć rejestrowanie.

Aby skonfigurować pgaudit, możesz postępować zgodnie z poniższymi instrukcjami:

Korzystanie z portalu Azure:

  1. Wybierz wystąpienie usługi Azure Database for PostgreSQL.

  2. W menu zasobów w obszarze Ustawienia wybierz pozycję Parametry.

  3. Wyszukaj te pgaudit parametry.

  4. Wybierz odpowiedni parametr do edycji. Aby na przykład rozpocząć rejestrowanie instrukcji INSERT, UPDATE, DELETE, TRUNCATE i COPY, ustaw pgaudit.log na WRITE.

  5. Wybierz przycisk Zapisz , aby zapisać zmiany.

Oficjalna dokumentacjapgaudit zawiera definicję każdego parametru. Najpierw przetestuj parametry i upewnij się, że otrzymujesz oczekiwane zachowanie.

Na przykład ustawienie pgaudit.log_client tak, aby ON nie tylko zapisywało zdarzenia inspekcji w dzienniku serwera, ale także wysyła je do procesów klienta (takich jak psql). To ustawienie powinno być zwykle wyłączone.

Parametr pgaudit.log_level jest włączony tylko wtedy, gdy parametr pgaudit.log_client jest ustawiony jako włączony.

W usłudze Azure Database for PostgreSQL, nie można ustawić pgaudit.log przy użyciu skrótu ze znakiem - (minus), jak opisano w dokumentacji pgaudit. Wszystkie wymagane klasy poleceń (READ, WRITE, itp.) należy określić osobno.

Jeśli ustawisz parametr log_statement na DDL lub ALL i uruchomisz polecenie CREATE ROLE/USER ... WITH PASSWORD ... ; lub ALTER ROLE/USER ... WITH PASSWORD ... ;, PostgreSQL utworzy wpis w dziennikach PostgreSQL, w którym hasło jest zapisywane jawnym tekstem, co może stanowić potencjalne zagrożenie bezpieczeństwa. Jest to oczekiwane zachowanie zgodnie z projektem aparatu PostgreSQL.

Można jednak użyć rozszerzenia pgaudit i ustawić pgaudit.log na DDL, co nie zapisuje żadnego polecenia CREATE/ALTER ROLE w dzienniku serwera Postgres, w przeciwieństwie do sytuacji, gdy ustawi się log_statement na DDL. Jeśli musisz rejestrować te instrukcje, możesz również ustawić pgaudit.log na ROLE, co ukrywa hasło w dziennikach podczas rejestrowania CREATE/ALTER ROLE.

Format dziennika inspekcji

Każdy wpis kontroli zaczyna się od AUDIT:. Format pozostałej części wpisu opisano szczegółowo w dokumentacjipgaudit.

Wprowadzenie

Aby szybko rozpocząć, ustaw wartość pgaudit.logALLi otwórz dzienniki serwera, aby przejrzeć dane wyjściowe.

Wyświetlanie dzienników inspekcji

Sposób uzyskiwania dostępu do dzienników zależy od wybranego punktu końcowego. Zobacz artykuł dotyczący konta magazynu dzienników dla usługi Azure Storage. Zobacz artykuł dotyczący strumieniowego rejestrowania dzienników platformy Azure dla usługi Event Hubs.

W przypadku dzienników usługi Azure Monitor dzienniki są wysyłane do wybranego obszaru roboczego. Dzienniki bazy danych Postgres używają trybu kolekcji AzureDiagnostics , aby można było wykonywać zapytania z tabeli AzureDiagnostics. Dowiedz się więcej na temat wykonywania zapytań i alertowania w Omówieniu zapytań dzienników usługi Azure Monitor.

Możesz użyć tego zapytania, aby rozpocząć pracę. Alerty można skonfigurować na podstawie zapytań.

Wyszukaj wszystkie pgaudit wpisy w dziennikach bazy danych Postgres dla określonego serwera w ostatnim dniu

AzureDiagnostics
| where Resource =~ "<flexible-server-name>"
| where Category == "PostgreSQLLogs"
| where TimeGenerated > ago(1d)
| where Message contains "AUDIT:"

Aktualizacja do nowej wersji głównej z zainstalowanym rozszerzeniem pgaudit

Podczas uaktualniania wersji głównej rozszerzenie pgaudit jest automatycznie porzucane, a następnie tworzone ponownie po zakończeniu uaktualniania. Po przywróceniu rozszerzenia konfiguracje niestandardowe ustawione w pgaudit.log lub w innych powiązanych parametrach nie zostają automatycznie zachowane.