Особенности работы с ОС Astra Linux «Смоленск»
В случае проведения сценария установки СУБД Pangolin потребуется выполнить:
- Предварительные действия из данного раздела
- Сценарий из общей инструкции ручной установки
- Общие шаги из данного раздела после ручной установки.
В случае проведения сценария обновления СУБД Pangolin потребуется выполнить:
- Предварительные действия из данного раздела
- Сценарий из общей инструкции ручного обновления
- Общие шаги из данного раздела после обновления.
Либо выполнить действия из данного раздел после проведения основного сценария обновления.
В случае использования актуальной версии СУБД Pangolin для активации релиза «Смоленск» ОС Astra Linux выполните действия представленные в данном разделе:
- Предварительные действия (активация «Смоленска»).
- Общие шаги
Предварительные действия перед установкой/обновлением СУБД Pangolin
В данном подразделе представлены подготовительные действия перед установкой, либо обновлением СУБД Pangolin при использовании ОС Astra «Смоленск».
После выполнения данных действий требуется перейти к основной инструкции по установке, либо по обновлению СУБД.
Проверка активированного максимального уровня защищенности «Смоленск» и включенных МРД, МКЦ
Необходимо выполнить следующие команды:
sudo astra-modeswitch get
sudo astra-mic-control status
sudo astra-mac-control status
Ожидаемый результат:
2
ACTIVE
ACTIVE
Если вывод отличается, то необходимо предварительно активировать максимальный уровень защищенности «Смоленск» и выполнить перезагрузку:
sudo astra-modeswitch set 2
sudo astra-mic-control enable
sudo astra-mac-control enable
sudo reboot
Настройка пользователя для проведения сценариев
Настройте пользователя, от имени которого будет осуществляться сценарий.
-
Добавьте пользователя в группу
astra-admin:sudo usermod -aG astra-admin username -
Выдайте максимальную категорию целостности:
sudo pdpl-user -l 0:0 -i $(cat /sys/module/parsec/parameters/max_ilev) -c 0:0 username
Общие действия при установке/обновлении СУБД Pangolin
В данном разделе представлены действия, которые необходимо выполнить после проведения установки, либо обновления СУБД Pangolin при использовании ОС Astra «Смоленск».
Шаг 1. Выдача прав пользователям postgres и kmadmin_pg после их создания
При установке пакетов серверной и клиентской части СУБД будут созданы пользователи postgres и kmadmin_pg. Для корректного проведения сценария выдайте права пользователям, после их создания:
sudo usercaps -m +9 postgres #выдача PARSEC_CAP_READSEARCH
sudo usercaps -m +9 kmadmin_pg
sudo pdpl-user -l 0:0 -i $(cat /sys/module/parsec/parameters/max_ilev) -c 0:0 postgres # присвоение максимального уровня целостности
sudo pdpl-user -l 0:0 -i $(cat /sys/module/parsec/parameters/max_ilev) -c 0:0 kmadmin_pg
PARSEC_CAP_READSEARCH позволяет игнорировать мандатную политику при чтении и поиске файловых объектов, но не при записи.
Эти права необходимы для использования хранилища паролей.
Шаг 2. Настройка service-файлов
- Настройка при включенной функциональности «Отказ от
root» - Настройка при выключенной функциональности «Отказ от
root»
Необходимо создать файлы конфигурации для systemd пользователей postges и kmadmin_pg.
-
Создайте директорий конфигурации
systemdи настройте права. Выполните следующие команды:sudo mkdir -p /lib/systemd/system/user@$(id -u postgres).service.d
sudo chown postgres:postgres /lib/systemd/system/user@$(id -u postgres).service.d
sudo mkdir -p /lib/systemd/system/user@$(id -u kmadmin_pg).service.d
sudo chown kmadmin_pg:kmadmin_pg /lib/systemd/system/user@$(id -u kmadmin_pg).service.d -
В каждой из созданных директорий создайте файл конфигурации со следующим содержимым:
# Для пользователя postgres
printf "[Service]\nCapabilitiesParsec=parsec_cap_readsearch\n" | sudo tee /lib/systemd/system/user@$(id -u postgres).service.d/postgres.conf
# Для пользователя kmadmin_pg
printf "[Service]\nCapabilitiesParsec=parsec_cap_readsearch\n" | sudo tee /lib/systemd/system/user@$(id -u kmadmin_pg).service.d/kmadmin_pg.conf -
Выполните перезапуск сервисов:
sudo systemctl daemon-reload
sudo systemctl restart user@$(id -u postgres).service
sudo systemctl restart user@$(id -u kmadmin_pg).service
Для сервисов, которые запускаются не через пользовательские юниты (systemctl_unit_on_user = false), необходимо вручную установить высокий уровень целостности для конфигурационных файлов .service после установки/обновления пакетов.
-
Присвойте высокую категории целостности (ILevel) для service-файлов:
# Для pangolin-auth-reencrypt
sudo pdpl-file -v 0:$(cat /sys/module/parsec/parameters/max_ilev) /lib/systemd/system/pangolin-auth-reencrypt@.service
# Для pangolin-certs-rotate
sudo pdpl-file -v 0:$(cat /sys/module/parsec/parameters/max_ilev) /lib/systemd/system/pangolin-certs-rotate.service
# Для pangolin-pooler
sudo pdpl-file -v 0:$(cat /sys/module/parsec/parameters/max_ilev) /lib/systemd/system/pangolin-pooler.service
# Для pangolin-manager (выполняется только в конфигурации cluster)
sudo pdpl-file -v 0:$(cat /sys/module/parsec/parameters/max_ilev) /lib/systemd/system/pangolin-manager.service
# Для pangolin-dbms (выполняется только для конфигурации standalone)
sudo pdpl-file -v 0:$(cat /sys/module/parsec/parameters/max_ilev) /lib/systemd/system/pangolin-dbms.service -
В service-файлах для следующих компонентов:
pangolin-manager,pangolin-pooler,pangolin-auth-reencryptдобавьте параметры безопасности в секцию[Service]:PDPLabel=0:<max_ilev_value>:0
CapabilitiesParsec=parsec_cap_readsearchЗамените
<max_ilev_value>на значение из файла/sys/module/parsec/parameters/max_ilev(по умолчанию63).
Шаг 3. Изменение прав выполнения ExecStartPre
Для команд создания директорий и смены владельца (mkdir, chown, chmod) в начале строки добавьте символ +. Это необходимо для корректного выполнения команд с повышенными привилегиями в Astra Linux. Пример:
ExecStartPre=/bin/mkdir -p ... → ExecStartPre=+/bin/mkdir -p ...
Также удалите строку PermissionsStartOnly=true, если она присутствует.
Шаг 4. Проверка заполненного service-файла
- Файл при включенной функциональности «Отказ от
root» - Файл при выключенной функциональности «Отказ от
root»
Пример заполненного pangolin-manager.service с учетом вышеописанных изменений для включенной функциональности «Отказ от root»:
[Unit]
Description=Runners to orchestrate a high-availability PostgreSQL
After=syslog.target network.target
[Service]
Type=simple
# Read in configuration file if it exists, otherwise proceed
Environment="PG_LICENSE_PATH=/opt/pangolin-license"
Environment="PG_LD_LIBRARY_PATH=/opt/pangolin-dbms-server/lib"
Environment="PG_PLUGINS_PATH=/opt/pangolin-dbms-server/lib"
Environment="PG_CLIENT_PLUGINS_PATH=/opt/pangolin-dbms-client/lib"
Environment="LD_LIBRARY_PATH=/opt/pangolin-manager/lib"
Environment="PATRONI_PLUGINS_PATH=/opt/pangolin-manager/lib"
Environment="PYTHONPATH=/opt/pangolin-manager/lib/python3/site-packages:/opt/pangolin-manager/lib64/python3/site-packages"
LimitNOFILE=65536
# Pre-commands to start watchdog device
# Uncomment if watchdog is part of your patroni setup
ExecStartPre=-/bin/mkdir -p /var/run/user/997/pangolin-dbms
ExecStartPre=/bin/chown -R postgres:postgres /var/run/user/997/pangolin-dbms
ExecReload=/bin/kill -HUP $MAINPID
WorkingDirectory=/opt/pangolin-manager
ExecStart=/opt/pangolin-manager/bin/pangolin-manager-bin/pangolin-manager.bin /etc/pangolin-manager/postgres.yml
Restart=on-failure
KillMode=process
# Disable restart limits
StartLimitInterval=0
[Install]
WantedBy=default.target
Пример заполненного pangolin-manager.service с учетом вышеописанных изменений для выключенной функциональности «Отказ от root»:
[Unit]
Description=Runners to orchestrate a high-availability PostgreSQL
After=syslog.target network.target
[Service]
Type=simple
PDPLabel=0:63:0
CapabilitiesParsec=parsec_cap_readsearch
User=postgres
Group=postgres
# Read in configuration file if it exists, otherwise proceed
Environment="PG_LICENSE_PATH=/opt/pangolin-license"
Environment="PG_LD_LIBRARY_PATH=/opt/pangolin-dbms-server/lib"
Environment="PG_PLUGINS_PATH=/opt/pangolin-dbms-server/lib"
Environment="PG_CLIENT_PLUGINS_PATH=/opt/pangolin-dbms-client/lib"
Environment="LD_LIBRARY_PATH=/opt/pangolin-manager/lib"
Environment="PATRONI_PLUGINS_PATH=/opt/pangolin-manager/lib"
Environment="PYTHONPATH=/opt/pangolin-manager/lib/python3/site-packages:/opt/pangolin-manager/lib64/python3/site-packages"
LimitNOFILE=65536
# Pre-commands to start watchdog device
# Uncomment if watchdog is part of your patroni setup
ExecStartPre=+-/bin/mkdir -p /var/run/pangolin-dbms
ExecStartPre=+/bin/chown -R postgres:postgres /var/run/pangolin-dbms
ExecReload=/bin/kill -HUP $MAINPID
WorkingDirectory=/opt/pangolin-manager
ExecStart=/opt/pangolin-manager/bin/pangolin-manager-bin/pangolin-manager.bin /etc/pangolin-manager/postgres.yml
Restart=on-failure
KillMode=process
# Disable restart limits
StartLimitInterval=0
[Install]
WantedBy=multi-user.target
Шаг 5. Корректировка прав скриптов .sh
При использовании скриптов .sh (например inplace_upgrade.sh) необходимо присвоить ему высокую целостность.
-
Проверьте текущие права:
sudo pdp-ls -M /opt/pangolin-utilities/bin/
total 8
drwx------m-- 3 postgres postgres Уровень_0:Low:Нет:0x0 pg_inplace_upgrade -
Присвойте высокую категорию целостности, если текущая
Low (0):sudo pdpl-file -v 0:$(cat /sys/module/parsec/parameters/max_ilev) /opt/pangolin-utilities/bin/pg_inplace_upgrade
Changed to 0:63 for "/opt/pangolin-utilities/bin/pg_inplace_upgrade"При недостаточных правах, во время запуска скриптов, возможно возникновение ошибки
Permission denied.