Вопросы безопасности
Эта страница переведена при помощи нейросети 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 от несанкционированного доступа выходит за рамки этого документа и рассматривается в разделе «Аутентификация клиента».