31.2. Проверки целостности

31.2.1. Обзор

В Postgres Pro Standard входит утилита pg_integrity_check, предоставляющая следующие возможности для проверки целостности:

  • Подсчёт и проверка контрольных сумм по требованию

  • Встроенная проверка контрольных сумм при запуске сервера

pg_integrity_check может отслеживать контрольные суммы неизменяемых и дополнительных файлов, а также таблиц системных каталогов.

31.2.1.1. Неизменяемые файлы

К отслеживаемым неизменяемым файлам относятся исполняемые файлы, библиотеки и другие файлы, которые никогда не должны изменяться. Контрольные суммы таких файлов определяются в файле конфигурации /opt/pgpro/std-14/share/security/system.conf.

Файл system.conf включён в состав дистрибутива Postgres Pro Standard. Для каждого экземпляра Postgres Pro Standard существует один отдельный файл system.conf. Каждая строка в system.conf соответствует одному отслеживаемому объекту и содержит два поля: контрольную сумму, состоящую из 40 шестнадцатеричных цифр, и относительный путь к файлу. Эти значения разделяются тремя символами: пробел, минус, пробел. Контрольные суммы вычисляются и записываются в этот файл во время установки Postgres Pro Standard. При их расчёте учитывается и содержимое файла, и его атрибуты. Поэтому, например, при изменении прав доступа к файлу его контрольная сумма изменится.

31.2.1.2. Дополнительные файлы

Дополнительными файлами считаются файлы, которые могут быть изменены администратором баз данных. Контрольные суммы дополнительных файлов сохраняются в файлах конфигурации, находящихся в каталоге share/security. Для каждого кластера необходимо иметь отдельный файл конфигурации для дополнительных файлов. При этом действует следующее соглашение об именовании: путь к каталогу данных кластера (PGDATA), в котором косая черта заменяется подчёркиванием, дополняется окончанием .user.conf. Например, для кластера с каталогом данных /var/lib/pgpro/std-14/data файл конфигурации будет называться _var_lib_pgpro_std-14_data.user.conf.

Каждая строка в файле конфигурации соответствует одному отслеживаемому объекту и содержит два поля: контрольную сумму, состоящую из 40 шестнадцатеричных цифр, и относительный путь к файлу. Поля разделяются тремя символами: пробел, минус, пробел.

При расчёте контрольных сумм учитывается и содержимое, и атрибуты файлов. Поэтому, например, при изменении прав доступа к файлу его контрольная сумма изменится.

Чтобы настроить проверку контрольных сумм дополнительных файлов, администратор баз данных должен сделать следующее:

  1. Создать файл конфигурации для каждого кластера, согласно описанному выше соглашению об именовании.

  2. В созданном файле конфигурации перечислить все отслеживаемые дополнительные файлы. В качестве контрольной суммы можно задать любые 40 шестнадцатеричных цифр, например нули.

  3. Выполнить следующую команду, чтобы пересчитать контрольные суммы, указав путь к каталогу данных вашего кластера:

pg_integrity_check -u -o -D /var/lib/pgpro/std-14/data

Примечание

Администратор также может, запустив эту команду, получить примерный файл конфигурации, а затем отредактировать его должным образом.

31.2.1.3. Таблицы системных каталогов

Таблицы системных каталогов представляют собой избранный набор данных, относящихся к экземпляру Postgres Pro Standard. Управление контрольными суммами таблиц системных каталогов осуществляется с помощью соответствующих файлов конфигурации для каждой базы данных в кластере. Проверку целостности таблиц системных каталогов можно настроить для нескольких баз данных путём создания отдельных файлов конфигурации с конкретными значениями контрольных сумм.

Каждая строка в файле конфигурации соответствует одному отслеживаемому объекту и содержит два поля: контрольную сумму, состоящую из 40 шестнадцатеричных цифр, и относительный путь к файлу. Поля разделяются тремя символами: пробел, минус, пробел.

Чтобы настроить проверку контрольных сумм избранных данных, для каждой БД в кластере администратор баз данных должен сделать следующее:

  1. Создайте файл конфигурации для выбранной базы данных. Например, имя_базы_данных-catalog.conf.

  2. В созданном файле конфигурации перечислить SQL-запросы, которые будут возвращать отслеживаемые данные. В качестве контрольной суммы можно задать любые 40 шестнадцатеричных цифр, например нули.

  3. Выполнить следующую команду, чтобы пересчитать контрольные суммы, указав параметры подключения к вашей базе данных:

pg_integrity_check -c -o -C полный-путь-к-файлу-конфигурации -d postgres -h localhost -p 5432 -U postgres

Чтобы проверить таблицы системного каталога, запустите pg_integrity_check для каждой базы данных, подлежащей проверке целостности.

Примечание

Администратор также может, запустив эту команду, получить примерный файл конфигурации, а затем отредактировать его должным образом.

31.2.2. Проверка целостности при запуске сервера

Контрольные суммы неизменяемых файлов всегда проверяются при запуске сервера Postgres Pro Standard. Если запуск сервера остановлен из-за несовпадения контрольных сумм, администратор должен разобраться в проблеме, разрешить её и перезапустить сервер.

Таблицы системных каталогов и дополнительные файлы при запуске сервера не проверяются. Вы можете проверить их вручную, выполнив pg_integrity_check после запуска сервера.

31.2.3. Планирование проверок целостности

Если вы используете систему семейства Linux, вы можете запланировать периодические проверки целостности, используя демон cron. Для этого измените файл /etc/crontab, добавив в него строки, определяющие частоту запуска утилиты pg_integrity_check. Файл /etc/crontab представляет собой системный файл, содержащий все инструкции для демона cron. Чтобы получить подробное описание формата файла crontab в вашей системе на базе Linux, выполните команду:

man 5 crontab

Примеры

Следующий пример иллюстрирует организацию проверок целостности в операционной системе Rosa SX:

# Каталог данных кластера
PGDATA = /var/lib/pgpro/std-14/data
# Файл журнала pg_integrity_check
LOG = /opt/pgpro/std-14/share/security/log
# Проверять неизменяемые файлы ежедневно в 00:05
5 0 * * *       root   /opt/pgpro/std-14/bin/pg_integrity_check -s >> $LOG
# Запускать проверки целостности в 14:15 в первый день месяца
15 14 1 * *     root   /opt/pgpro/std-14/bin/pg_integrity_check -s >> $LOG
# Запускать проверки целостности в 22.00 по выходным
0 22 * * 1-5    root   /opt/pgpro/std-14/bin/pg_integrity_check -s >> $LOG
#  Запускать проверки целостности ежедневно в 00:23, 2:23, 4:23 ...
23 0-23/2 * * * root   /opt/pgpro/std-14/bin/pg_integrity_check -s >> $LOG
#  Запускать проверки целостности в 4:05 по воскресеньям
5 4 * * sun     root   /opt/pgpro/std-14/bin/pg_integrity_check -s >> $LOG
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy