6.6. Настройки безопасности #

6.6.1. Настройка пользователя операционной системы #

Для работы pgpro-otel-collector достаточно прав непривилегированного пользователя. Однако в некоторых случаях для сбора журналов экземпляра СУБД может потребоваться доступ на чтение к каталогу журналов и файлам журналов со стороны операционной системы.

6.6.1.1. Настройка доступа для чтения журналов СУБД #

Для чтения журналов достаточно использовать группу, от имени которой запущен экземпляр СУБД. Для этого группе нужно выдать доступ на чтение файлов журнала и затем в эту же группу поместить пользователя, от имени которого запущен коллектор. Как правило, это группа postgres.

  1. Добавьте права на чтение для группы (путь к каталогу может отличаться):

    sudo chmod g+rx /var/log/postgresql/
    sudo chmod g+r /var/log/postgresql/*
  2. Добавьте пользователя otelcol в группу postgres:

    sudo usermod --groups=postgres otelcol

    Теперь коллектор может читать существующие файлы журналов.

Дополнительно требуется настроить конфигурацию экземпляра СУБД таким образом, чтобы новые файлы журналов создавались с нужными правами доступа. Это достигается путём изменения параметра log_file_mode и перезагрузки конфигурации. Параметр можно изменить напрямую через файл конфигурации, с помощью ALTER SYSTEM или используя средства автоматизации и IaC (Infrastructure as Code, инфраструктура как код).

В примере ниже изменение выполняется через подключение к экземпляру СУБД и использование ALTER SYSTEM.

psql -U postgres -c 'ALTER SYSTEM SET log_file_mode TO "0640"'
psql -U postgres -c 'SELECT pg_reload_conf()'

6.6.2. Настройка пользователя экземпляра СУБД #

Настройка пользователя СУБД включает следующие шаги:

  • Создание и настройка привилегий пользователя СУБД, от имени которого коллектор будет подключаться к экземпляру СУБД.

  • Настройка HBA-правил авторизации, которые будут разрешать коллектору подключаться к экземпляру СУБД.

  • Настройка дополнительных прав на запуск функций; шаг является необязательным и требуется только если вы действительно хотите включить сбор соответствующих данных.

6.6.2.1. Создание и настройка пользователя #

Задайте пароль при создании пользователя:

sudo -u postgres createuser --pwprompt otelcol

Для настройки прав подключитесь к экземпляру СУБД и выполните следующую команду:

GRANT pg_monitor TO otelcol;

6.6.2.2. Настройка правил HBA #

При использовании плагинов, требующих подключения к другим БД (сбор таблиц, индексов, раздувания), правила HBA (Host-Based Authentication, аутентификация на основе хоста) необходимо согласовать с правилами коллектора:

  • Базы данных, перечисленные в настройках плагина, должны быть разрешены в конфигурации HBA.

  • Если коллектор настроен на сбор данных со всех БД, то и правила HBA должны разрешать подключение ко всем БД.

СУБД <productame>PostgreSQL</productame> поддерживает большое количество методов аутентификации. При настройке правил HBA следует ориентироваться на метод, используемый в вашем случае.

Пример настройки доступа к БД postgres с помощью метода scram-sha-256:

vi pg_hba.conf

local  postgres  otelcol                 scram-sha-256
host   postgres  otelcol  127.0.0.1/32   scram-sha-256

В этом примере возможности подключения ограничены только одной базой postgres. В случае, когда коллектор настроен на сбор данных с других БД, в конфигурацию HBA необходимо внести соответствующие разрешающие правила.

После внесения изменений перезагрузите конфигурацию экземпляра СУБД:

sudo -u postgres psql -c 'SELECT pg_reload_conf()'

6.6.2.3. Настройка дополнительных прав #

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

6.6.2.4. Сбор данных по потерянным файлам #

Для сбора данных по потерянным («orphaned») файлам пользователь СУБД должен иметь права на выполнение функций pg_ls_dir и pg_stat_file для всех целевых БД:

GRANT EXECUTE ON FUNCTION pg_ls_dir(text) TO otelcol ;
GRANT EXECUTE ON FUNCTION pg_stat_file(text) TO otelcol ;

6.6.3. Настройка коллектора #

6.6.3.1. Подключение к экземпляру СУБД #

Параметры подключения к экземпляру БД регулируются в конфигурации ресивера postgrespro файла конфигурации коллектора. Учётные данные пользователя должны быть указаны в параметрах endpoint, database, username и password (пароль можно передать через переменную окружения):

receivers:
postgrespro:
  transport: tcp
  endpoint: localhost:5432
  database: postgres
  username: otelcol
  password: ${env:POSTGRESQL_PASSWORD}

6.6.4. Настройка TLS #

Для экспортёров можно настроить TLS (Transport Layer Security, защита транспортного уровня). Каждый экспортёр можно настраивать отдельно, но формат настройки будет одинаковым для всех. Подробную информацию можно найти здесь.

Пример конфигурации экспортёра otlphttp:

exporters:
  otlphttp:
    endpoint: "https://ppem.example.org"
    tls:
      insecure: false
      ca_file: server.crt
      cert_file: client.crt
      key_file: client.key
      min_version: "1.1"
      max_version: "1.2"