Установка FAM Server в Linux из tar.gz-архива


Общие сведения

Требования к окружению

Перед выполнением развёртывания по текущей инструкции необходимо выполнение следующих условий:

  1. В ОС должны быть установлены следующие программы:
    sudo (программа выполнения команд от имени суперпользователя);
    - tar (программа архивирования);
    - psql (CLI-клиент из состава PostgreSQL);
    - nginx (веб-сервер/прокси-сервер);
    - openssl (программа управления сертификатами).

  2. Выполнена синхронизация времени в ОС с сервером синхронизации времени.

    Примечание

    Установка и настройка указанных программ выходит за границы текущей инструкции и описана в справочных руководствах, идущих в комплекте с операционной системой Linux, на которой производится развёртывание.

Конфигурационный файл

Тонкая настройка Avanpost FAM Server выполняется в основном конфигурационном файле config.toml.default, расположенном по пути /opt/idp/config.toml.  Рекомендации и пример конфигурационного файла даны в разделе Спецификация конфигурационного файла config.toml.default компонента Avanpost FAM Server. При внесении изменений в конфигурационный файл выполнение развёртывания должно производиться с учётом возможного влияния изменённых параметров. 

Поставка Avanpost FAM Server содержит в себе следующие конфигурационные файлы:

  • конфигурационный файл, необходимый для работы серверной части, предварительно настроенный для выполнения базового развёртывания с помощью текущей инструкции, 
  • минимальный конфигурационный файл для сервера Angie/Nginx.

    Настройку конфигурационного файла веб-сервера Angie следует выполнять в соответствии с документацией на продукт.

    Настройку конфигурационного файла веб-сервера Nginx следует выполнять в соответствии с документацией на продукт.

Для FAM Server версии 1.15+ использует встроенный внутренний NATS-сервер для работы с базой данных и внутреннего программного взаимодействия. Поэтому при настройке конфигурационного файла обязательно настроить внутренний встроенный NATS-сервер, задав его параметры в секции [nats]. Данный NATS-сервер предназначен исключительно для подключения развернутого экземпляра FAM Server и не нуждается в дополнительной кластеризации. В целях повышения отказоустойчивости не рекомендуется использование единого экземпляра внутреннего NATS-сервера для нескольких узлов FAM Server (когда NATS-сервер разворачивается на одном из узлов, а остальные узлы подключаются к нему как клиенты). NATS-сервер, настроенный в конфигурационном файле, будет запущен автоматически с FAM Server.

В процессе настройки основного конфигурационного файла config.toml стоит обратить на то, что для использования защищенного соединения (https) параметру secure (секция cookie) необходимо присвоить значение true.

Развёртывание файлов дистрибутива из архива

Для развёртывания файлов дистрибутива из архива необходимо:

  1. Создать служебного пользователя ОС idp (параметр -m необходим для создания домашней директории):

    Astra Linux

    Создаём пользователя и задаём пароль

    sudo useradd -m idp
    sudo passwd idp
    

    Добавляем пользователя в группу с повышенными привилегиями (sudo)

    sudo usermod -aG astra-admin idp
  2. Создать директорию /opt/idp:

    sudo mkdir /opt/idp
    sudo chown -R idp:idp /opt/idp
  3. Переключиться на служебного пользователя fam и перейти в директорию /opt/idp:

    sudo su idp
    cd /opt/idp
  4. В зависимости от расположения файла с архивом дистрибутива Системы скопировать архив из исходной директории (заменить в команде /source-path на правильный путь с расположением архива дистрибутива Avanpost.*.tar.gz) в целевую директорию:

    cp /source-path/Avanpost.*.tar.gz -t /opt/idp
  5. Распаковать файлы дистрибутива из архива, находясь в той же директории:

    tar -xvzf Avanpost.*.tar.gz
  6. После успешной распаковки удалить архив дистрибутива:

    rm Avanpost.*.tar.gz
  7. Скопировать базовый конфигурационный файл config.toml.default в config.toml:

    cp -f config.toml.default config.toml
  8. Установить переменную окружения SSO_CFG с указанием пути /opt/idp/config.json (для версии FAM v1.8.7.346 и старше нужно использовать config.toml):

    export SSO_CFG=/opt/idp/config.toml

Создание и развёртывание базы данных

Создать пользователя СУБД avanpost с паролем и базу данных idp:

sudo -u postgres psql
CREATE USER avanpost WITH PASSWORD 'Passw0rd';
CREATE DATABASE idp OWNER=avanpost ENCODING=utf8;
\q

Примечание

В случае потребности в изменении реквизитов базы данных (сервера БД, наименования БД, имени пользователя или пароля) необходимо вписать корректные реквизиты в конфигурационный файл /opt/idp/config.toml в формате PostgreSQL Connection URI в параметр connectionString в секцию database. 

