Включение SSL-шифрования

ADPG поддерживает SSL-шифрование входящего трафика для всех сервисов кластера ADPG. Чтобы использовать эту функциональность, необходимо получить сертификаты и настроить SSL с помощью пользовательского интерфейса ADCM.

Если SSL включен, все сервисы кластера ADPG будут использовать шифрование SSL и протокол HTTPS вместо HTTP.

ВАЖНО
  • Настоятельно рекомендуется сохранять файлы сертификатов и ключей вне каталога данных ADPG (путь по умолчанию — /pg_data1/adpg16), поскольку имя каталога данных меняется во время мажорного обновления.

  • Необходимо генерировать сертификаты SSL с опцией SAN (Subject Alternative Names). Короткие имена хостов и полные доменные имена (FQDN) должны присутствовать в секции alt_names конфигурационного файла SSL-сертификата.

  • Использование ключей, защищенных паролем, не поддерживается.

  • При обновлении ADPG с версии v16.3.3 с включенным SSL рекомендуется отключить SSL, затем выполнить обновление до ADPG v16.3.4 и использовать кластерное действие Manage SSL для включения SSL.

Настройка SSL через ADCM

Чтобы включить SSL, выполните следующие действия:

  1. Откройте страницу Clusters и выполните действие Manage SSL.

    Выполнение действия Manage SSL
    Выполнение действия "Manage SSL"
  2. В открывшемся окне активируйте переключатель Enable SSL.

    Окно Run an action: Manage SSL
    Окно "Run an action: Manage SSL"

    Настройки SSL отобразятся под переключателем Enable SSL. Параметры, выделенные красным, являются обязательными.

    Параметры SSL
    Параметры SSL
  3. Укажите настройки 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

  4. После указания параметров SSL нажмите Next.

    Окно Run an action: Manage SSL с настройками SSL
    Окно "Run an action: Manage SSL" с настройками SSL
  5. На вкладке Confirmation нажмите Run, чтобы выполнить действие Manage SSL.

    Вкладка Confirmation
    Вкладка "Confirmation"

    После выполнения действия Manage SSL настройки SSL добавляются в раздел SSL configuration конфигурации сервиса ADPG. Этот раздел содержит следующие поля:

    • Enable SSL — поле, доступное только для чтения, имеет значение true, если включен SSL.

    • postgresql.conf — поле, доступное только для чтения, которое содержит настройки SSL.

    • PG_HBA — поле для указания правил для SSL-соединений.

  6. После завершения действия Manage SSL необходимо разрешить SSL-соединения для сервера ADPG. Для этого откройте вкладку Primary configuration сервиса ADPG, разверните раздел SSL configuration в дереве Configuration и кликните поле PG_HBA.

    Секция SSL configuration
    Секция "SSL configuration"

    Добавьте строку, которая разрешает SSL-соединения, в поле PG_HBA раздела SSL configuration. Например:

    hostssl     all     all     0.0.0.0/0     cert
    Поле PG_HBA
    Поле "PG_HBA"

    Эта запись позволяет всем пользователям (all) использовать SSL-соединения (hostssl) со всеми базами данных (all) со всех адресов IPv4 (0.0.0.0/0). Аутентификация осуществляется с использованием клиентских сертификатов SSL (cert). За дополнительной информацией обратитесь к статье Обзор конфигурации PG_HBA.

  7. Сохраните изменения и запустите действие 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.

Нашли ошибку? Выделите текст и нажмите Ctrl+Enter чтобы сообщить о ней