Что нужно сделать при обновлении до 2.3

Предварительные условия

  1. Получите релиз с обновлениями. Обновление производится с учетом вашей схемы развертывания и внутренних регламентов обновления ПО.

  2. Выполните резервное копирование БД PAM.

  3. Запланируйте окно обслуживания.

Шаг 1. Настройка TTL токенов в Keycloak

Версия PAM 2.2.

  1. Войдите в Keycloak → Realm → pam → Clients.

  2. Выберите клиент web-site.

  3. Перейдите в Advanced → Advanced Settings.

  4. Установите:

    Access Token Lifespam = 1m
  5. В Clients выберите control.

  6. Перейдите в Advanced → Advanced Settings.

  7. Установите:

    Access Token Lifespam = 15m
  8. В .env файле сервиса Control измените:

    KEYCLOACK_REFRESH: 5m

Шаг 2. Указание FQDN для ресурсов

Версия PAM 2.2.

  1. Перейдите в раздел Ресурсы.

  2. Откройте первый в списке ресурс и проверьте заполнение поля FQDN. Если FQDN отсутствует, укажите IP-адрес и сохраните изменение.

  3. Повторите для каждого ресурса.

Шаг. 3 Проверка наличия атрибутов в User Profile

Версия PAM 2.2.

  1. Откройте Keycloak → Realm pam → Realm settings → User Profile → Attrubutes Group.

  2. Проверьте наличие группы по умолчанию. Если такая отсутствует, создайте ее.

Шаг 4. Изменение конфигурационного файла Control

Версия PAM 2.2.

Добавлена альтернативная конфигурация на control. Теперь структура выглядит следующим образом:

grpc: common: port: 9080 reflection: true security: cert: deploy/config/production/certs/test.crt enabled: true key: deploy/config/production/certs/test.key use_mtls: false ca_cert: deploy/config/production/certs/client.cert.pem insecure_skip_verify: false # example of second grpc server configuration, it can be used together with main grpc config #alt: # port: 9081 # reflection: true # security: # cert: certs/test.crt # enabled: false # key: certs/test.key # use_mtls: false # ca_cert: certs/ca.cert.pem # cert_cn_regexp: # log_error_response: true

На окружениях, где не требуется 2 конфигурации, альтернативную можно закомментировать и не использовать.

Чтобы переопределить настройку в .env файле необходимо поправить путь:

GRPC_COMMON_SECURITY_ENABLED=false # аналогично для alt конфигурации GRPC_ALT_SECURITY_ENABLED=false

Шаг 5. Изменение шаблона SSH-подключений

Версия PAM 2.2.

Если для подключений по SSH используются нестандартные порты:

  1. Перейдите в Настройки системы → Основные настройки → Подключения.

  2. В поле Шаблон строки SSH-подключения обновите шаблон:

    ssh -p {{.WorkerLBPort}} {{.UserLogin}}@{{.CredentialLogin}}@{{.TargetFQDN}}^{{.TargetPort}}@{{.WorkerLBFQDN}}

Разделитель порта по умолчанию — карет ("^").

Шаг 6. Импорт пользователей и групп из AD или LDAP

Версия PAM 2.2.

  1. Настройте федерацию в Keycloak.

  2. Перед настройкой group-mapper создайте родительскую группу, которая будет содержать все импортированные группы.

    Имя родительской группы должно начинаться с Remote-, например Remote-AD.

  3. Настройте родительскую группу:

  4. Для созданной федерации добавьте hardcoded-mapper в список мапперов:

    • Nameisremote-mapper

    • Mapper Typehardcoded-attribute-mapper

    • User Model Attribute NameisRemote

    • Attribute Valuetrue

Шаг 7. Настройка ротации ПУЗ в LDAP через Vault

Версия PAM 2.2.2.

  1. Создать LDAP-движок в Vault.

  2. Настройте TTL:

    Тип учетной записи

    ttl

    max_ttl

    ПУЗ

    2592000 (1 месяц)

    31536000 (1 год)

    ТУЗ

    31536000 (1 год)

    31536000 (1 год)

    Shadow user

    2592000 (1 месяц)

    31536000 (1 год)

  3. Выдайте ACL Policy по аналогии с движком для shadowuser.

  4. Добавить запись о движке в БД PAM, в таблицу pam.vault.

  5. Создайте static-роли для ПУЗ.

  6. Создайте в PAM учетные записи и SSH-подключения.

Шаг 8. Оптимизация размера сессии

Версия PAM 2.2.3.

  1. В файле конфигурации worker-ssh добавьте:

    SERVICE_SPLIT_FILE=12 # Количество секунд, через которые файл будет "ротироваться". При значении 12 секунд будет генерироваться 5 файлов in и out каждую минуту.
  2. В файле конфигурации web-api добавьте:

    API_MODULES_FILES_READ_SIZE_KB: 51200 # Размер в килобайтах, который будет лимитом при отдаче чанков ssh-сессии клиенту (браузеру)

