Включение SSL-шифрования
ADPG поддерживает SSL-шифрование входящего трафика для всех сервисов кластера ADPG. Чтобы использовать эту функциональность, необходимо получить сертификаты и настроить SSL с помощью пользовательского интерфейса ADCM.
Если SSL включен, все сервисы кластера ADPG будут использовать шифрование SSL и протокол HTTPS вместо HTTP.
ВАЖНО
|
Настройка SSL через ADCM
Чтобы включить SSL, выполните следующие действия:
-
Откройте страницу Clusters и выполните действие Manage SSL.
Выполнение действия "Manage SSL" -
В открывшемся окне активируйте переключатель Enable SSL.
Окно "Run an action: Manage SSL"Настройки SSL отобразятся под переключателем Enable SSL. Параметры, выделенные красным, являются обязательными.
Параметры SSL -
Укажите настройки SSL в соответствии с вашим окружением. К сертификатам и ключам должны быть указаны абсолютные пути. Не рекомендуется сохранять файлы сертификатов и ключей в каталоге данных ADPG (путь по умолчанию: /pg_data1/adpg16), так как при обновлении мажорной версии имя каталога данных будет изменено.
В таблице ниже перечислены параметры SSL, доступные для редактирования. Столбец Расположение файла описывает, на каких хостах кластера должен храниться файл по указанному пути.
Параметр Описание Расположение файла ADPG generic certificate
Путь к общему сертификату ADPG, соответствующему требованиям всех сервисов ADPG
На каждом хосте кластера, где установлены сервисы ADPG, Balancer, Etcd или Monitoring
ADPG generic certificate key
Путь к ключу общего сертификата ADPG, который соответствует требованиям всех сервисов ADPG. Права доступа к файлу ключа общего сертификата ADPG должны быть равны
0644
— владелец файла имеет право на чтение и запись, а группа и остальные пользователи могут только читать его. Если используется сервис Balancer (HAProxy), имя файла должно заканчиваться следующим расширением: .crt.key, например, generic.crt.keyНа каждом хосте кластера, где установлены сервисы ADPG, Balancer, Etcd или Monitoring
Arenadata PostgreSQL certificate
Путь к отдельному сертификату со специальными правами для сервиса ADPG (PostgreSQL). Эквивалент параметра
ssl_cert_file
из файла postgresql.conf. Пользовательpostgres
должен иметь права владельца на файл сертификатаНа каждом хосте кластера, где установлен сервис ADPG
Arenadata PostgreSQL certificate key
Путь к ключу отдельного сертификата со специальными правами для сервиса ADPG (PostgreSQL). Эквивалент параметра
ssl_key_file
из файла postgresql.conf. Права доступа к файлу ключа сертификата PostgreSQL должны быть равны0600
— владелец файла имеет право на чтение и запись, а группа и остальные пользователи не имеют никаких прав. Пользовательpostgres
должен иметь права владельца на файл ключа сертификатаНа каждом хосте кластера, где установлен сервис ADPG
CA file
Указывает имя файла, содержащего сертификаты центров сертификации (ЦС) для проверки входящих соединений. Эквивалент параметра
ssl_ca_file
из файла postgresql.confНа каждом хосте кластера, где установлены сервисы ADPG, Balancer, Etcd или Monitoring
S3 backup CA file
Указывает имя файла, содержащего сертификаты центров сертификации (ЦС) для S3-хранилища. Этот параметр следует указывать если включено создание бэкапов и значение параметра
Repo type
установлено вs3
На каждом хосте кластера, где установлен сервис ADPG
-
После указания параметров SSL нажмите Next.
Окно "Run an action: Manage SSL" с настройками SSL -
На вкладке Confirmation нажмите Run, чтобы выполнить действие Manage SSL.
Вкладка "Confirmation"После выполнения действия Manage SSL настройки SSL добавляются в раздел SSL configuration конфигурации сервиса ADPG. Этот раздел содержит следующие поля:
-
Enable SSL — поле, доступное только для чтения, имеет значение
true
, если включен SSL. -
postgresql.conf — поле, доступное только для чтения, которое содержит настройки SSL.
-
PG_HBA — поле для указания правил для SSL-соединений.
-
-
После завершения действия Manage SSL необходимо разрешить SSL-соединения для сервера ADPG. Для этого откройте вкладку Primary configuration сервиса ADPG, разверните раздел SSL configuration в дереве Configuration и кликните поле PG_HBA.
Секция "SSL configuration"Добавьте строку, которая разрешает SSL-соединения, в поле PG_HBA раздела SSL configuration. Например:
hostssl all all 0.0.0.0/0 cert
Поле "PG_HBA"Эта запись позволяет всем пользователям (
all
) использовать SSL-соединения (hostssl
) со всеми базами данных (all
) со всех адресов IPv4 (0.0.0.0/0
). Аутентификация осуществляется с использованием клиентских сертификатов SSL (cert
). За дополнительной информацией обратитесь к статье Обзор конфигурации PG_HBA. -
Сохраните изменения и запустите действие Reconfigure & Restart, чтобы применить изменения.
ПРИМЕЧАНИЕ
Действие Manage SSL переопределяет параметры SSL, указанные в разделах postgresql.conf и Custom postgresql.conf дерева Configuration сервиса ADPG. Обратите внимание, что при отключении SSL через действие Manage SSL снова будут применены настройки SSL из этих разделов. Во избежание неоднозначных ситуаций рекомендуется удалить настройки SSL из этих разделов перед включением SSL, управляемого через действие кластера Manage SSL. |
Использование клиентских сертификатов
Для записи секции PG_HBA с типом соединения hostssl
можно выбрать вариант аутентификации clientcert=verify-ca
или clientcert=verify-full
.
Если указано clientcert=verify-ca
, сервер проверяет, что сертификат клиента подписан одним из доверенных центров сертификации. Если используется clientcert=verify-full
, сервер не только проверяет цепочку сертификатов, но также проверяет, соответствует ли имя пользователя или его сопоставление cn
(Common Name) предоставленного сертификата. Обратите внимание, что при использовании метода аутентификации cert
всегда обеспечивается проверка цепочки сертификатов.
Промежуточные сертификаты, которые связаны с существующими корневыми сертификатами, также могут быть включены в файл, указанный в параметре CA file
, если вы хотите избежать их хранения на клиентах. Списки отзыва сертификатов (Certificate Revocation List, CRL) также проверяются, если параметры ssl_crl_file, ssl_crl_dir установлены через ADCM в поле postgresql.conf.
Опция аутентификации clientcert
доступна для всех методов аутентификации в записях PG_HBA, указанных как hostssl
. Если clientcert
не указан, сервер проверяет сертификат клиента по своему списку ЦС, только если сертификат предоставлен и этот список определен.
Существует два подхода к обеспечению того, чтобы пользователи предоставляли сертификат при входе в систему:
-
Использование метода аутентификации
cert
для записейhostssl
в PG_HBA. Сертификат будет использоваться как для аутентификации, так и для защиты SSL-соединения. См. Certificate authentication. (При использовании метода аутентификацииcert
нет необходимости явно указывать какие-либо параметрыclientcert
). В этом случае параметрcn
(Common Name), указанный в сертификате, сверяется с именем пользователя или применяемым сопоставлением. -
Использование любого метода аутентификации для записей
hostssl
с проверкой клиентских сертификатов через установку для параметра аутентификацииclientcert
значенияverify-ca
илиverify-full
. Первое значение только гарантирует, что сертификат действителен, а второе также гарантирует, чтоcn
(Common Name) в сертификате соответствует имени пользователя или применимому сопоставлению.
За информацией о том, как настроить сертификаты на клиенте, обратитесь к статье SSL Support.