Общие сведения
Требования к окружению
Перед выполнением развёртывания по текущей инструкции необходимо выполнение следующих условий:
В ОС должны быть установлены следующие программы:
-sudo(программа выполнения команд от имени суперпользователя);- tar(программа архивирования);- psql(CLI-клиент из состава PostgreSQL);- nginx(веб-сервер/прокси-сервер);- openssl (программа управления сертификатами).Выполнена синхронизация времени в ОС с сервером синхронизации времени.
Примечание
Установка и настройка указанных программ выходит за границы текущей инструкции и описана в справочных руководствах, идущих в комплекте с операционной системой 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.
В конфигурационном файле /opt/idp/config.toml в секции [cookie] необходимо привести параметры к следующим настройкам в зависимости от используемого протокола, который указывается в параметре baseUrl файла config.toml:
- В случае использования HTTP, требуется использовать следующие параметры:
secure = false same_site = 'Lax'
- В случае использования HTTPS, требуется использовать следующие параметры:
secure = true same_site = 'None'
- В случае использования HTTP, требуется использовать следующие параметры:
Развёртывание файлов дистрибутива из архива
Для развёртывания файлов дистрибутива из архива необходимо:
Создать служебного пользователя ОС
idp(параметр-mнеобходим для создания домашней директории):Astra Linux
Создаём пользователя и задаём пароль
sudo useradd -m idp sudo passwd idp
Добавляем пользователя в группу с повышенными привилегиями (sudo)
sudo usermod -aG astra-admin idp
Создать директорию
/opt/idp:sudo mkdir /opt/idp sudo chown -R idp:idp /opt/idp
Переключиться на служебного пользователя
famи перейти в директорию/opt/idp:sudo su idp cd /opt/idp
В зависимости от расположения файла с архивом дистрибутива Системы скопировать архив из исходной директории (заменить в команде
/source-pathна правильный путь с расположением архива дистрибутиваAvanpost.*.tar.gz) в целевую директорию:cp /source-path/Avanpost.*.tar.gz -t /opt/idp
Распаковать файлы дистрибутива из архива, находясь в той же директории:
tar -xvzf Avanpost.*.tar.gz
После успешной распаковки удалить архив дистрибутива:
rm Avanpost.*.tar.gz
Скопировать базовый конфигурационный файл
config.toml.defaultвconfig.toml:cp -f config.toml.default config.toml
Установить переменную окружения
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 выполнять следующим образом:
Создать конфигурационный файл
idp.confна основе примера:для Nginxsudo vi /etc/nginx/conf.d/idp.conf
для Angiesudo 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
Перед выполнением дальнейших действий должен быть сгенерирован сертификат (см. статью 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; } }Проверить конфигурацию:
sudo nginx -t # nginx: the configuration file /etc/nginx/nginx.conf syntax is ok # nginx: configuration file /etc/nginx/nginx.conf test is successful
Перезапустить Nginx:
sudo systemctl restart nginx
Инициализация приложения и регистрация пользователя
Для Avanpost FAM версии ниже 1.16 требуется выполнять инициализацию вручную. Начиная с версии 1.16, инициализация выполняется автоматически и не требует отдельных действий. Инициализация вручную выполняется посредством команды:
cd /opt/idp ./fam_linux_amd64 -init
Для регистрации новой учетной записи администратора необходимо:
- Перейти в директорию
/opt/idp(если пользователь не находился в данной директории):cd /opt/idp
- Выполнить создание учетной записи администратора с использованием утилиты famctl_linux_amd64:
./famctl_linux_amd64 createadmin -login admin -pwd 123qwe -mcp -conn 'postgres://avanpost:Passw0rd@127.0.0.1:5432/idp?sslmode=disable&search_path=public'
Параметр Значение Обязательность -loginЛогин создаваемого пользователя-администратора.
Да -connСтрока подключения к базе данных PostgreSQL (значение параметра connectionString из файла config.toml). Да -pwdПароль пользователя. Нет (если используется флаг -invite). -emailАдрес электронной почты пользователя. Нет (если не используется флаг -invite) -mcpФлаг принудительной смены пароля при первом успешном входе в систему (must change password). Нет -inviteФлаг создания пользователя без пароля с отправкой письма-приглашения на указанный -email. Нет Для версий 1.16 – 1.17.1 для создания администратора используется команда:
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);
- -mcp – флаг принудительной смены пароля при первом успешном входе в систему (must change password).
Начиная с версии FAM 1.16.0, команды
-createuserи-assignroleутилитыfam_linux_amd64не поддерживаются. Для создания учетной записи администратора используется отдельная утилитаcreateadmin_linux_amd64.Для версий ниже 1.16 создание администратора выполнять следующим образом:
- Создать учетную запись администратора с указанием логина и пароля (в данной инструкции –
admin:admin123):sudo ./fam_linux_amd64 -createuser login:password
- Назначить созданному пользователю системную роль
admin:sudo ./fam_linux_amd64 -assignrole admin -user login
- Назначить администратору системную роль admin с использованием команды:
./famctl_linux_amd64 assignrole -login admin -role admin -conn "ConnectionString"
Параметр Значение -loginЛогин администратора, которого нужно добавить в группу. -groupНаименование группы, в которую нужно добавить пользователя. -connСтрока подключения к базе данных.
Регистрация системы в systemd и выполнение запуска
Создайте конфигурационный файл сервиса на основе примера:
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
После создания добавьте сервис в автозапуск запустите его:
sudo systemctl daemon-reload sudo systemctl enable idp sudo systemctl start idp
Проверка установки
Открыть в браузере http://idp.avanpost.local/admin.
Должна открыться страница аутентификации в административную консоль. После ввода реквизитов учётной записи пользователь должен получить доступ к административной консоли Системы.