Найти файл pg_hba.conf: 

find / -name 'pg_hba.conf'

В файле /etc/postgresql/версия/main/pg_hba.conf изменить метод аутентификации на md5 для IPv4 (host all all 127.0.0.1/32) и IPv6 (host all all ::1/128) подключений:

После внесения изменений в pg_hba.conf перезапустить PostgreSQL.

Генерация сертификата и ключа шифрования

Подробнее см. статью Выпуск ключа шифрования и сертификата.

Для генерации ключа шифрования key.dat перейти в директорию /opt/idp и выполнить команду:

cd /opt/idp
./fam_linux_amd64 -generatekey

Внимание

Миграцию БД и последующие команды следует выполнять только после внесения изменённых реквизитов в параметр connectionString и генерации ключа шифрования.

Выполнить развёртывание БД с использованием механизма миграций:

cd /opt/idp
./fam_linux_amd64 -migratedb postgres

После завершения выполнения команды миграции установлены.

Публикация интерфейса системы на веб-сервере Angie/Nginx

Публикация интерфейса Avanpost FAM Server на веб-сервере Angie/Nginx выполнять следующим образом:

  1. Создать конфигурационный файл idp.conf на основе примера:

    для Nginx
    sudo vi /etc/nginx/conf.d/idp.conf
    для Angie
    sudo vi /etc/angie/http.d/idp.conf

    Внимание

    Адрес idp.avanpost.local должен указывать в сети на IP-адрес сервера, на котором размещается система средствами DNS.

    В противном случае требуется локально в конфигурации /etc/hosts клиентской машины, за которой работает пользователь или администратор, выполнить настройку маршрутизации с хоста на IP-адрес сервера с Системой.

    Пример:

    127.0.0.1   localhost

    127.0.0.1   idp.avanpost.local

  2. Перед выполнением дальнейших действий должен быть сгенерирован сертификат (см. статью 4.1.2. Выпуск ключа шифрования и сертификата) и создана директория для ключей. Далее следует скопировать содержимое конфигурационного файла в idp.conf:

    server {
        listen        80;
        server_name   idp.avanpost.local;
        location / {
            proxy_pass       http://127.0.0.1:4008;
            proxy_set_header X-Real-IP $remote_addr;
    		proxy_set_header Host $host;
    		proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            add_header Content-Security-Policy "default-src 'self'; img-src 'self' https: data:; connect-src 'self'; script-src 'self' 'unsafe-inline'; style-src 'self'; object-src 'none'; base-uri 'self'; frame-ancestors 'self';" always;
        }
    
     }
  3. Проверить конфигурацию:

    sudo nginx -t
    # nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
    # nginx: configuration file /etc/nginx/nginx.conf test is successful
  4. Перезапустить Nginx:

    sudo systemctl restart nginx

Инициализация приложения

Для инициализации приложения необходимо:

  1. Выполнить команду инициализации:

    cd /opt/idp
    ./fam_linux_amd64 -init

    Для Avanpost FAM версии ниже 1.16 требуется выполнять инициализацию вручную. Начиная с версии 1.16, инициализация выполняется автоматически и не требует отдельных действий. 

  2. Выполнить создание УЗ администратора с указанием логина пользователя и пароля (в данном примере используется учетная запись администратора admin:admin123):
    sudo ./createadmin_linux_amd64 -login admin -pwd admin123 -mcp -conn 'postgres://avanpost:Passw0rd@127.0.0.1:5432/idp?sslmode=disable&search_path=public'
    где используются следующие параметры:
    • -login — логин создаваемого пользователя;
    • -pwd — пароль пользователя;
    • -conn — строка подключения к базе данных (значение параметра connectionString из конфигурационного файла config.toml).

Регистрация системы в systemd и выполнение запуска

  1. Создайте конфигурационный файл сервиса на основе примера:

    sudo vi /etc/systemd/system/idp.service

    Пример:

    [Unit]
    Description=IDP
    
    [Service]
    WorkingDirectory=/opt/idp
    ExecStart=/opt/idp/fam_linux_amd64
    Restart=always
    RestartSec=10
    SyslogIdentifier=idp
    User=idp
    Environment="SSO_CFG=/opt/idp/config.toml"
    
    [Install]
    WantedBy=multi-user.target
  2. После создания добавьте сервис в автозапуск запустите его:

    sudo systemctl daemon-reload
    sudo systemctl enable idp
    sudo systemctl start idp

Проверка установки

Открыть в браузере http://idp.avanpost.local/admin.

Должна открыться страница аутентификации в административную консоль. После ввода реквизитов учётной записи пользователь должен получить доступ к административной консоли Системы.

Обсуждение