Перечень сокращений#
ACL#
Access Control List, список управления доступом.
API#
Application Programming Interface, набор классов, процедур, функций, структур или констант, которыми одна компьютерная программа может взаимодействовать с другой программой.
CLI#
Command line interface, способ взаимодействия между человеком и компьютером путём отправки компьютеру команд, представляющих собой последовательность символов.
CPU#
Central Processing Unit, центральное обрабатывающее устройство.
DOCX#
Формат файла, который используется для создания и сохранения документов, созданных в программе обработки текстов Microsoft Word.
DVD#
Digital Video Disc, оптический носитель информации, в форме диска, для хранения различной информации в цифровом виде.
FQDN#
Группа полных доменных имён.
HAProxy#
Серверное программное обеспечение для обеспечения высокой доступности и балансировки нагрузки для TCP- и HTTP-приложений.
HTTP#
HyperText Transfer Protocol, протокол передачи информации в интернете.
HTTPS#
HyperText Transfer Protocol Secure, безопасный протокол передачи данных, который поддерживает шифрование посредством криптографических протоколов SSL и TLS и является расширенной версией протокола HTTP.
JSON#
JavaScript Object Notation, текстовый формат обмена данными, который используется для хранения данных и их передачи между различными системами и приложениями.
LDAP#
Lightweight Directory Access Protocol, протокол быстрого доступа к каталогам. Он позволяет получать и принимать через сеть данные из каталогов с иерархической структурой.
Linux#
Свободная операционная система с открытым исходным кодом.
MS AD#
Система управления доступом и идентичностью, разработанная компанией Microsoft для операционных систем Windows.
Microsoft Word#
Текстовый процессор, предназначенный для создания, просмотра, редактирования и форматирования текстов статей, деловых бумаг, а также иных документов.
NS#
Сервер имён.
Nginx#
Себ-сервер и почтовый прокси-сервер, работающий на Unix-подобных операционных системах.
OAuth 2.0#
Протокол авторизации, позволяющий выдать одному сервису (приложению) права на доступ к ресурсам пользователя на другом сервисе.
OIDC#
Протокол проверки подлинности удостоверений, который является расширением открытой проверки подлинности (OAuth) 2.0 и предназначен для стандартизации процесса проверки подлинности и авторизации пользователей при входе в систему для доступа к цифровым службам.
OS#
Сервер объектов
PDF#
Portable Document Format, формат файлов для надёжного представления и обмена документами, независимо от программного обеспечения, оборудования или операционной системы.
S3#
Simple Storage Service, сервис хранения цифровых данных большого объёма. Работает по одноимённому протоколу S3 и основан на API, разработанном в Amazon Web Services (AWS).
S3GW#
Наименование службы прокси-сервер Скала^р Спектр S3.
SIEM#
Security Information and Event Management, система управления информационной безопасностью и событиями безопасности.
SSH#
Secure Socket Shell, сетевой протокол для безопасного доступа к удалённым компьютерам и серверам.
SSL- сертификат#
Secure Sockets Layer, цифровой сертификат, который удостоверяет подлинность веб-сайта и позволяет использовать зашифрованное соединение.
TCP#
Transmission Control Protocol, протокол транспортного уровня, который обеспечивает надёжный обмен данными в компьютерных сетях. Он позволяет передавать информацию между устройствами и серверами с максимальной точностью и минимальными потерями.
TLS#
Transport Layer Security, безопасность транспортного уровня.
UDP#
User Datagram Protocol, протокол транспортного уровня, который не устанавливает постоянного соединения. Он отправляет данные в виде отдельных пакетов, называемых дейтаграммами.
USB#
Universal Serial Bus, последовательный интерфейс для подключения периферийных устройств к вычислительной технике.
XML#
eXtensible Markup Language, расширяемый язык разметки, предназначенный для хранения и передачи данных в структурированном виде.
gRPC#
Remote Procedure Call, открытый протокол удалённого вызова процедур (RPC), предоставляющий механизм взаимодействия между клиентскими и серверными приложениями на разных платформах и в разных языках программирования.
mTLS#
Mutual TLS, протокол, основанный на TLS с усиленной безопасностью, включающий дополнительную аутентификацию клиента с помощью сертификата.
openLDAP#
Облегчённый протокол доступа к службам каталогов, предназначенный для доступа к службам каталогов на основе X.500.
МХД.О#
Машина хранения данных.
ОС#
Операционная система.
ПО#
Программное обеспечение.
СУБД#
Система управления базами данных.
ФСТЭК#
Федеральная служба по техническому и экспортному контролю Российской Федерации.
Введение#
| Раздел обеспечения безопасности информации | Обеспечительные меры в ПО |
|---|---|
| Действия по приемке поставленного средства | Сведения о приемке представлены в п.п 3.2 |
| Действия по безопасной установке и настойке средства | Безопасная установка и настройка определена в п.п. 3.3.6 |
| Действия по реализации функций безопасности среды функционирования средства | Действия для реализации функций безопасности среды представлены в п.п. 3.3.3 |
Общие сведения и требования к системе#
Назначение системы#
Скала^р Спектр S3 (далее – Спектр S3/Изделие) представляет собой систему управления объектным хранилищем Машин Скала^р МХД.О со встроенными функциями безопасности.
Функции системы#
Изделие обеспечивает выполнение следующих функции безопасности:
-
идентификация и аутентификация пользователей S3;
-
идентификация и аутентификация привилегированных пользователей административного интерфейса;
-
управление идентификаторами и средствами аутентификации пользователей S3;
-
управление учётными данными пользователей S3;
-
ролевое управление доступом привилегированных пользователей в административный интерфейс;
-
разделение ролей привилегированных пользователей административного интерфейса;
-
дискреционное управление доступом пользователей S3;
-
запрет действий пользователей S3, разрешенных до идентификации и аутентификации;
-
регистрация действий привилегированных пользователей в административном интерфейсе (событий безопасности);
-
регистрация действий пользователей S3;
-
разделение пространств хранения (мультитенантность);
-
проксирование запросов пользователей S3.
Изделие обеспечивает выполнение следующих функций, не реализующих выполнение функций безопасности:
-
управление инфраструктурой;
-
отображение сводной информации о работе кластеров;
-
сжатие и распаковка объектов, сохраняемых в объектном хранилище;
-
управление лицензиями;
-
настройка параметров пользовательского веб-интерфейса;
-
управление балансировкой запросов между узлами хранения для обеспечения равномерной нагрузки;
-
проверка подписи запросов пользователей S3;
-
миграция и обновление базы данных;
-
управление и хранение сертификатов mTLS;
-
применение сертификатов TLS;
-
интеграция с внешней системой хранения секретов.
Структура системы#
Спектр S3 состоит из трех компонентов, которые взаимодействуют между собой по gRPC API:
-
s3gateway-control-service– осуществляет функции управления системой через веб интерфейс. -
s3gateway-proxy-service– получает и обрабатывает запросы, сформированные с использованием протокола S3, выполняет аутентификацию пользователей S3 и проверку списков контроля доступа. -
s3gateway-compression-service– осуществляет функции сжатия/распаковки объектов при загрузке и получении в/из хранилища.
Архитектура системы#
Спектр S3 реализуется на узлах с архитектурой x86-64. Для работы системы требуется использование современной высокопроизводительной СУБД PostgresPro Standard/Ent Cert.
Для публикации HTTP-интерфейсов системы рекомендуется использование веб-сервера Nginx. На сервере публикуются следующие пользовательские веб-интерфейсы:
-
Веб-интерфейс администрирования (административная консоль) – административный интерфейс, предназначенный для управления системой и настройки параметров системы в процессе эксплуатации.
-
Интерфейс API – административный интерфейс, предназначенный для управления системой.
Для интеграции с внешними приложениями в части предоставления услуги аутентификации на сервере выполняются службы, обеспечивающие программные интеграционные интерфейсы, доступные для внешних приложений:
- OIDC (OpenID Connect) – протокол для аутентификации, построенный поверх OAuth 2.0.
Установка и настройка сервера Спектр S3#
Системные и аппаратные требования#
Для работы с Спектр S3 необходимо выполнение следующих аппаратных и системных требований:
-
Требования к аппаратному окружению:
Компонент Минимальная конфигурация Процессор Dual CPU / 18xCore 2GHz+ Оперативная память 64 ГБ Жёсткий диск 50 ГБ Сетевой интерфейс 10 Гб/сек -
Требования к программному окружению:
Компонент Рекомендуемое окружение Операционная система РЕД ОС 7.3 Веб-сервер NGINX 1.26 СУБД PostgresPro Standard/Ent Cert 15 Балансировщик нагрузки HAProxy 2.9.9 Отказоустойчивость Keepalived 2.3.1
Приёмка изделия#
Перед установкой Спектр S3 необходимо убедиться, что:
-
комплектность Изделия соответствует комплектности поставки, указанной в настоящем руководстве или Формуляре;
-
на носителях информации, входящих в состав поставки, отсутствуют сколы, царапины, целостность этикеток и пломб не нарушены;
-
контрольные суммы дистрибутива соответствуют заявленным в Формуляре;
-
выполнить проверку подписи производителя на файле дистрибутива.
Комплект поставки#
Комплектность Изделия при физической поставке должна соответствовать комплектности, указанной в Формуляре. Комплект поставки Спектр S3 состоит из:
-
Скала^р Спектр S3. Дистрибутив в виде архива
S3Gateway-distrib-*.tar.gz– версия для ОС семейства Linux на USB-флеш накопителе или DVD-диске. -
Скала^р Спектр S3. Руководство пользователя на USB-флеш накопителе или DVD-диске.
-
Скала^р Спектр S3. Руководство администратора на USB-флеш накопителе или DVD-диске.
-
Скала^р Спектр S3. Формуляр в печатном виде.
-
Скала^р Спектр S3. Приложение 1 к Формуляру на USB-флеш накопителе или DVD-диске.
-
Заверенная копия выданного ФСТЭК России сертификата соответствия Системы сертификации средств защиты информации по требованиям безопасности информации в печатном виде.
-
Упаковка.
Комплектность Изделия при электронной поставке должна соответствовать комплектности, указанной в Формуляре. Комплект поставки Спектр S3 состоит из:
-
Скала^р Спектр S3. Дистрибутив в виде архива
S3Gateway-distrib-*.tar.gz– в электронном виде. -
Скала^р Спектр S3. Руководство пользователя в электронном виде.
-
Скала^р Спектр S3. Руководство администратора в электронном виде.
-
Скала^р Спектр S3. Формуляр в электронном виде.
-
Скала^р Спектр S3. Приложение 1 к Формуляру в электронном виде.
-
Заверенная копия выданного ФСТЭК России сертификата соответствия Системы сертификации средств защиты информации по требованиям безопасности информации в электронном виде.
На носителях информации, входящих в состав поставки, должны отсутствовать сколы, царапины, целостность этикеток и пломб не нарушена. Контрольные суммы дистрибутива на USB-флеш накопителе должны соответствовать заявленным в Формуляре.
Состав файлов дистрибутива#
В архиве S3Gateway-distrib-*.tar.gz содержится следующий набор файлов:
-
s3gateway-ostor-*– бинарный файл для выполнения стандартных команд Storage и Ostor для управления сервисом распределенного дискового массива и S3 и получения данных об их состоянии. -
s3gateway-core-*– основной бинарный файл Спектр S3. -
s3gateway-ui-*– бинарный файл для установки веб-интерфейса Изделия. -
version– файл версии Изделия. -
install.sh– скрипт установки компонентов Изделия. -
.gitkeep– служебный файл для отслеживания пустых директорий.
Проверка подписи дистрибутива#
Для проверки подписи следует запросить от разработчика основной архив дистрибутива и SIG-файл. Для проверки требуется наличие ПК с установленным программным обеспечением gpg.
Для проверки используется опция --verify. Если цифровая подпись отделена от файла, как в нашем случае, то после опции --verify следует указать два аргумента: вначале идёт файл с подписью, а затем подписанные данные:
gpg -u "Имя пользователя или компании" -b файл.sig файл
gpg --verify S3Gateway-distrib-1.1.0.1608-unvrsl-82.tar.gz.sig S3Gateway-distrib-1.1.0.1608-unvrsl-82.tar.gz
В случае успешной проверки подписи и данных ключа после результаты выполнения команду будут содержать строку «Good signature», например:
gpg: Signature made Mon Aug 12 12:03:51 2024 MSK
gpg: using RSA key 35F9E0E46879CF90317E85C560FA7A8683AC9E2D
gpg: issuer "support@skala-r.tech"
gpg: Good signature from "Skala^r Development Team <support@skala-r.tech>" [ultimate]
Действия по реализации безопасности среды функционирования#
Перед началом эксплуатации Изделия для всех компонентов среды функционирования должны быть установлены все актуальные обновления программного обеспечения, а также выполнены рекомендации разработчиков по безопасному конфигурированию, либо приняты меры по защите информации, нейтрализующие уязвимости.
Программная среда функционирования Изделия не должна содержать средств разработки и отладки ПО.
Каналы передачи данных (включая каналы управления), используемые Изделием, должны быть либо расположены в пределах контролируемой зоны и защищены с использованием организационно-технических мер, либо, в случае их выхода за пределы контролируемой зоны, должны быть защищены путём применения средств криптографической защиты информации, сертифицированных в системе сертификации ФСБ России.
Проверка контрольной суммы дистрибутива Спектр S3#
Проверка сохранности Спектр S3 осуществляется путем подсчета контрольной суммы файла дистрибутива Спектр S3 и сравнения их со значением контрольной суммы, указанной в Таблице 1 документа «Скала^р Спектр S3. Формуляр. RU.46968876450001.58.29.12-01 30 01».
Контрольные суммы рассчитываются по алгоритму «Уровень-3, программно» с использованием программы фиксации и контроля целостности информации «ФИКС-UNIX 1.0» (сертификат соответствия ФСТЭК России № 680 выдан 30.10.2002).
Для получение контрольных сумм с помощью программы фиксации и контроля целостности информации «ФИКС-UNIX 1.0» необходимо выполнить команду:
ufix_rus -e s3distr.txt
Здесь s3distr.txt — текстовый файл, содержащий перечень файлов для контрольного суммирования. Он должен содержать путь к файлу дистрибутива, например:
/root/S3Gateway-distrib-1.0.102277-unvrsl-122.tar
Для выпуска отчёта по рассчитанному проекту необходимо выполнить команду:
ufix_rus -h s3distr.prj
Далее необходимо сравнить полученное значение контрольной суммы с эталонным.
Проверка сохранности Спектр S3#
Проверка сохранности Спектр S3 осуществляется путем подсчета контрольных сумм файлов Изделия после установки и сравнения их с контрольными суммами, указанными в таблице КС исполняемых модулей, приведенной в Приложении 1 к «Скала^р Спектр S3. Формуляр. RU.46968876450001.58.29.12-01 30 01»
Контрольные суммы рассчитываются по алгоритму «Уровень-3, программно» с использованием программы фиксации и контроля целостности информации «ФИКС-UNIX 1.0» (сертификат соответствия ФСТЭК России № 680 выдан 30.10.2002).
Для получение контрольных сумм с помощью программы фиксации и контроля целостности информации «ФИКС-UNIX 1.0» необходимо выполнить команду:
ufix_rus -e s3.txt
Здесь s3.txt — текстовый файл, содержащий перечень файлов для контрольного суммирования. Он должен содержать следующие пути до неизменяемых файлов:
/opt/skala-r/s3gateway/migrator
/opt/skala-r/s3gateway/hwid-module
/usr/lib/systemd/system/s3gateway-compression-server.service
/usr/lib/systemd/system/s3gateway-control-server.service
/usr/lib/systemd/system/s3gateway-proxy-server.service
/usr/bin/s3cmp-server
/usr/bin/s3control-server
/usr/bin/s3proxy-server
/usr/bin/s3ostor-server
/usr/lib/systemd/system/s3gateway-ostor-server.service
Для выпуска отчёта по рассчитанному проекту необходимо выполнить команду:
ufix_rus -h s3.prj
Далее необходимо сравнить полученные значения контрольных сумм с эталонными. Они указаны в таблице КС исполняемых модулей, приведённой в Приложении 1 к «Скала^р Спектр S3. Формуляр. RU.46968876450001.58.29.12-01 30 01».
Установка в ОС семейства Linux#
Окружение#
В операционной системе перед выполнением развёртывания по текущей инструкции должны присутствовать следующие программы:
-
openssl– программа управления сертификатами; -
tar– программа архивирования; -
psql– CLI клиент из состава PostgresPro Standard/Ent Cert; -
nginx– веб-сервер; -
PostgresPro Standard/Standard Cert/Ent Cert – СУБД;
-
python– интерпретатор языка; -
haproxy– балансировщик; -
keepalived– отказоустойчивый кластер; -
zstd– программа сжатия данных; -
chrony– программа синхронизации времени.
| Примечание |
|---|
| Установка указанных программ выходит за границы текущей инструкции и описана в справочных руководствах, идущих в комплекте с операционной системой Linux, на которой производится развёртывание. |
Перед непосредственным выполнением действий из разделов 3.3.3 и далее, необходимо загрузить архив S3Gateway-distrib-*.tar.gz на сервер в домашнюю директорию пользователя root.
Предварительные настройки#
Проверка версии ядра ОС:
uname -r
| Внимание |
|---|
Если версия ядра ниже 6.1.52-1.el7.3.x86_64, необходимо произвести его обновление. |
Обновление ядра ОС:
dnf update -y
dnf install redos-kernels6-release -y
dnf makecache
dnf update -y
Выключение Selinux и смена профиля производительности:
sed -i "s/SELINUX=enforcing/SELINUX=permissive/" /etc/selinux/config
setenforce 0
tuned-adm profile throughput-performance
После установки параметров необходима перезагрузка сервера:
reboot
Настройка службы синхронизации времени:
cat > /etc/chrony.conf << EOF
server <Адрес сервера NTP> iburst
server <Адрес сервера NTP> iburst
# Record the rate at which the system clock gains/losses time.
driftfile /var/lib/chrony/drift
# Allow the system clock to be stepped in the first three updates
# if its offset is larger than 1 second.
makestep 1.0 3
# Enable kernel synchronization of the real-time clock (RTC).
rtcsync
# Specify file containing keys for NTP authentication.
keyfile /etc/chrony.keys
# Save NTS keys and cookies.
ntsdumpdir /var/lib/chrony
# Get TAI-UTC offset and leap seconds from the system tz database.
leapsectz right/UTC
# Specify directory for log files.
logdir /var/log/chrony
EOF
Перезапуск службы синхронизации времени:
systemctl restart chronyd.service
chronyc tracking
Настройка сервиса SSH:
cat > /etc/ssh/sshd_config.d/45-skala^r.conf << EOF
MACs hmac-sha2-512,hmac-sha2-256,umac-128@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha2-256-etm@openssh.com, umac-128-etm@openssh.com
EOF
Установка PostgresPro Standard/Ent Cert и Nginx:
dnf install postgrespro-std-15-server haproxy nginx -y
Настройка сервиса HAProxy:
mv /etc/haproxy/haproxy.cfg /etc/haproxy/haproxy.cfg_def
cat > /etc/haproxy/haproxy.cfg << EOF
global
chroot /var/lib/haproxy
pidfile /var/run/haproxy.pid
maxconn 524288
user haproxy
group haproxy
daemon
stats socket /var/lib/haproxy/stats
listen stats
bind :9000
stats enable
stats uri /haproxy_stats
stats realm Haproxy_Stats_Skala_edz0
stats auth admin:***
stats auth oper:***
stats admin if TRUE
mode http
log 127.0.0.1:514 local2
defaults
mode http
log global
option httplog
option dontlognull
option http-keep-alive
option redispatch
retries 3
timeout http-request 10s
timeout queue 1m
timeout connect 5s
timeout client 10s
timeout server 30s
timeout http-keep-alive 40s
timeout check 10s
timeout client-fin 1s
timeout server-fin 1s
maxconn 524288
EOF
Настройка HTTP-соединения:
cat > /etc/haproxy/conf.d/http.cfg << EOF
frontend http
bind 127.0.0.1:80
option http-server-close
default_backend s3
backend s3
balance static-rr
server s3_1 <ip address>:80 check
server s3_2 <ip address>:80 check
server s3_3 <ip address>:80 check
EOF
Настройка сбора статистики:
cat > /etc/haproxy/conf.d/stat.cfg << EO
frontend prometheus
bind :<интерфейс доступа к данным статистики>
mode http
http-request use-service rometheus-exporter
no log
EOF
Создание конфигурационного файла для lifecycle:
cat > /etc/haproxy/conf.d/lifecycle.cfg << EOF
frontend lifecycle
bind <адрес шлюза S3 из сети хранения (или указанной в проекте)>:90
option http-server-close
default_backend lifecycle-b
http-request deny if !{ src <сеть серверов хранения>/<маска сети хранения> }
backend lifecycle-b
balance static-rr
server s3_1 <ip address>:80 check
server s3_2 <ip address>:80 check
server s3_3 <ip address>:80 check
EOF
Запуск сервиса HAProxy:
/usr/sbin/haproxy -f
/etc/haproxy/haproxy.cfg -f
/etc/haproxy/conf.d/http.cfg -f
/etc/haproxy/conf.d/stat.cfg -c
systemctl enable --now haproxy.service
Настройка и запуск сервиса «PostgresPro Standard/Ent Cert»:
/opt/pgpro/std-15/bin/pg-setup initdb
systemctl enable postgrespro-std-15
systemctl status postgrespro-std-15
cat > /var/lib/pgpro/std-15/data/postgres.auto.conf << EOF
# Do not edit this file manually!
# It will be overwritten by the ALTER SYSTEM command.
# For pgbench test purpose
listen_addresses = '*'
max_connections = 1050
superuser_reserved_connections = 50
# Memory
huge_pages = 'on'
shared_buffers = 48GB
maintenance_work_mem = 2048MB
wal_buffers = 256MB
work_mem = 16MB
# IO
effective_io_concurrency = 200
random_page_cost = 1.1
# Checkpoint
checkpoint_completion_target = 0.9
min_wal_size = 4GB
max_wal_size = 128GB
# WAL
#wal_level = replica
#wal_log_hints = on
# Query tuning
max_worker_processes = 96
max_parallel_workers_per_gather = 4
max_parallel_workers = 72
effective_cache_size = 182GB # (RAM - shared_buffers - maintenance_work_mem * autovacuum_max_workers)
EOF
Изменение параметров ядра:
cat > /etc/sysctl.d/85-mhd.o.conf << EOF
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_timestamps = 1
kernel.pid_max = 4194303
fs.file-max = 9223372036854775807
vm.swappiness = 1
vm.vfs_cache_pressure = 100
vm.min_free_kbytes = 1000000
net.core.rmem_max = 268435456
net.core.wmem_max = 268435456
net.core.rmem_default = 67108864
net.core.wmem_default = 67108864
net.core.netdev_budget = 1200
net.core.optmem_max = 134217728
net.core.somaxconn = 65535
net.core.netdev_max_backlog = 250000
net.ipv4.tcp_rmem = 67108864 134217728 268435456
net.ipv4.tcp_wmem = 67108864 134217728 268435456
net.ipv4.tcp_low_latency = 1
net.ipv4.tcp_adv_win_scale = 1
net.ipv4.tcp_max_syn_backlog = 30000
net.ipv4.tcp_max_tw_buckets = 2000000
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_fin_timeout = 5
net.ipv4.udp_rmem_min = 8192
net.ipv4.udp_wmem_min = 8192
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.all.accept_redirects = 0
net.ipv4.conf.all.accept_source_route = 0
net.ipv4.tcp_mtu_probing = 1
EOF
Редактирование доступа к Postgres Pro:
-
Привести содержимое файла
/var/lib/pgpro/std-15/data/pg_hba.confк следующему виду:# TYPE DATABASE USER ADDRESS METHOD # "local" is for Unix domain socket connections only # local all all peer local s3gw s3gwuser md5 local all postgres trust # IPv4 local connections: # host all all 127.0.0.1/32 ident host s3gw s3gwuser 127.0.0.1/32 md5 -
Выполнить команду:
sysctl --system -
Перезапустить службу PostgreSQL:
systemctl restart postgrespro-std-15.service
Создание служебного пользователя для Спектр S3:
echo "CREATE USER s3gwuser WITH PASSWORD 's3gwuser';" | psql -U postgres
Создание базы данных для пользователя Спектр S3:
echo 'CREATE DATABASE s3gw OWNER s3gwuser;' | psql -U postgres
Развёртывание дистрибутива из архива#
Установка компонентов Спектр S3:
cd ~
tar -xf S3Gateway-distrib-*.tar.gz
cd ./distrib/files
dnf install ./rpm/s3gateway-*
Настройка модулей Спектр S3 заключается в приведении содержимого конфигурационного файла /opt/skala-r/s3gateway/s3gateway.config.json к виду, соответствующему используемой системе аутентификации и авторизации:
# Avanpost FAM
{
"cmp_settings": { # Настройки модуля компрессии, не требуют коррекции(без требований из карты инсоляции)
"compression_level": 3,
"numgrt": 16
},
"cluster": {
"storage_cluster_name": "mhdo", # имя кластера хранения по умолчанию
"storage_cluster_password": "P@$$w0rd", # пароль кластера хранения
"s3_cluster_ip_address": " ip_address ", # имя кластера s3(ostor)
"s3_cluster_password": "qwerty" # пароль кластера s3(ostor)
},
"compression": true, # true - включает поддержку модуля компрессии, false - отключает поддержку модуля компрессии
"compressor_grps_server": "localhost:5001", # адрес подключения к модулю компрессии
"db_connection": "postgres://s3gwuser:s3gwuser@127.0.0.1:5432/s3gw", # настройка подключения к системной базе данных
"hproxy_address": "127.0.0.1:80", # путь для подключения к сервису "Haproxy"
"iam_settings": {
"type": "Avanpost FAM" # тип используемой системы авторизации пользователей
"client_id": "id", # Пользователь для подключения к iam(Avanpost FAM
"client_secret": " secret ", # пароль от пользователя Avanpost FAM
"realm": "s3gateway", # имя области Avanpost FAM, выделенной для проекта "Спектр S3"
"url": "http://server-Avanpost FAM:8080", # путь для подключения к сервису Avanpost FAM
"use_resource_role_mappings": true, # назначение прав доступа на основе ролей. Внесение изменений не требуется, кроме отдельных случаев.
"skip_verify_ssl": true # отключение верификации ssl сертификата между сервером с ролью "Спектр S3" и сервисом Avanpost FAM
},
"ostor_grpc_servers": [ # список серверов хранения, в списке указывается путь подключения к сервису "s3gateway-ostor-server"
"storage-server#1:5002",
...
" storage-server#2:5002"
],
"proxy_ctl_grpc_server":"localhost:5003", # путь для подключения к сервису «s3proxy-server". Не требует настройки
"s3_admin": "Admin", # префикс в имени роли пользователя iam "Администратор" (в Avanpost FAM)
"s3_auditor": "Auditor", # префикс в имени роли пользователя iam "Аудитор"(в Avanpost FAM)
"ssl": {
"control_cert": "/opt/skala-r/s3gateway/ctl-cert.pem", # Путь к сертификату панели управления (web интерфейс)
"control_key": "/opt/skala-r/s3gateway/ctl-key.pem", # Путь к ключу панели управления (web интерфейс)
"proxy_cert": "/opt/skala-r/s3gateway/prx-cert.pem", # Путь к сертификату сервиса S3
"proxy_key": "/opt/skala-r/s3gateway/prx-key.pem" # Путь к ключу сервиса S3
},
"ttl": 120, # Время жизни данных в кэше сервиса "s3gateway-proxy-server"
"vision_url": "https://server-vision/vision/grafana/", # Путь для подключения к сервису мониторинга "Визион"
"rsyslog": {
"control_rsyslog_url": "127.0.0.1:514/tcp", # адрес внешнего/внутреннего сервиса rsyslog для сервиса s3gateway-control
"proxy_rsyslog_url": "127.0.0.1:514/tcp" # адрес внешнего/внутреннего сервиса rsyslog для сервиса s3gateway-proxy
},
"logger" : {
"control_facility": "local0", # адрес fasility для логирования событий сервиса s3gateway-control
"proxy_facility": "local0" # адрес fasility для логирования событий сервиса s3gateway-proxy
},
"role_separator": "." # символ разделитель в имени роли пользователя
}
# Avanpost FAM
{
"cmp_settings": { # Настройки модуля компрессии, не требуют коррекции(без требований из карты инсоляции)
"compression_level": 3,
"numgrt": 16
},
"cluster": {
"storage_cluster_name": "mhdo", # имя кластера хранения по умолчанию
"storage_cluster_password": "P@$$w0rd", # пароль кластера хранения
"s3_cluster_ip_address": " ip_address ", # имя кластера s3(ostor)
"s3_cluster_password": "qwerty" # пароль кластера s3(ostor)
},
"compression": true, # true - включат поддержку модуля компрессии, false - отключает поддержку модуля компрессии
"compressor_grps_server": "localhost:5001", # адрес подключения к модулю компрессии
"db_connection": "postgres://s3gwuser:s3gwuser@127.0.0.1:5432/s3gw", # настройка подключения к системной базе данных
"hproxy_address": "127.0.0.1:80", # путь для подключения к сервису "Haproxy"
"iam_settings": {
"type": "avanpost" # тип используемой системы авторизации пользователей
"client_id": "s3gtw-user", # пользователь для подключения к iam (FAM Avanpost), выделенной для проекта "Спектр S3"
"client_secret": " secret ", # пароль от пользователя FAM Avanpost, выделенной для проекта "Спектр S3"
"realm": "s3gateway", # имя области FAM Avanpost, выделенной для проекта "Спектр S3"
"url": "http:// server-Avanpost:8080", # путь для подключения к сервису FAM Avanpost
"skip_verify_ssl": true # отключение верификации ssl сертификата между сервером с ролью "Спектр S3" и сервисом FAM Avanpost
},
"ostor_grpc_servers": [ # список серверов хранения, в списке указывается путь подключения к сервису "s3gateway-ostor-server"
" storage-server#1:5002",
...
" storage-server#2:5002"
],
"proxy_ctl_grpc_server":"localhost:5003", # путь для подключения к сервису "s3proxy-server". Не требует настройки
"s3_admin": "Admin", # префикс в имени роли пользователя iam "Администратор" (в FAM Avanpost)
"s3_auditor": "Auditor", # префикс в имени роли пользователя iam "Аудитор" (в FAM Avanpost)
"ssl": {
"control_cert": "/opt/skala-r/s3gateway/ctl-cert.pem", # Путь к сертификату панели управления (web интерфейс)
"control_key": "/opt/skala-r/s3gateway/ctl-key.pem", # Путь к ключу панели управления (web интерфейс)
"proxy_cert": "/opt/skala-r/s3gateway/prx-cert.pem", # Путь к сертификату сервиса S3
"proxy_key": "/opt/skala-r/s3gateway/prx-key.pem" # Путь к ключу сервиса S3
},
"ttl": 120, # Время жизни данных в кэше сервиса "s3gateway-proxy-server"
"vision_url": "https://server-vision/vision/grafana/", # Путь для подключения к сервису мониторинга "Визион"
"rsyslog": {
"control_rsyslog_url": "127.0.0.1:514/tcp", # адрес внешнего/внутреннего сервиса rsyslog для сервиса s3gateway-control
"proxy_rsyslog_url": "127.0.0.1:514/tcp" # адрес внешнего/внутреннего сервиса rsyslog для сервиса s3gateway-proxy
},
"logger" : {
"control_facility": "local0", # адрес fasility для логирования событий сервиса s3gateway-control
"proxy_facility": "local0" # адрес fasility для логирования событий сервиса s3gateway-proxy
},
"role_separator": "." # символ разделитель в имени роли пользователя
}
Загрузка структуры базы данных:
cd /opt/skala-r/s3gateway/
/opt/skala-r/s3gateway/migrator
Запуск сервисов Спектр S3:
systemctl enable --now s3gateway-compression-server.service
systemctl enable --now s3gateway-proxy-server.service
systemctl enable --now s3gateway-control-server.service
Настройка сервиса Nginx#
Изменить настройки Nginx:
user nginx;
worker_processes auto;
error_log /var/log/nginx/error.log notice;
pid /run/nginx.pid;
worker_rlimit_nofile 65536;
include /usr/share/nginx/modules/*.conf;
events {
worker_connections 8192;
}
http {
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log /var/log/nginx/access.log main;
sendfile on;
tcp_nopush on;
keepalive_timeout 65;
types_hash_max_size 4096;
server_names_hash_max_size 2048;
server_names_hash_bucket_size 1024;
include /etc/nginx/mime.types;
default_type application/octet-stream;
include /etc/nginx/conf.d/*.conf;
}
EOF
Проверить конфигурацию nginx и запустить его:
nginx -t
systemctl enable --now nginx
Проверка установки#
Для проверки корректности установки системы необходимо открыть браузер и в строке ввести адрес.
Должна открыться страница аутентификации в административную консоль. После ввода реквизитов учётной записи пользователь должен получить доступ к административной консоли системы.
Для того, чтобы проверить версию установленного Спектр S3, необходимо подключиться на адрес UI Спектр S3 и перейти в раздел «Настройка», вкладка «Шлюз».
Установка компонента s3gateway-ostor-*#
Компонент s3gateway-ostor-* устанавливается на узлы хранения и служит для выполнения стандартных команд по управлению распределенным дисковым массивом. Он поставляется в архиве со всем дистрибутивом Спектр S3. Для его установки необходимо предварительного загрузить RPM-пакет на сервер хранения.
Установка s3gateway-ostor из домашней директории пользователя root:
dnf install -y s3gateway-ostor-*
Запуск сервиса s3gateway-ostor-server и проверка статуса:
systemctl enable --now s3gateway-ostor-server.service
systemctl status s3gateway-ostor-server.service
Интеграция с Avanpost FAM#
Avanpost FAM — система единой аутентификации, которая применяется для продуктов ПО Скала^р Визион, ПО Скала^р Геном, ПО Скала^р Спектр и Скала^р Спектр S3, входящих в состав машин Скала^р.
При помощи Avanpost FAM реализуются следующие функции:
-
аутентификация по протоколу OIDC;
-
управление пользователями (заведение, активация, деактивация);
-
разграничение доступа при помощи ролей;
-
парольная политика;
-
управление сессиями пользователей;
-
журналирование событий безопасности;
-
возможность интеграции с каталогами пользователей LDAP(s).
Подробное описание всех функциональных возможностей приведено в документации производителя .
Avanpost FAM предназначен для аутентификации привилегированных пользователей, осуществляющих эксплуатацию машин.
Серверы Avanpost FAM размещаются на виртуальных машинах Базового модуля.
В сетевой архитектуре машин Avanpost FAM размещается во внутренней сети управления и доступен только привилегированным пользователям.
Avanpost FAM предоставляет административный интерфейс для администраторов FAM и пользовательские интерфейсы для доступа привилегированных пользователей к продуктам ПО Скала^р Визион, ПО Скала^р Геном, ПО Скала^р Спектр и Скала^р Спектр S3, входящих в состав машин Скала^р.
Схема потоков Avanpost FAM приведена на рисунке ниже.
| Примечание |
|---|
Настройка сервисов, отмеченных знаком, *, в базовой конфигурации не производится. |
В таблице указаны назначения сетевых интерфейсов Avanpost FAM:
| Сетевой интерфейс | Назначение | Протокол | Порты по умолчанию |
|---|---|---|---|
| Web Auth UI | Аутентификация в веб-приложения, подключенные через OAuth/OpenID Connect, SAML, Reverse Proxy | HTTP/HTTPS | 80/443 |
| SelfService Web UI | Самообслуживание пользователей через веб-интерфейс личного кабинета | HTTP/HTTPS | 80/443 |
| Admin Web UI | Администрирование системы через веб-интерфейс административной консоли | HTTP/HTTPS | 80/443 |
| Metrics | Запросы на сбор метрик | HTTP/HTTPS | 80/443 |
В таблице указаны внешние обращения к сетевым интерфейсам со стороны компонента Avanpost FAM Server:
| Механизм | Назначение | Протокол | Порты по умолчанию |
|---|---|---|---|
| Syslog | Отправка сообщений через syslog | TCP/UDP | 514 |
| LDAP Sync | LDAP-синхронизация, LDAP-аутентификация | LDAP/LDAPs | 389/639 |
Базовая предварительно настроенная конфигурация.
Avanpost FAM интегрирован со Спектр S3. В базовой конфигурации настроены соответствующие приложения, роли и локальные группы Avanpost FAM, парольная политика, локальный суперпользователь с логином skala.
Административный интерфейс Avanpost FAM доступен по адресу:
https://<IP-адрес сервера avantpost fam>:<port>
Учётные данные суперпользователя Avanpost FAM:
-
логин:
skala; -
пароль:
P@$$w0rd.
В качестве метода аутентификации установлен метод с использованием пароля с локальной базой данных в Avanpost FAM. В случае необходимости применения LDAP-каталогов (MS AD, OpenLDAP и др.) либо дополнительных методов аутентификации, необходимо произвести дополнительную настройку по инструкции .
Роли Avanpost FAM в базовой конфигурации приведены в таблице:
| Наименование ПО | Наименование приложения в Avanpost FAM | Роль | Имя локальной ролевой группы Avanpost FAM |
|---|---|---|---|
| Скала^р Спектр S3 | s3gateway |
Администратор | Admin |
| Скала^р Спектр S3 | s3gateway |
Аудитор | Auditor |
| Скала^р Спектр S3 | s3gateway |
Администратор тенанта | TenantAdmin |
| Скала^р Спектр S3 | s3gateway |
Аудитор тенанта | TenantAuditor |
Пользователи Avanpost FAM в базовой конфигурации приведены в таблице:
| Наименование ПО | Роль пользователя | Логин | Пароль | Ролевая группа в Avanpost FAM |
|---|---|---|---|---|
| Avanpost FAM | Локальный суперпользователь | skala |
P@$$w0rd |
adminconsole |
| Скала^р Спектр S3 | Администратор Спектр S3 | skala |
P@$$w0rd |
Admin |
Парольная политика по умолчанию.
В ПО Avanpost FAM пред настроена политика по умолчанию с следующими параметрами:
-
шифрование пароля – вкл;
-
количество измененных символов: старый/новый пароль – 0;
-
минимальный срок жизни пароля – 1 день;
-
максимальный срок жизни пароля – 42 дня;
-
вести журнал паролей – вкл;
-
размер журнала паролей – 24;
-
минимальная длина пароля – 8;
-
максимальная длина пароля – 14;
-
пароль должен содержать цифры – вкл;
-
пароль должен содержать буквы в нижнем регистре – вкл;
-
пароль должен содержать буквы в верхнем регистре – вкл;
-
пароль должен содержать специальные символы – вкл;
-
блокировка пользователя при неправильном вводе пароля – да;
-
максимальное количество попыток ввода пароля – 3;
-
время блокировки пользователя – 1 день;
-
проверять пароль в черном списке – да;
-
срок действия ссылки для активации/восстановления пароля – 15 мин;
-
показывать капчу при вводе неверного пароля – нет.
Общий алгоритм настройки Avanpost FAM для предоставления доступа к Спектр S3.
Необходимо:
-
Войти в административный интерфейс Avanpost FAM. Добавить конфигурацию для приложения через пункт «Добавить приложение».
-
В конфигурации приложения указать параметры интеграции.
-
В конфигурации приложения указать параметры области.
-
Сконфигурировать ролевую модель доступа (создать группы, создать роли, настроить соответствия для созданных групп и ролей).
-
Создать пользователей, установить пароли.
-
Назначить роли пользователям посредством включения их в соответствующие группы.
Ролевая модель Спектр S3#
Ролевой метод управления доступом реализован для административного интерфейса для следующих ролей привилегированных пользователей: администратор инфраструктуры, администратор тенанта, аудитор инфраструктуры, аудитор тенанта.
Изделие имеет следующий набор полномочий для ролей в административном интерфейсе:
-
Администратор инфраструктуры:
-
управлять конфигурацией кластера;
-
конфигурировать параметры тенанта;
-
просматривать журнал действий привилегированных пользователей административном интерфейсе, для всех тенантов;
-
создавать тенанты;
-
удалять тенанты;
-
создавать роль администратора тенанта, аудитора тенанта (автоматически, при создании тенанта);
-
удалять роль администратора тенанта, аудитора тенанта (автоматически, при удалении тенанта);
-
просматривать журнал аудита системы.
-
-
Аудитор инфраструктуры:
-
просматривать конфигурацию кластера;
-
просматривать параметры тенанта;
-
просматривать журнал аудита системы.
-
-
Администратор тенанта:
-
просматривать параметры тенанта;
-
создавать корзины в назначенном тенанте;
-
удалять корзины в назначенном тенанте;
-
конфигурировать параметры корзины в назначенном тенанте;
-
создавать учетные записи пользователей корзины (пользователей S3);
-
модифицировать, блокировать и удалять учетные записи пользователей S3;
-
назначать права доступа пользователям S3 к корзине;
-
просматривать журнала аудита доступного тенанта.
-
-
Аудитор тенанта:
-
просмотр списка учетных записей пользователей;
-
просматривать параметры корзины в назначенном тенанте;
-
просматривать журнал аудита доступного тенанта.
-
Матрица доступа привилегированных пользователей в административном интерфейсе приведена в таблице:
| Полномочие | Администратор инфраструктуры | Аудитор инфраструктуры | Администратор тенанта | Аудитор тенанта |
|---|---|---|---|---|
| Управление конфигурацией кластера | R/W | R | ||
| Управление тенантами (создание и удаление) | R/W | |||
| Конфигурирование параметров тенанта | R/W | R | R | |
| Управление корзинами (создание и удаление) в доступном ненанте | R/W | |||
| Конфигурирование корзины (наименование, квота скорости, квота объёма, владелец, сжатие объектов) | R/W | R | ||
| Управление учётными записями пользователей S3 | R/W | R (просмотр списка пользователей) | ||
| Список управления доступом к корзине в доступном тенанте | R/W | R | ||
| Журнал аудита системы | R | R | ||
| Журнал аудита тенанта | R (доступных тенантов) | R (доступных тенантов) |
Изделие имеет функцию отображения уровня доступа (видимость перечня назначенных ролей) в административном интерфейсе.
Роли Администратора инфраструктуры и Аудитор инфраструктуры содержат зафиксированный перечень полномочий и неизменяемы в Изделии.
Роли Администратора инфраструктуры и Аудитор инфраструктуры создаются при инсталляции Изделия.
Роли Администратор тенанта и Аудитор тенанта имеют фиксированный перечень полномочий и создаются автоматически для каждого тенанта, при его создании.
Изделие обеспечивает реализацию назначения ролей Администратор тенанта и Аудитор тенанта посредством интеграции с программным обеспечением «Аванпост FAM» (сертификат соответствия ФСТЭК № 4492 выдан 13.12.2021).
Спектр S3#
Подключение к интерфейсу управления Спектр S3 выполняется по установленному в процессе настройке адресу по протоколу HTTPS. При обращении к Спектр S3 осуществляется перенаправление к интерфейсу аутентификации Avanpost FAM. В котором необходимо ввести логин и пароль пользователя, зарегистрированного в Avanpost FAM.
Общий вид меню Спектр S3 представлен на рисунке:
Назначение областей:
-
Меню аудита системы.
-
Меню управления кластером.
-
Меню выбора тенанта и управления текущим тенантом.
-
Меню общих настроек Спектр S3.
-
Меню рабочей области.
-
Рабочая область.
-
Информация о текущем пользователе и его ролях.
Спектр S3 обеспечивает возможность создание тенантов. Под тенантом подразумевается выделенное логическое пространство, реализующее сервис хранения данных с доступом по протоколу S3 со следующими уникальными параметрами:
-
FQDN;
-
уровень отказоустойчивости;
-
уровень хранения;
-
уровень избыточности;
-
SSL сертификат;
-
состав администраторов;
-
пространство имен пользователей;
-
пространство имен корзин (bucket);
-
пространство имен объектов.
Создание тенанта#
Создание нового тенанта доступно только для роли администратора кластера.
Для создания нового тенанта необходимо:
-
Нажать на поле отображения имени текущего тенанта.
-
Нажать кнопку Создать, находящуюся внизу выпадающего списка.
-
Заполнить форму с параметрами настройки тенанта:
-
FQDN;
-
количество NS;
-
количество OS;
-
количество S3GW;
-
уровень отказоустойчивости;
-
уровень хранения;
-
уровень избыточности;
-
протокол доступа к тенанту;
-
комментарии;
-
SSL сертификат.
-
-
Нажать кнопку Сохранить.
FQDN
В поле FQDN задаётся доменное имя сервиса S3, который будет размещаться в создаваемом тенанте. Задаваемое имя должно соответствовать правилам формирования доменного имени и правилам, определенным в документе “Правила регистрации доменных имен в доменах .RU и. РФ” (утв. решением Координационного центра национального домена сети Интернет от 05.10.2011 N 2011-18/81) (ред. от 07.11.2022).
Примеры корректных записей FQDN:
example@company.com
cert@skala.ru
Примеры не корректных записей FQDN:
example.company.com
example@company-ru
cert-skala.ru
Количество NS
Служба NS – сервер имён. Хранит метаданные об объектах, полученные от службы S3GW. Метаданные включают имя объекта, его размер, список контроля доступа (ACL), расположение, владельца и др. Сервер имен также хранит свои собственные данные на распределенном дисковом массиве со встроенной функцией высокой доступности.
Количество служб NS для одного тенанта не может превышать 64-х. Не следует выбирать максимальное количество служб во всех случаях, т.к. неиспользуемые службы будут расходовать ресурсы. Количество служб NS необходимо задавать исходя из количества корзин (Таблица 8), которое планируется создавать в тенанте.
Расчёт служб NS:
| Планируемое количество корзин | Количество служб NS |
|---|---|
| 1-100 | 32 |
| 101-10000 | 32 |
| > 10001 | 64 |
Необходимо учитывать, что распределение корзин между NS осуществляется по первому символу в названии корзины. Весь алфавит равномерно распределяется между созданными, при создании тенанта, службами NS. Вновь созданная корзина прикрепляется для обслуживания службе NS, «отвечающей» за соответствующую букву алфавита, с которой начинается название создаваемой корзины. В этой связи для обеспечения равномерной нагрузки на службы NS, желательно соблюдать следующие правила:
-
Создавать корзины с именами, начинающимися с разных букв алфавита.
-
Не записывать все объекты в единственную корзину, а распределять их по нескольком корзинам. В этом плане использование «папок» в корзине является менее предпочтительным, чем создание нескольких корзин.
Количество OS
OS – сервер объектов. Хранит актуальные данные объектов, полученные от службы S3GW. Сервер объектов хранит свои собственные данные на распределенном дисковом массиве со встроенной функцией высокой доступности.
Количество служб OS для одного тенанта не ограничивается и определяется количеством узлов хранения и нагрузкой на тенант.
Расчёт служб OS:
| Нагрузка, создаваемая тенантом на узел хранения от расчётной | Количество служб OS на узел хранения |
|---|---|
| До 10% | 2 |
| 11-30% | 4 |
| 31-60% | 7 |
| 61-100% | 10 |
Общее число служб, которое необходимо ввести в поле, получается умножением значения из таблицы на количество узлов хранения в кластере.
Количество S3GW
S3GW – прокси-сервер между службами объектного хранилища и пользователями. Он получает и обрабатывает запросы протокола S3, выполняет аутентификацию пользователей S3 и проверку ACL, он не сохраняет данные о запросах.
Алгоритм выбора количества служб S3GW идентичен аналогичному алгоритму для служб OS.
В дальнейшем кол-во служб S3GW может быть увеличено через меню Параметры в меню выбора тенанта.
Уровень отказоустойчивости
Уровень отказоустойчивости определяет домен отказоустойчивости – область хранения, которая может содержать только одну копию данных. Потеря одного домена отказоустойчивости, например, из-за аппаратного сбоя, не приведет к потере данных. Доступно 4 варианта доменов отказоустойчивости:
-
Диск.
-
Сервер.
-
Стойка.
-
Ряд стоек.
Уровень хранения
В состав кластера могут входить узлы хранения с разными типами накопителей, отличающихся емкостью и производительностью. На базе каждого типа дисков реализуется независимая область хранения с показателями емкости и производительности, определяемой типами накопителей. При создании тенанта необходимо выбрать номер области хранения (Уровень хранения), на которую, по умолчанию, будут записываться объекты в создаваемом тенанте.
Уровень избыточности
Уровень избыточности определяет технологию хранения данных, которая будет использоваться для создаваемого тенанта.
Значения вариантов значений количества реплик, предлагаемых к выбору в окне «Репликация хранилища» зависят от количества узлов хранения в кластере.
Протокол доступа к тенанту
По умолчанию выбрать можно только защищенный протокол доступа HTTPS.
Комментарии
В комментарии необходимо указать данные информационного характера, например о владельце/пользователе тенанта.
SSL сертификат
Необходимо выбрать какой тип сертификата будет использоваться для работы HTTPS протокола. При выборе «Загрузить» будет предложено загрузить сертификат и ключ, сформированные внешним удостоверяющим центром.
Необходимо отметить, что Спектр S3 позволяет использовать для каждого отдельного тенанта как один и тот же сертификат, так и уникальные сертификаты.
В случае, если в дальнейшем предполагается использовать тенант в режиме гео-репликации, необходимо использовать вариант с загрузкой SSL сертификата. Георепликация не может быть настроена при использовании самоподписанных сертификатов.
Роли для доступа к тенанту#
При создании тенанта формируется возможность доступа к Скала^р Спектр S3 пользователей, являющихся администраторами созданного тенанта. Для этого необходимо создать роли со следующими названиями:
-
TenantAdmin_<FQDN имя тенанта>– администратор тенанта; -
TenantAuditor_<FQDN имя тенанта>– аудитор тенанта.
Для использования этих ролей они должны быть заведены в Avanpost FAM, после чего могут быть присвоены пользователю, зарегистрированному в Avanpost FAM.
Управление тенантом#
Управление тенантом доступно только для пользователя с ролью TenantAdmin_<FQDN имя тенанта>, где <FQDN имя тенанта> — имя тенанта, которым планируется управлять.
Функции управления тенантом расположены в боковом меню управления. К числу таких функций относятся:
-
«Пользователи» - управление пользователями.
-
«Корзины» - управление корзинами.
-
«Аудит тенанта» - аудита операций администраторов тенанта.
-
«Параметры» - изменение параметров тенанта.
Управление пользователями#
В разделе управления пользователями выполняется управление непривилегированными пользователями. Управление привилегированными пользователями осуществляется через Avanpost FAM.
Для начала работы с данными по протоколу S3 необходимо создать непривилегированных пользователей S3. Для этого следует:
-
В главном меню «Скала^р Спектр S3» выбрать пункт «Пользователи».
Внимание При первом запуске на странице не будут отображаться пользователи, если Спектр S3 используется впервые. -
Нажать кнопку Добавить.
-
Заполнить форму Добавление пользователя.
Логин пользователя указывается в формате адреса электронной почты.
При создании можно указать квоту на количество создаваемых корзин. Квота означает максимальное количество корзин, которые может создать этот пользователь для работы с ними по протоколу S3. В случае если количество не будет задано вручную, будет использовано значение, установленное по умолчанию для тенанта. Значение по умолчанию для тенанта определяет, какое количество корзин будет иметь каждый создаваемый в рамках этого тенанта пользователь.
-
Нажать кнопку Сохранить.
При успешном создании пользователя будет показано диалоговое окно с полями Access key и Secret key. Значения этих полей необходимо скопировать и передать пользователю.
Данные из поля Secret key доступны только при создании пользователя или при повторной генерации Access key. В случае закрытия диалогового окна увидеть этот Secret key будет невозможно.
У каждого пользователя может быть по две пары Access key и Secret key. Для создания второй пары необходимо нажать на надпись Добавить ключ. При нажатии на отображаемый Access key будет предложено выполнить операции обновления Secret Key или удаления пары ключей.
При нажатии кнопки «Отозвать» выполняется удаление Access key, для которого было запрошено это действие.
Выполнение операции удаления пары ключей пользователя закончится ошибкой, если в момент удаления пользователь является владельцем корзины (корзина создана пользователем). При нажатии кнопки Обновить выполняется генерация нового Secret key.
На форме списка пользователей расположен переключатель, изменяющий статус зарегистрированного пользователя между Активен и Неактивен.
В случае если пользователь не активен, действие его Access key и Secret key временно приостанавливается, и он теряет возможность использовать сервисы S3. Это позволяет временно прекратить доступ пользователя без его удаления.
Значок в виде мусорной корзины служит для удаления пользователя, при этом выполняется удаление учетной записи пользователя, включая адрес электронной почты, и пары Access key и Secret key, сформированные ранее для этого пользователя.
Выполнение операции удаления пользователя закончится ошибкой, если в момент удаления пользователь является владельцем корзины (корзина создана пользователем). Для успешного удаления пользователя необходимо предварительно удалить корзины, созданные пользователем, или назначить им другого владельца.
Управление корзинами#
В меню Корзины отображаются все созданные в хранилище S3 корзины.
Создание новой корзины#
При использовании кнопки Добавить появляется диалоговое окно создания новой корзины.
В поле Название надо ввести имя новой корзины, удовлетворяющее следующим требованиям:
-
должно содержать не менее 3 и не более 63 знаков;
-
состоит только из строчных букв латинского алфавита, цифр, точек (.) и дефисов (-);
-
начинается и заканчивается буквой или цифрой;
-
не содержать две смежные точки;
-
не отформатирован как IP-адрес (например, 192.168.5.4);
-
не начинается с префикса xn–;
-
не заканчивается суффиксом -s3alias;
-
не заканчивается суффиксом –ol-s3;
-
является уникальным для выбранного тенанта.
В поле Квота скорости, Мбайт/с может быть введено значение, ограничивающее скорость информационного обмена при обращении пользователей к корзине.
В поле Квота объема, Гбайт может быть введено значение, ограничивающее максимальный суммарный объем дискового пространства, который может быть занят корзиной.
Значение квот может быть отредактировано в дальнейшем.
В поле Владелец должен быть указан непривилегированный пользователь, заведенный в тенанте, где создается корзина. Привилегированный пользователь, имеющий права администратора, не может быть владельцем корзины.
Флаг Включить сжатие объектов активирует функцию сжатия объектов на лету для всех объектов, записываемых в корзину. Эту функцию целесообразно использовать при хранении объектов типа XML или JSON, которые могут сжиматься до 20 раз. Сжатие файлов PDF, DOCX и т.п. как правило не превышает 15%. Использовать сжатие для объектов, включающих графические и видео материалы, не целесообразно.
Для редактирования параметров корзины используется контекстное меню, которое вызывается по нажатию кнопки [⋮] и содержит следующие пункты:
-
Редактировать.
-
Безопасность.
-
Удалить корзину.
Редактирование корзины#
При выборе пункта меню Редактировать появляется диалоговое окно, в котором приведены заданные для корзины параметры настроек и владелец.
| Внимание |
|---|
| Если ранее квоты не устанавливались, соответствующие поля будут пустыми. |
Необходимо ввести требуемые значения квот и применить их.
Уменьшение квот по объему хранимых объектов необходимо выполнять с осторожностью, т.к. если объем хранимых данных превысит заданную квоту, пользователи потеряют возможность записывать в корзину новые объекты.
Поле Владелец работает в режиме поиска и выбора из списка зарегистрированных в тенанте пользователей.
В случае включения функции сжатия после того, как в корзину были помещены объекты, сжиматься будут только вновь записываемые объекты. Уже сохраненные объекты останутся без изменения.
При отмене сжатия, все вновь сохраняемые объекты сжиматься не будут. Ранее сохраненные объекты останутся сжатыми.
Безопасность#
При выборе пункта меню Безопасность появляется диалоговое окно, в котором отображены все установленные на корзину правила доступа.
В первой строке отображается владелец корзины.
Можно удалить существующие правила доступа, либо создать новое правило, нажав на кнопку Редактировать.
Для каждой корзины может быть создано не более 100 правил, при этом обращаем внимание, что правило, определенное каждым флагом (если он выбран) сохраняется как отдельное правило.
Удаление корзин#
При выборе пункта меню Удалить корзину она безвозвратно удаляется со всем содержимым.
При удалении корзины процесс вызывается через системную утилиту, что позволяет удалять не пустые корзины. Через API S3 корзину с объектами удалить нельзя без указания специальных ключей.
Аудит действий тенанта#
В меню Аудит тенанта отображаются действия, выполняемые администратором выбранного тенанта.
Регистрируемые события для тенанта приведены в таблице:
| Объект | Действие | Включение отладочного режима |
|---|---|---|
| Корзина | Получение списка корзин | Да |
| Создание корзины | ||
| Удаление корзины | ||
| Обновление корзины | ||
| Пользователь | Получение списка пользователей | Да |
| Получение пользователя | Да | |
| Создание пользователя | ||
| Удаление пользователя | ||
| Изменение пользователя | ||
| ACL | Получение списка ACL | Да |
| Изменение безопасности корзины | ||
| Ключи | Генерация ключей для пользователя | |
| Отзыв ключа пользователя | ||
| Обновление ключа пользователя | ||
| Логи | Запрос логов | Да |
Аудит действий системы#
В меню Аудит системы отображаются действия, выполняемые пользователями с системой.
Регистрируемые события для системы приведены в таблице:
| Объект | Действие | Включение отладочного режима |
|---|---|---|
| Кластер | Получение списка доступных уровней тенанта | Да |
| Получение списка серверов | Да | |
| Получение списка сетевых интерфейсов | Да | |
| Изменение сервера | ||
| Получение списка дисков | Да | |
| Добавление роли диска | ||
| Изменение диска | ||
| Удаление роли диска | ||
| Удаление журнала записей | ||
| Пользователь | Авторизация пользователя | |
| Выход из системы | ||
| Лицензия | Установка лицензии | |
| Логи | Запрос логов | Да |
| Тенант | Получение списка тенантов | Да |
| Создание тенанта | ||
| Получение тенанта | Да | |
| Изменение тенанта | ||
| Удаление тенанта | ||
| Изменение режима работы с mTLS |
Кроме веб-интерфейса «Скала^р Спектр S3», также просмотр лог-файлов сервисов «Скала^р Спектр S3» доступен через консоль управления ОС.
Настройка параметров логирования осуществляется в конфигурационном файле /opt/skala-r/s3gateway/s3gateway.config.json, в котором:
-
proxy_log_path— путь к файлу для записи логов прокси; -
control_log_path— путь к файлу для записи логов модуля управления; -
rsyslog_url— URL сервера rsyslog в форматеhost:port; -
log_period_sec— периодичность записи логов прокси сервера в секундах.
Настройка ротации логирования#
В файле конфигурации /etc/logrotate.d/skala-s3gw возможно изменение параметров ротации событий в журналах.
В примере ниже продемонстрирована настройка ротации через 93 дня для proxy.log:
/var/log/skala-s3gw/proxy.log {
create 0640 s2gw_endpoint s3gw
daily
rotate 93
missingok
notifempty
}
Параметр daily указывает на ежедневную архивацию файла лога.
Отправка логов во внешние SIEM-системы
Логи прокси сервера и модуля управления имеют возможность отправляться во внешние системы.
Настройка осуществляется в файле /opt/skala-r/s3gateway/s3gateway.config.json.
Пример заполнения секции rsyslog:
{
"rsyslog": {
"control_rsyslog_url": "127.0.0.1:514/tcp",
"proxy_rsyslog_url": "127.0.0.1:514/udp"
}
}
Имеется возможность соединения по TCP/UDP.
Для применения изменений необходимо перезапустить соответствующие компоненты.
При успешном соединении с proxy_rsyslog_url во время перезапуска прокси сервера будет выведено:
connection to rsyslog is established
Соединение с control_rsyslog_url для модуля управления проверяется при каждом логируемом действии. В случае ошибки выводится:
failed connect to rsyslog
Изменение параметров тенанта
Изменение параметров тенанта возможно от имени пользователя с ролью Администратор инфраструктуры. Для удаления тенанта надо выбрать его имя и войти в меню Параметры.
Параметры, значение которых можно изменить отмечены иконкой с изображением карандаша.
-
FQDN – меняется доменное имя сервиса S3, реализуемого в рамках тенанта.
-
Настройка mTLS – позволяет управлять авторизацией пользователя средствами mTLS.
-
Квоты пользователей – позволяет установить значение по умолчанию для всех пользователей тенанта и разрешить или запретить пользователям изменять значение самостоятельно.
-
Сертификат – позволяет загрузить сертификат для FQDN-имени тенанта.
-
Количество S3GW – меняет количество сервисов GW, отвечающих за производительность сервиса S3 тената при большом количестве одновременных операций. Обратите внимание, что здесь общее кол-во служб S3GW, которые создаются для текущего тенанта на всех узлах хранения кластера.
-
Репликация хранилища – меняет количественный состав реплик. Необходимо использовать с осторожностью, т.к., например, при увеличении количества требуемых реплик с 2-х до 3-х потребует дополнительного дискового пространства и может привести к недоступности тенанта.
Удаление тенанта#
Удаление тенанта возможно от имени пользователя с ролью Администратор инфраструктуры и только после того, как пользователь с ролью Администратор тенанта удалил все корзины и пользователей.
Для удаления тенанта надо выбрать его имя и войти в меню Параметры.
Матрица сетевых доступов#
Порты и назначение внутренних и внешних взаимодействий приведены в таблицах.
Сетевые взаимодействия узлов балансировки:
| Порт | Направление | Сервис |
|---|---|---|
| 22 | Входящий | SSH |
| 443 | Входящий | S3 API |
| 514 | Входящий | rsyslog Визион |
| 5432 | Входящий | СУБД PostgreSQL |
| 6006 | Входящий | Web UI Спектр S3 |
| 7001 | Входящий | Мониторинг сервиса компрессии в формате Prometheus Exporter |
| 8443 | Входящий | Web UI и API Keycloak |
| 4443 | Входящий | Web UI и API Avanpost FAM — опциональный порт для варианта с Avanpost |
| 50888 | Входящий | Web UI Геном |
| 8000-8999 | Исходящий | Передача запроса на обработку в ПО «Киберпротект» и получение ответов |
Сетевые взаимодействия кластера хранения:
| Порт | Направление | Сервис |
|---|---|---|
| 22 | Входящий | SSH |
| 5002 | Входящий | gRPC, запуск CLI-команд ostor и storage |
| 7002 | Входящий | Метрики мониторинга в формате Prometheus Exporter |
| 8000-8999 | Входящий | Передача запроса на обработку в ПО «Киберпротект» и получение ответов |
| 9601 | Входящий | Метрики мониторинга shaman в формате Pormetheus Exporter |
| 30000-65535 | Входящий | Динамически назначаемые порты для мониторинга компонентов Кибер Инфраструктуры в формате Prometheus Exporter |
Дополнительные сетевые взаимодействия:
| Порт | Направление | Сервис |
|---|---|---|
| 5002 | gRPC | Передача управляющих воздействий |
| Выполнение стандарных команд Storage и Ostor для управления сервисом распределенного дискового массива и S3 и получения данных об их состоянии. | ||
| Запуск CLI команд в Storage и получение результатов их выполнения | ||
| Запуск CLI команд в OSTOR и получение результатов их выполнения | ||
| Передача данных объекта в модуль сжатия на базе ZSTD и получения обратно результата обработки | ||
| 443 | HTTPS REST API | Передача управляющих команд из UI |
| Отправка запросов пользователей к сервису S3 и получение ответов. | ||
| 5432 | Авторизация в СУБД | Запись и получение данных о настройках: |
| тенантов; | ||
| access key пользователей; | ||
| созданных корзинах; | ||
| правах доступа | ||
| 80 | HTTP | Передача запросов S3 к узлам хранения с балансировкой между узлами хранения |
| 6006 | TLS | Доступ в UI |
Вызовы управляющих функций на s3gateway-control-service из UI |
||
| 8000-8999 | HTTP | Передача запроса на обработку в ПО Киберпротект и получение ответов |
| 5001 | TCP/UDP | Сбор данных системой мониторинга |
| 7001 | TCP/UDP | Мониторинг сервиса компрессии |
| 7002 | TCP/UDP | Мониторинг серверов хранения |
Обновление Спектр S3#
| Внимание |
|---|
Перед началом процедуры обновления Спектр S3 необходимо убедиться в наличии обновленных дистрибутивов Спектр S3 и архива с новой версией, расположенного в /root на серверах хранения и Спектр S3. |
Порядок обновление выносного компонента s3gateway-ostor-server
Для обновления выносного компонента s3gateway-ostor-server необходимо:
-
На серверах хранения остановить и удалить из автозагрузки службу
s3gateway-ostor-server:systemctl stop s3gateway-ostor-server.service systemctl disable s3gateway-ostor-server.service -
Удалить
s3gateway-ostor-server:dnf remove -y s3gateway-ostor -
Установить новую версию
s3gateway-ostor-server:cd /root tar -xf S3Gateway-distrib-*.tar.gz dnf install -y /root/distrib/files/rpm/s3gateway-ostor-*.rpm -
На серверах хранения включить и добавить в автозагрузку службу
s3gateway-ostor-server:systemctl enable --now s3gateway-ostor-server.service systemctl status s3gateway-ostor-server.service
Для обновления Спектр S3 необходимо:
-
Убедиться, что сервер не является MASTER в случае с настроенным и работающим keepalived:
pid=$(cat /var/run/keepalived.pid 2>/dev/null) [[ $? -eq 0 ]] || { printf 'no keepalived running\n' >&2; exit 0; } kill -USR1 $pid grep -E 'VRRP Instance|State' /tmp/keepalived.dataЕсли сервер является BACKUP, вывод команды будет иметь следующий вид:
VRRP Instance = skala-r.MDH.o State = BACKUP State = idle State = UP, RUNNING, no broadcase, loopback, no multicast State = UP, RUNNING -
Создать резервную копию каталога приложения и nginx:
cp -ra /opt/skala-r/s3gateway /opt/skala-r/s3gateway_<version> cp -ra /etc/nginx/ssl/ /etc/nginx/ssl_<version>Вместо
<version>следует подставить номер текущей установленной версии. -
Остановить и отключить службы
s3gatewayна сервере:systemctl stop s3gateway-control-server.service systemctl stop s3gateway-compression-server.service systemctl stop s3gateway-proxy-server.service systemctl disable s3gateway-control-server.service systemctl disable s3gateway-compression-server.service systemctl disable s3gateway-proxy-server.service -
Удалить предыдущую версию s3gateway:
dnf remove s3gateway-core.x86_64 s3gateway-ui.x86_64 rm -fr /opt/skala-r/s3gateway systemctl reload nginx.service -
Установить новую версию:
cd /root tar -xf S3Gateway-distrib-*.tar.gz cd /root/distrib/files/rpm dnf install s3gateway-ui-*.rpm s3gateway-core-*.rpm -
Вручную исправить файл конфигурации
s3gateway.config.json, сравнивая значения со старой конфигурацией:-
старая конфигурация —
/opt/skala-r/s3gateway_<version>/s3gateway.config.json. -
новая конфигурация —
/opt/skala-r/s3gateway/s3gateway.config.json.
В случае необходимости уточнения значения параметра
s3_cluster_ip_addressнеобходимо на одном из работающих серверов хранения выполнить команду:cat /var/lib/ostor/name -
-
Обновить системную БД:
cd /opt/skala-r/s3gateway ./migrator -
Синхронизировать SSL сертификаты из старой версии:
cp -a /opt/skala-r/s3gateway_<version>*/*.pem /opt/skala-r/s3gateway/ cp -a /etc/nginx/ssl_<version>/* /etc/nginx/ssl/ rm -rf /etc/nginx/ssl_<version> -
Запустить сервисы s3gateway:
systemctl enable --now s3gateway-control-server.service systemctl enable --now s3gateway-compression-server.service systemctl enable --now s3gateway-proxy-server.service systemctl status s3gateway-control-server.service systemctl status s3gateway-compression-server.service systemctl status s3gateway-proxy-server.service systemctl reload nginx.service
После успешно запуска служб необходимо удостовериться что keepalived работает и VIP сможет переключиться на узел с обновлённым ПО:
cd /etc/keepalived/scripts-skala-r/
sh hcheck.sh
echo ExitCode=$?
Значение ExitCode должно быть равно нулю.
Для переключения VIP на узел с обновлённым ПО, на других узлах Спектр S3 необходимо отключить одну из служб, как пример:
systemctl stop s3gateway-proxy-server.service
После этого на узле с обновлённым ПО необходимо проверить наличие второго IP-адреса и состояние службы keepalived. Значение параметра State должно быть Master:
ip -br a
pid=$(cat /var/run/keepalived.pid 2>/dev/null)
[[ $? -eq 0 ]] || { printf 'no keepalived running\n' >&2; exit 0; }
kill -USR1 $pid
grep -E 'VRRP Instance|State' /tmp/keepalived.data