Настройки указаны для активных сессий, где много stdin и stdout событий. Эти настройки можно пропорционально корректировать. Если увеличивается размер чанка, например, до 15 минут, то размер файла на web-api должен увеличиваться до нескольких сотен Мб.

Примечания:

  1. Если в течение заданного количества секунд (SERVICE_SPLIT_FILE) не было новых событий в stdin или stdout, будет создан пустой файл за заданный промежуток времени. Пустые файлы с worker-ssh не будут отправлены в хранилище s3.

  2. Если размер файла в s3 превышает заданный лимит (API_MODULES_FILES_READ_SIZE_KB), то файл будет отдан, но обрезан по заданному лимиту. Данные по сессии будут также отображаться частично обрезанными.

  3. При сокращении длительности чанка, количество чанков растет, но размер каждого держится в определенных границах. Лимит на web-api можно держать небольшим.

  4. При увеличении длительности чанка, количество чанков сокращается, но растет их объем. В этом случае, корректное отображение сессии на веб-портале может занять время.

Шаг 9. Валидация поля username в web-site

Версия PAM 2.2.4.

Чтобы исправить валидацию поля username в Keycloak и на web-site:

  1. Откройте Keycloak → Realm pam → Realm Settins → User Profile.

  2. Откройте настройки поля username.

  3. Добавьте локализацию для Display Name.

  4. Удалите валидатор prohibited-username-characters.

  5. Добавьте валидатор Patterns со значением ^[A-Za-z0-9'._!#^~$-]+$.

  6. Измените валидатор Length на min=3, max=32.

  7. Сохраните настройки.

Шаг 10. Включите управление Unmanaged Attributes

Версия PAM 2.2.3.

  1. Откройте Keyckloak → Realm pam → Realm Settings → General.

  2. Включите Unmanaged Attributes.

Шаг 11. Включение mTLS для gRPC

Для использования подключения воркеров к control по протоколу gRPC через mTLS:

  1. Включите на control сервер gRPC при помощи переменных окружения, например:

    GRPC_COMMON_PORT: 9080 GRPC_COMMON_REFLECTION: false GRPC_COMMON_SECURITY_ENABLED: true GRPC_COMMON_SECURITY_USE_MTLS: true GRPC_COMMON_SECURITY_CERT: /bpam/volumes/ssl/vault_cert.pem GRPC_COMMON_SECURITY_KEY: /bpam/volumes/ssl/vault_key.pem GRPC_COMMON_SECURITY_CA_CERT: /bpam/volumes/ssl/ca_cert.pem

    Или укажите их в конфигурационном файле.

  2. Включите использование mTLS на rdpctl, указав настройки в конфигурации:

    grpcHost = {{ control_domain_name }} grpcPort = 9080 grpcUseSsl = 1 grpcUseMtls = 1 grpcPemRootCertsPath = /opt/bpam/worker-rdp/etc/cert/ca.pem grpcPemCertChainPath = /opt/bpam/worker-rdp/etc/cert/rdpctl_cert.pem grpcPemPrivateKeyPath = /opt/bpam/worker-rdp/etc/cert/rdpctl_key.pem
  3. Укажите настройки mTLS в конфигурации worker-ssh:

    CONTROL_GRPC_ADDRESS: "{{ control_domain_name }}:9080" CONTROL_GRPC_AUTH_USE_MTLS: true CONTROL_GRPC_AUTH_USE_TLS: true CONTROL_GRPC_AUTH_CLIENT_CERT: /etc/bpam/worker-ssh/certs/worker_ssh_cert.pem CONTROL_GRPC_AUTH_CLIENT_KEY: /etc/bpam/worker-ssh/certs/worker_ssh_key.pem CONTROL_GRPC_AUTH_CA_CERT: /etc/bpam/worker-ssh/certs/ca_cert.pem

Обратите внимание, что у сертификатов воркеров должны быть соответствующие клиентские флаги:

X509v3 Extended Key Usage: TLS Web Client Authentication   X509v3 Key Usage: critical Digital Signature, Key Encipherment, Key Agreement

Шаг 12. Дополнительные типы событий в Keycloak

Добавление типов необходимо для корректной регистрации событий аудита: операций входа, выхода и ошибок этих операций в PAM.

Версия PAM 2.5.

  1. Откройте Keycloak → Realm pam → Realm Settings → Events → User events settings.

  2. В Event saved types добавьте типы событий:

    • Login error

    • Logout error

В итоге, в списке событий должны получиться Login, Login error, Logout, Logout error.