NFS-хранилище
Indeed PAM поддерживает работу файлового хранилища на основе сетевого протокола доступа NFS (Network File System).
Подготовка хранилища на Linux
- RPM
- DEB
Установите пакеты:
sudo dnf install nfs-utilsЗапустите службы NFS-сервера:
sudo systemctl start nfs-server.service
sudo systemctl enable nfs-server.service
sudo systemctl status nfs-server.serviceСоздайте файловые системы для экспорта или обмена на сервере NFS и задайте владельца и группу:
sudo mkdir -p /mnt/data_storage/
sudo chown -R 23041:23041 /mnt/data_storage/Экспортируйте файловые системы в файл конфигурации сервера NFS — /etc/exports, чтобы определить локальные физические файловые системы, доступные для клиентов NFS:
Шаблон пути/mnt/data_storage/ <IP-адрес_клиента/сеть/маска/*>(rw,sync,all_squash,anonuid=23041,anongid=23041)Пример пути/mnt/data_storage/ 192.168.131.0/24(rw,sync,all_squash,anonuid=23041,anongid=23041)После внесения изменений, чтобы они вступили в силу, выполните команду:
sudo exportfs -arvОбход встроенных утилит безопасности:
В дистрибутивах на основе RPM (например, CentOS, RHEL, Fedora) утилита безопасности SELinux может блокировать доступ к NFS, если он не настроен должным образом.
Чтобы временно отключить SELinux для тестирования:
sudo setenforce 0Чтобы настроить SELinux для работы с NFS:
sudo setsebool -P nfs_export_all_rw 1
sudo setsebool -P nfs_export_all_ro 1
Также убедитесь, что firewall не блокирует порты, необходимые для работы NFS. Откройте их:
sudo firewall-cmd --permanent --add-service=nfs
sudo firewall-cmd --permanent --add-service=rpc-bind
sudo firewall-cmd --permanent --add-service=mountd
sudo firewall-cmd --reload
Установите пакеты:
sudo apt update
sudo apt install nfs-kernel-serverЗапустите службы NFS-сервера:
sudo systemctl start nfs-kernel-server.service
sudo systemctl enable nfs-kernel-server.service
sudo systemctl status nfs-kernel-server.serviceСоздайте файловые системы для экспорта или обмена на сервере NFS и задайте владельца и группу:
sudo mkdir -p /mnt/data_storage/
sudo chown -R 23041:23041 /mnt/data_storage/Экспортируйте файловые системы в файл конфигурации сервера NFS — /etc/exports, чтобы определить локальные физические файловые системы, доступные для клиентов NFS:
Шаблон пути/mnt/data_storage/ <IP-адрес_клиента/сеть/маска/*>(rw,sync,all_squash,anonuid=23041,anongid=23041)Пример пути/mnt/data_storage/ 192.168.131.0/24(rw,sync,all_squash,anonuid=23041,anongid=23041)После внесения изменений, чтобы они вступили в силу, выполните команду:
sudo exportfs -arvОбход встроенных утилит безопасности:
В дистрибутивах на основе DEB (например, Ubuntu, Debian) также может потребоваться настройка firewall, чтобы разрешить доступ к NFS.
Чтобы проверить статус firewall и при необходимости открыть порты для NFS:
sudo ufw status
sudo ufw allow from <IP-адрес_клиента> to any port nfs
sudo ufw allow 2049/tcp
sudo ufw allow 111/tcp
sudo ufw allow 111/udpЕсли используется AppArmor, убедитесь, что профили для NFS настроены должным образом. В некоторых случаях может потребоваться их корректировка или временное отключение.
sudo aa-statusЕсли AppArmor мешает работе NFS, его можно временно отключить для тестирования:
sudo systemctl stop apparmor
sudo systemctl disable apparmor
Настройка PAM для работы с NFS
Настройка хранилища выполняется после установки Indeed PAM.
- Linux
- Windows
Создайте папку для монтирования медиахранилища на сервере. Также можете использовать готовую папку, например, /etc/indeed/indeed-pam/media-temp.
sudo mkdir -p /mnt/pamstorage/Установите клиент для монтирования NFS:
RPM:
sudo yum install nfs-utilsDEB:
sudo apt install nfs-common
Выполните монтирование хранилища:
Шаблон командыsudo mount -t nfs <fqdn_or_ip_nfs_server>:/путь/до/медихранилища /путь/до/папки/монтированияПример командыsudo mount -t nfs 192.168.131.200:/mnt/data_storage/ /mnt/pamstorage/Добавьте монтирование хранилища в автозапуск:
Чтобы автоматически монтировать NFS при старте системы, добавьте запись в файл /etc/fstab:
Шаблон команды<fqdn_or_ip_nfs_server>:/путь/до/медихранилища /путь/до/папки/монтирования nfs defaults 0 0Пример команды192.168.131.200:/mnt/data_storage/ /mnt/pamstorage/ nfs defaults 0 0Для проверки монтирования выполните:
sudo mountВнесите изменения в секции
volumesв docker-compose файлах для Core и Gateway-Service:- Core — путь до файла на сервере управления: /etc/indeed/indeed-pam/docker-compose.management-server.yml
- Gateway-Service — путь до файла на сервере доступа: /etc/indeed/indeed-pam/docker-compose.access-server.yml
В секцию
volumesтребуется добавить путь к монтированному хранилищу:- /путь/до/папки/монтирования:/mnt/storage:rw,zПример для Corecore:
image: nexus.indeed-id.hq:5050/pam/indeed-pam-core:${TAG}
container_name: pam-core
extends:
file: docker-compose.common-services.yml
service: base
pids_limit: 5000
depends_on:
- ca-certificates
- pgsql
environment:
- COMPlus_EnableDiagnostics=0
user: root
read_only: false
security_opt:
- apparmor=pam-management
volumes:
- ./core/events:/var/lib/indeed/indeed-pam/events:rw,Z
- ./core/appsettings.json:/app/appsettings.json:ro,z
- ./keys/shared/protector:/etc/indeed/indeed-pam/keys/shared/protector:ro,z
- ./keys/core:/etc/indeed/indeed-pam/keys/core:ro,Z
- ./logs/core:/app/logs:rw,Z
- /mnt/pamstorage:/mnt/storage:rw,z # Пример монтирования NFS
- pam-core-temp-data:/var/lib/indeed/indeed-pam:rw
- pam-ca-cert-store:${CERT_STORE}:ro
tmpfs:
- /tmp
networks:
- pam-core-network
- pam-ls-networkВнесите изменения в секции
Storageконфигурационных файлов Core и Gateway-Service:- Core — путь до конфигурационного файла на сервере управления: /etc/indeed/indeed-pam/core/appsettings.json
- Gateway-Service — путь до конфигурационного файла на сервере доступа: /etc/indeed/indeed-pam/gateway-service/appsettings.json
В обоих файлах требуется указать путь до монтированного хранилища:
"Storage": {
"Type": "FileSystem",
"Settings": {
"Root": "/mnt/storage"
}
}Перезагрузите контейнеры:
sudo bash /etc/indeed/indeed-pam/scripts/run-pam.sh
Установите клиент для монтирования NFS:
- Нажмите в левом нижнем углу Start → Server Manager.
- Нажмите Add Roles and Features.
- На странице Features активируйте чекбокс Client for NFS и нажмите Next.
- Нажмите Install.
Выполните монтирование хранилища и добавьте в автозапуск:
Используйте PowerShell без повышения прав.
Шаблон командыNew-PSDrive -PSProvider FileSystem -Name <буква диска> -Root \\<fqdn_or_ip_nfs_server>\путь\до\медихранилища -PersistПример командыNew-PSDrive -PSProvider FileSystem -Name Z -Root \\192.168.131.200\mnt\data_storage\ -PersistВнесите изменения в секцию
Storageконфигурационных файлов Core и Gateway-Service:- Core — путь до конфигурационного файла на сервере управления: C:\inetpub\wwwroot\core\appsettings.json
- Gateway-Service — путь до конфигурационного файла на сервере доступа: C:\Program Files\Indeed\Indeed PAM\Gateway\Pam.Gateway.Service\appsettings.json
Измените секцию
Storageна:Шаблон секции"Storage": {
"Type": "FileSystem",
"Settings": {
"Root": "\\\\<fqdn_or_ip_nfs_server>\\путь\\до\\медихранилища"
}
},Пример секции"Storage": {
"Type": "FileSystem",
"Settings": {
"Root": "\\\\192.168.131.200\\mnt\\data_storage\\"
}
},Перезагрузите IIS и службу Gateway-Service:
Перезагрузите IIS на сервере управления:
Откройте IIS Manager и выполните команду Restart на нужном сервере.
Перезагрузите Gateway-Service:
Откройте Task Manager, найдите сервис PAM.Gateway.Service и перезапустите его.