Перейти к основному содержимому

Вопросы безопасности

примечание

Эта страница переведена при помощи нейросети GigaChat.

В кластере Patroni есть два интерфейса, которые необходимо защитить от несанкционированного доступа: распределенное хранилище конфигурации (DCS) и REST API Patroni.

Защита DCS

Patroni и patronictl хранят данные и извлекают их из DCS.

Несмотря на то, что DCS не содержит никакой конфиденциальной информации, она позволяет изменять некоторые параметры конфигурации Patroni/PostgreSQL. Поэтому самое первое, что следует защитить, это сама DCS.

Детали защиты зависят от типа используемой DCS. Параметры аутентификации и шифрования (токены/базовая аутентификация/сертификаты клиента) для поддерживаемых типов DCS описаны в разделе настройки.

Общая рекомендация заключается в том, чтобы включить TLS для всех коммуникаций с DCS.

Защита REST API

Защита REST API является более сложной задачей.

REST API Patroni используется самим Patroni во время гонки лидеров, инструментом patronictl для выполнения отказов/смен/повторной инициализации/перезапусков/перезагрузок, балансировщиком нагрузки HAProxy или любым другим видом балансировщика нагрузки для выполнения проверок работоспособности по HTTP и, конечно же, может также использоваться для мониторинга.

С точки зрения безопасности, REST API содержит безопасные (GET запросы, только получение информации) и небезопасные (PUT, POST, PATCH и DELETE запросы, изменяют состояние узлов) конечные точки.

Небезопасные конечные точки могут быть защищены с помощью базовой аутентификации HTTP путем установки параметров restapi.authentication.username и restapi.authentication.password. Нет возможности защитить безопасные конечные точки без включения TLS.

Когда для REST API включен TLS и установлена инфраструктура открытых ключей, возможна взаимная аутентификация сервера API и клиента API для всех конечных точек.

Параметры раздела restapi включают проверку подлинности клиента TLS на сервере. В зависимости от значения параметра verify_client сервер API требует успешной проверки сертификата клиента как для безопасных, так и для небезопасных вызовов API (verify_client: required), или только для небезопасных вызовов API (verify_client: optional), или для отсутствия вызовов API (verify_client: none).

Параметры раздела ctl обеспечивают проверку подлинности сервера TLS клиентом (инструмент patronictl, который использует ту же конфигурацию, что и patroni). Установите insecure: true для отключения проверки подлинности сертификата сервера клиентом. См. раздел настройки для подробного описания параметров клиента TLS.

Защита базы данных PostgreSQL от несанкционированного доступа выходит за рамки этого документа и рассматривается в разделе «Аутентификация клиента».