Защита системной учётной записи

Системная учётная запись — учётная запись пользователя, от имени которого сервис (Web-клиент, СУБП и пр.) должен подключаться к серверу Docsvision при выполнении служебных операций.

Не рекомендуется использовать учётные записи системных пользователей для авторизации на клиентских рабочих местах, т.к. это может привести к ошибкам в работе системы.

При необходимости можно защитить шифрованием пароли системной учётной записи и учётной записи для работы с LDAP. Имена учётных записей шифровать не требуется. В данном разделе приведено руководство по шифрованию.

Для шифрования паролей используется утилита EncryptionTool, которая может быть установлена на Linux или Windows.

Для шифрования паролей потребуется использовать сертификаты RSA.

Установка и запуск утилиты на Linux

В Linux утилита устанавливается следующей командой:

  • Astra Linux / Альт Сервер

  • РЕД ОС / SberLinux

$ sudo apt-get install docsvision-encryption
$ sudo dnf install docsvision-encryption

После установки утилита располагается по пути: /usr/lib/docsvision/tools/encryption.

Запустить утилиту можно из командной строки следующим образом:

Запуск из директории установки:
./encryption [command] [options]
Запуск из любой директории:
/usr/lib/docsvision/tools/encryption/encryption [command] [options]

Создание сертификата шифрования в Linux

  1. Установите пакет openssl командой:

    • Astra Linux / Альт Сервер

    • РЕД ОС / SberLinux

    $ sudo apt-get install openssl
    $ sudo dnf install openssl
  2. Сгенерируйте и сохраните сертификат docsvision.pfx:

    $ openssl pkcs12 -inkey docsvision.key -in docsvision.crt -export -out docsvision.pfx (1)

    Пароль на сертификат указывать не нужно. Имена файлов ключей и пути можно указывать произвольные.

  3. Добавьте сертификат в доверенные, скопировав его в директорию /usr/local/share/ca-certificates/.

  4. Обновите список доверенных сертификатов:

    • Astra Linux / Альт Сервер

    • РЕД ОС / SberLinux

    $ sudo update-ca-certificates
    $ sudo update-ca-trust

    Полученный сертификат в формате .pfx необходимо скопировать в каталог ~/.dotnet/corefx/cryptography/x509stores/my. Если каталог отсутствует, создайте его самостоятельно. Пользователь, выполняющий шифрование, должен обладать правами на чтение и выполнение файлов в каталоге, а также правами на чтение сертификата.

Установка и запуск утилиты на Windows

В ОС Windows утилита будет установлена вместе с серверной частью модуля Платформа и после установки располагается по пути C:\Program Files\Docsvision\Platform\Tools.

Запуск из директории установки:
encryption.exe [command] [options]
Запуск из любой директории:
"C:\Program Files\Docsvision\Platform\Tools\encryption.exe" [command] [options]

Создание сертификата в Windows

Аналогичным образом сертификат можно сгенерировать в Windows и экспортировать в формате .pfx без пароля.

В Windows полученный сертификат необходимо установить в хранилище сертификатов текущего пользователя.

Особенности настройки шифрования в Windows

В ОС Windows недостаточно указывать штамп сертификата в параметре Штамп сертификата шифрования паролей в настройках модулей Управление процессами и Платформа, потребуются дополнительные настройки.

  1. Установите программу PsExec на сервер под управлением Windows.

  2. Установите сертификат для шифрования паролей.

  3. Выполните следующую команду через PsExec:

    psexec -i -u "NT AUTHORITY\\NETWORK SERVICE" cmd

    По умолчанию в ОС Windows все службы запускаются от имени УЗ "NETWORK SERVICE". Если служба запускается от какой-то другой, укажите её.

  4. Перейдите в оснастку сертификатов certmgr.msc.

  5. Добавьте сертификат в личное хранилище пользователя.

  6. Отпечаток сертификата укажите в параметре Штамп сертификата шифрования паролей для модулей "Управление процессами" и "Платформа".

  7. Примените настройки и перезапустите службы dvworkflow для Linux и Docsvision Workflow Server для Windows, dvappserver для Linux и Docsvision Platform для Windows.

Шифрование пароля учётной записи

Чтобы зашифровать пароль, выполните следующие команды:
  1. Зашифруйте пароль при помощи полученного сертификата.

    ./encryption encrypt [отпечаток сертификата]

    Отпечаток сертификата можно получить, выполнив запрос

    openssl pkcs12 -in docsvision.pfx -nodes | openssl x509 -noout -fingerprint
  2. В окне терминала введите пароль учётной записи для шифрования.

    В ответ будет выведен зашифрованный пароль.

  3. Сохраните имя и пароль УЗ в зашифрованном виде:

    1. Сохраните данные системной УЗ:

      В виде переменных окружения на машине с Windows:
      • DV_SystemUserAccount — имя системной учётной записи.

      • DV_SystemUserPassword — пароль системной учётной записи.

      • DV_DataProtectCertificateThumbprint — отпечаток сертификата шифрования.

      В конфигурационном файле Сервера приложений (модуля Платформа) на сервере Linux:

      Добавьте в конфигурационный файл программы appsettings.json три параметра на корневом уровне:

      • SystemUserAccount — имя системной учётной записи в формате user@domain.com.

      • SystemUserPassword — пароль системной учётной записи в зашифрованном виде.

      • DataProtectCertificateThumbprint — отпечаток сертификата шифрования.

    2. Данные УЗ для работы с LDAP сохраните в конфигурационном файле Сервера приложений (модуля Платформа) и/или Web-клиент:

      • Использовать одну УЗ в качестве системной и для работы с LDAP необязательно, можно указывать разные УЗ в конфигурационных файлах модулей Платформа и Web-клиент. Главное условие — указать верный пароль УЗ в зашифрованном или открытом виде.

      • Параметр DataProtectCertificateThumbprint в конфигурационном файле необходимо указать только один раз. Для шифрования пароля системной УЗ и УЗ LDAP используется один отпечаток сертификата.

      {
        "Ldap": {
          "AuthType": "Basic",
          "Credential": {
            "UserName": "user@domain.com", (1)
            "Password": "value" (2)
          }
        },
        "DataProtectCertificateThumbprint": "thumbprint", (3)
      }
      1 Имя УЗ LDAP.
      2 Пароль системной УЗ LDAP в зашифрованном виде.
      3 DataProtectCertificateThumbprint — отпечаток закрытого ключа шифрования SHA1.
      Указывается без двоеточия, например, D8602179888DC8402B393F11DCA16A3376DDF879.
      Если шифровать пароль не планируется, параметр можно не указывать.
    3. Вместо редактирования appsettings.json Консоль управления Docsvision позволяет изменить нужные параметры через пользовательский интерфейс, настройка переменных среды не потребуется:

  4. Если этого не было сделано ранее, установите сертификат шифрования в хранилище сертификатов текущего пользователя в ОС Windows и в каталог ~/.dotnet/corefx/cryptography/x509stores/my в ОС Linux.

    Сертификат нужно добавлять в домашнюю папку пользователя, от имени которого запускается сервис. Например, для пользователя root (от имени пользователя ROOT службы запускаются по умолчанию) полный путь будет: /root/.dotnet/corefx/cryptography/x509stores/my.
    Если папка отсутствует, создайте её самостоятельно.