Rejestrowanie audytu w usłudze Azure Database for PostgreSQL — serwer elastyczny

Można przeprowadzać inspekcję działań bazy danych w usłudze Azure Database for PostgreSQL przy użyciu rozszerzenia pgaudit. pgaudit zapewnia szczegółowe rejestrowanie audytu sesji i 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 pgaudit rejestruje komunikaty, a standardowy mechanizm rejestrowania PostgreSQL emituje zwykłe wpisy dziennika. W Azure Database for PostgreSQL można skonfigurować wszystkie dzienniki, które mają być wysyłane do magazynu dzienników Azure Monitor na potrzeby późniejszej analizy w Log Analytics. Jeśli włączysz rejestrowanie zasobów Azure Monitor, dzienniki są automatycznie wysyłane (w formacie JSON) do Azure Storage, usługi Event Hubs i dzienników Azure Monitor w zależności od wybranego wyboru.

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 użyć pgaudit rozszerzenia, dodaj do listy dozwolonych, załaduj i utwórz rozszerzenie 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 skonfiguruj jego parametry, aby rozpocząć rejestrowanie.

Aby skonfigurować usługę pgaudit, wykonaj następujące instrukcje:

Użyj portalu Azure:

  1. Wybierz swoją instancję serwera elastycznego Azure Database for PostgreSQL.

  2. W menu zasobów w sekcji 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 wartość pgaudit.log na WRITE.

  5. Wybierz 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). Ogólnie rzecz biorąc, pozostaw to ustawienie wyłączone.

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

Na serwerze elastycznym Azure Database for PostgreSQL nie można ustawić pgaudit.log, używając skrótu w postaci znaku - (minus), zgodnie z opisem w dokumentacji pgaudit. Określ wszystkie wymagane klasy instrukcji (READ, WRITEitd.) pojedynczo.

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 zostanie zarejestrowane otwartym tekstem, co może stanowić potencjalne zagrożenie bezpieczeństwa. To zachowanie jest oczekiwane 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 przy jednoczesnym rejestrowaniu 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

Metoda uzyskiwania dostępu do dzienników zależy od wybranego punktu końcowego. Aby uzyskać informacje o koncie magazynu dzienników, zobacz artykuł dotyczący usługi Azure Storage. Aby dowiedzieć się więcej o strumieniowaniu dzienników Azure, zobacz artykuł o Event Hubs.

W przypadku dzienników Azure Monitor dzienniki są wysyłane do wybranego obszaru roboczego. Dzienniki PostgreSQL korzystają z trybu zbierania AzureDiagnostics, dzięki czemu można je odpytywać w tabeli AzureDiagnostics. Aby dowiedzieć się więcej na temat wykonywania zapytań i alertów, zobacz omówienie zapytania Azure Monitor Logs.

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 ciągu ostatniego dnia.

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 proces automatycznie usuwa rozszerzenie pgaudit, a następnie tworzy je ponownie po zakończeniu uaktualniania. Podczas przywracania rozszerzenia proces nie zachowuje automatycznie żadnych niestandardowych konfiguracji ustawionych w pgaudit.log ani innych powiązanych parametrów.