Общие сведения
Требования к окружению
Перед выполнением развёртывания по текущей инструкции необходимо выполнение следующих условий:
В ОС семейства Linux Red Hat должны быть установлены следующие программы:
- openssl(программа управления сертификатами);- psql(CLI-клиент из состава PostgreSQL);- nginx(веб-сервер/прокси-сервер);sudo(программа выполнения команд от имени суперпользователя).Выполнена синхронизация времени в ОС с сервером синхронизации времени.
Примечание
Установка и настройка указанных программ выходит за границы текущей инструкции и описана в справочных руководствах, идущих в комплекте с операционной системой Linux, на которой производится развёртывание.
RPM-пакет
RPM-пакет содержит в себе основной конфигурационный файл, необходимый для работы серверной части, предварительно настроенный для выполнения базового развёртывания с помощью текущей инструкции, а так же минимальный конфигурационный файл для Nginx.
При внесении изменений в конфигурационный файл выполнение развёртывания должно производиться с учётом возможного влияния изменённых параметров в сравнении с конфигурационным файлом из дистрибутива.
Конфигурационный файл
Тонкая настройка 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, требуется использовать следующие параметры:
Развёртывание файлов дистрибутива из архива
Для развёртывания дистрибутива из RPM-пакета необходимо:
Добавить репозиторий FAM.
a. Открыть файл fam.repo в редакторе vi:vi /etc/yum.repos.d/fam.repo
b. В файле fam.repo добавить следующую информацию, которая описывает репозиторий FAM:
[FAM] name=FAM Repository baseurl=https://packages.avanpost.ru/repository/rpm-hosted/FAM/CentOS/ enabled=1 protect=0 gpgcheck=0 metadata_expire=30s autorefresh=1 type=rpm-md
name
имя репозитория baseurl путь к основному URL репозитория FAM
Для CentOS указывается каталог CentOS, для других ОС ALT, REDOS, ROSA соответственно
enabled разрешение использования репозитория protect отключение защиты репозитория от изменений gpgcheck отключение проверки GPG-подписей пакетов metadata_expire время обновления метаданных репозитория autorefresh разрешение автоматического обновления репозитория type указание типа репозитория Обновить все установленные пакеты с помощью команды:
sudo yum update # или sudo dnf update
Выполнить установку пакета
avpfam:sudo yum install -y avpfam --downloadonly --downloaddir=/tmp/ && rpm -i /tmp/avpfam-* # sudo dnf install -y avpfam --downloadonly --downloaddir=/tmp/ && rpm -i /tmp/avpfam-*
При развертывании rpm-пакета в диалоговом окне "Enter domain of FAM Server" ввести внешний домен сервера FAM для прописывания в файл конфигурации Ngnix, далее следовать разделу "Действия во время установки". Пример:
idp.avanpost.local
Чтобы исключить (запретить) обновления определенных пакетов, открыть файл /etc/yum.conf или /etc/dnf/dnf.conf c помощью выбранного редактора:
vi /etc/yum.conf # или vi /etc/dnf/dnf.conf
Пример конфигурационного файла:
[main] gpgcheck=1 installonly_limit=3 clean_requirements_on_remove=True best=True skip_if_unavailable=False # Исключение пакета avpfam при операциях установки и обновления пакетов exclude=avpfam
Действия во время развёртывания
- При развертывании в диалоговых окнах необходимо указать следующие настройки:
Ввести доменное имя сервера FAM для настройки конфигурации NGINX.
Enter domain name of FAM ServerforNGINX Config:Пример: idp.avanpost.localВвести IP-адрес сервера FAM.
Enter IP address of FAM ServerforNGINX Config:Пример: 127.0.0.1Ввеcти имя хоста или IP-адрес сервера PostgreSQL для сервера IDP.
Enter Postgresql Server host nameforIDP Server:Пример: 127.0.0.1Ввести имя БД для сервера IDP.
Enter DB nameforIDP Server:Вводим BD name, которое ввели в пункте 2.Ввести имя пользователя БД, созданного ранее.
Enter username of DB:Вводим username , которое ввели в пункте 2.Ввести созданный ранее пароль от БД дважды.
Enter password of DB
Enter password of DB (again)Вводим password, который вводили в пункте 2.При первом входе в веб-интерфейс Системы пользователю
adminбудет предложено изменить пароль с установленного значенияadmin123на новый пароль с целью обеспечения безопасности.- Указать параметры самоподписанного сертификата (если самоподписанный сертификат не был выпущен, система FAM предложит его сгенерировать).
После установки необходимо добавить пользователя idp в группу root:
sudousermod-aG root idp
Создание и развёртывание базы данных
Создать пользователя СУБД avanpost с паролем и базу данных idp с помощью команд:
sudo -u postgres psql postgres=# CREATE USER avanpost WITH PASSWORD 'Passw0rd'; postgres=# CREATE DATABASE idp OWNER=avanpost ENCODING=utf8; postgres=# \q
Примечание
Необходимо изменить реквизиты базы данных (сервера БД, наименования БД, имени пользователя или пароля), для этого вписать корректные реквизиты в конфигурационный файл /opt/idp/config.json в формате PostgreSQL Connection URI в параметр connectionString в секцию database.
В файле /var/lib/pgsql/версия/data/pg_hba.conf – изменить метод аутентификации на md5 для IPv4 (host all all 127.0.0.1/32) и IPv6 (host all all ::1/128) подключений:
После внесения изменений в pg_hba.conf перезапустить PostgreSQL.
Путь к файлу pg_hba.conf для разных ОС и версий ОС может отличаться.
Например, для Ubuntu файл хранится по пути: /etc/postgresql/'файл'
Генерация сертификата и ключа шифрования
Для использования самоподписанных сертификатов в Системе необходимо создать пользователя и группу с идентификатором idp:idp и соответствующей домашней директорией. Затем разместить сертификат и закрытый ключ в папке /home/idp/.idp/ с именами cert.pem и key.pem соответственно.
У созданной папки /home/idp/.idp/ должно быть настроено разрешение доступа, чтобы пользователь idp имел права на чтение и запись.
Переключиться на служебного пользователя FAM:
sudo su idp
Если требуется изменить пароль для пользователя "idp", использовать команду:
sudo passwd idp
Далее следовать инструкциям в статье 4.1.2. Выпуск ключа шифрования и сертификата.
Выполнение запуска в systemd
Изменить текущего пользователя на администратора Системы с помощью команды:
su root
После ввода команды необходимо ввести пароль администратора (root).
Запустить сервис:
sudo systemctl start idp
Проверка установки
- Открыть в браузере http://idp.avanpost.local/admin. Должна открыться страница аутентификации в административную консоль.
Ввести учетные данные:
– логин: admin;
– пароль: admin123.
После ввода реквизитов учётной записи пользователь должен получить доступ к административной консоли Системы.
При первом входе в Систему потребуется изменить пароль на более безопасный
Ключи для ручной конфигурации
В случае возникновения ошибок или необходимости ручной настройки следует обратить внимание на следующие действия.
Публикация интерфейса системы на веб-сервере Nginx
Проверить в конце конфигурационного файла
/etc/nginx/nginx.confстроку:include /etc/nginx/sites-enabled/*;
Проверить конфигурационный файл
idp.confна основе примера:sudo vi /etc/nginx/sites-available/idp.conf
Внимание
Адрес
idp.avanpost.localдолжен указывать в сети на IP-адрес сервера, на котором размещается система средствами DNS.В противном случае требуется локально в конфигурации
/etc/hostsклиентской машины, за которой работает пользователь или администратор, выполнить настройку маршрутизации с хоста на IP-адрес сервера с системой.Содержимое конфигурационного файла в
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' data: https:; style-src * 'self' 'unsafe-inline'; connect-src * 'self'; script-src * 'self'"; } }Проверить ссылку в
sites-enabled. Если ее нет, выполнить:sudo ln -s /etc/nginx/sites-available/idp.conf /etc/nginx/sites-enabled/idp.conf
Для внесения изменений в конфигурацию Nginx:
a. Проверить конфигурацию:
sudo nginx -t # nginx: the configuration file /etc/nginx/nginx.conf syntax is ok # nginx: configuration file /etc/nginx/nginx.conf test is successful
b. Перечитать конфигурацию Nginx:
sudo systemctl reload nginx
- При необходимости (если появляется ошибка 502) ввести команду для изменения булевого значения httpd_can_network_connect. Она позволит веб-серверу httpd устанавливать сетевые соединения, делая это разрешенным и постоянным.
setsebool httpd_can_network_connect on -P
Проверить реквизиты базы данных (сервера БД, наименования БД, имени пользователя или пароля) в конфигурационном файле
/opt/idp/config.tomlв формате PostgreSQL Connection URI в параметрconnectionStringв секциюdatabase.В случае внесения в основной конфигурационный файл
config.tomlпосле запуска службы idp требуется перезапуск системы для вступления изменений в силу:sudo systemctl restart idp
- Проверить наличие файла key.dat в /opt/idp. При необходимости для генерации ключа шифрования
key.datперейти в директорию/opt/idpи выполнить команду:cd /opt/idp ./fam_linux_amd64 -generatekey
Местоположение файла
key.datне регламентируется (путь к ключу по умолчанию:/opt/idp/key.dat). Если была осуществлена установка ключа в другую директорию, актуальный путь следует указать в конфигурационном файле в параметреencryptionKeyсекции основных настроек. Пример значенияencryptionKey = '/path/name.dat'(по умолчаниюencryptionKey = 'key.dat').
Инициализация и создание учетной записи администратора
Для 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
