Установка базового кластера
Устанавливаемые компоненты
| Компонент | Описание |
|---|---|
| Zakroma-Disk | Сервис Закрома.Диск, включая web-интерфейс, dsdrive, WebDAV и сервис блокировок. |
| Zakroma Message Broker (ZMB) | Брокер сообщений для событий безопасности (опционально). |
| Nginx | Proxy-сервер для web-интерфейса и WebDAV. |
| Keycloak | Система аутентификации и авторизации. |
| PostgreSQL | СУБД для метаданных Закрома.Диск и Keycloak. |
| Сервер | Компоненты |
|---|---|
plank-1.zakroma.internal | Zakroma-Disk, Nginx, ZMB |
plank-2.zakroma.internal | Zakroma-Disk, Nginx, ZMB |
plank-3.zakroma.internal | Zakroma-Disk, Nginx, ZMB |
postgres.zakroma.internal | PostgreSQL |
keycloak.zakroma.internal | Keycloak |
Установка
1. Распакуйте архив поставки
1tar -xvzf zakroma-roles-2.1.2.tar.gz 2cd zakroma-roles-2.1.2
2. Подготовьте inventory
В качестве основы используйте файл inventories/base-cluster/hosts.
1[certificates] 2plank-1 ansible_host=10.222.0.221 3plank-2 ansible_host=10.222.0.222 4plank-3 ansible_host=10.222.0.223 5 6[keycloak] 7plank-1 ansible_host=10.222.0.221 8 9[zakroma-disk-nginx] 10plank-1 ansible_host=10.222.0.221 11plank-2 ansible_host=10.222.0.222 12plank-3 ansible_host=10.222.0.223 13 14[zakroma-disk] 15plank-1 ansible_host=10.222.0.221 16plank-2 ansible_host=10.222.0.222 17plank-3 ansible_host=10.222.0.223 18 19[message-broker] 20plank-1 ansible_host=10.222.0.221 21plank-2 ansible_host=10.222.0.222 22plank-3 ansible_host=10.222.0.223
При необходимости вынесите Keycloak на отдельный хост и скорректируйте группу keycloak. Группу message-broker можно не заполнять, если журнал безопасности через ZMB не используется.
3. Разложите сертификаты
Отредактируйте inventories/base-cluster/group_vars/certificates.yml: укажите все хосты из inventory и сертификаты для Nginx и Keycloak.
1--- 2certificates_copy_source_path: "files" 3 4host_cert_config: 5 plank-1: 6 certs: 7 - src_dir: "{{ certificates_copy_source_path }}" 8 dest_dir: "/opt/certs/" 9 cert_file: "zakroma.crt" 10 key_file: "zakroma.key" 11 owner: "nginx" 12 group: "nginx" 13 cert_permissions: "0644" 14 key_permissions: "0600" 15 keycloak: 16 certs: 17 - src_dir: "{{ certificates_copy_source_path }}" 18 dest_dir: "/opt/keycloak/" 19 cert_file: "keycloak.crt" 20 key_file: "keycloak.key" 21 owner: "keycloak" 22 group: "keycloak" 23 cert_permissions: "0644" 24 key_permissions: "0600"
Запустите playbook:
1ANSIBLE_CONFIG=ansible.cfg ansible-playbook -i inventories/base-cluster/hosts playbooks/sample-play-copy-certificates.yml
4. Подготовьте Keycloak
Если используется Keycloak из поставки, настройте inventories/base-cluster/group_vars/keycloak.yml по инструкции Настройка Keycloak и запустите:
1ANSIBLE_CONFIG=ansible.cfg ansible-playbook -i inventories/base-cluster/hosts playbooks/sample-play-keycloak.yml 2ANSIBLE_CONFIG=ansible.cfg ansible-playbook -i inventories/base-cluster/hosts playbooks/sample-play-keycloak-copy-realm.yml
5. Установите Zakroma Message Broker (ZMB)
Если нужен журнал безопасности через брокер сообщений, настройте inventories/base-cluster/group_vars/message-broker.yml и установите ZMB до Закрома.Диск. Подробности — в подготовке окружения, раздел «Подготовка Zakroma Message Broker».
1ANSIBLE_CONFIG=ansible.cfg ansible-playbook -i inventories/base-cluster/hosts playbooks/sample-play-message-broker.yml
Для минимального стенда без seclog этот шаг можно пропустить. В кластере zmb_host_group должен совпадать с именем inventory-группы (message-broker), чтобы роль собрала cluster routes из inventory.
6. Заполните параметры Закрома.Диск
Отредактируйте inventories/base-cluster/group_vars/zakroma-disk.yml.
Минимально проверьте и замените значения:
1zakroma_disk_version: 1.6.1 2zakroma_disk_env: prod 3# Установка и запуск dsseclog. В поставке 2.1.2 по умолчанию false. 4zakroma_disk_dsseclog_enabled: false
Важная информация об аутентификации пользователей
Закрома.Диск поддерживает интеграцию с Keycloak для аутентификации пользователей в Web UI и WebDAV.
Для Web UI может использоваться один из двух режимов:
Authorization Code Flow / redirect flow- пользователь перенаправляется в Keycloak, проходит интерактивную аутентификацию в браузере и возвращается в Web UI Закрома.Диск;direct grant- Закрома.Диск получает токен доступа напрямую от Keycloak без браузерного перенаправления пользователя.
WebDAV использует только режим direct grant. Это связано с тем, что типовые WebDAV-клиенты не поддерживают интерактивный OIDC/OAuth redirect в браузере и не могут выполнить стандартный сценарий входа через Keycloak.
Параметры zakroma_disk_auth.access_key_id и zakroma_disk_auth.access_key обязательны при включенной межсервисной аутентификации Закрома.Диск. Для корректной работы Закрома.Диск с WebDAV задайте zakroma_disk_auth.enabled: true, заполните zakroma_disk_auth.access_key_id и zakroma_disk_auth.access_key, а также не оставляйте эти значения пустыми в продуктивной инсталляции.
Для работы WebDAV необходимо включить Direct Access Grants / direct grant flow в настройках клиента в Keycloak и включить direct grant в конфигурации Закрома.Диск:
1zakroma_disk_dsdrive.auth.direct_grant.enabled: true
Значение zakroma_disk_dsdrive.auth.direct_grant.auth_key должно быть заполнено и совпадать с zakroma_disk_webdav.dsdrive.auth_key.
Для синхронизации пользователей можно использовать два варианта: по ролям Keycloak (user_role) или по группам Keycloak (user_groups). Настройка role-mapper и group-mapper описана в отдельной инструкции по Keycloak для Закрома.Диск.
Если используется поставочный realm, базовый вариант — синхронизация по роли clouduser: user_role: "clouduser" и user_groups: "". Не указывайте имя пользователя администратора как user_groups: Keycloak ожидает путь группы, и при неверном значении сервис вернёт ошибку InvalidKeycloakSettings / 404 Not Found: Group path does not exist.
Настройка dsseclog и ZMB
Переменная zakroma_disk_dsseclog_enabled управляет установкой, конфигурацией и запуском сервиса zakroma-disk-dsseclog. Если сервис событий безопасности не используется, оставьте значение из поставки:
1zakroma_disk_dsseclog_enabled: false
Чтобы отправлять события через ZMB:
- Установите брокер (шаг 5).
- Включите
zakroma_disk_dsseclog_enabled: true. - Укажите адрес брокера и включите клиент:
1zakroma_disk_dsdrive: 2 seclog_client: 3 zmb: 4 enabled: true 5 hosts: "zakroma-message-bus.zakroma.internal:4222" 6 auth: 7 seed: "<NKEY_SEED_SU>" 8zakroma_disk_dsseclog: 9 zmb: 10 enabled: true 11 hosts: "zakroma-message-bus.zakroma.internal:4222" 12 auth: 13 seed: "<NKEY_SEED_SU>"
Параметры zakroma_disk_dsdrive.seclog_client.zmb.enabled и zakroma_disk_dsseclog.zmb.enabled управляют только использованием ZMB в конфигурациях сервисов. Отключение ZMB не отключает сервис dsseclog; для этого нужен отдельный флаг zakroma_disk_dsseclog_enabled: false.
7. Настройте Nginx
Отредактируйте inventories/base-cluster/group_vars/zakroma-disk-nginx.yml: замените server_name, пути к сертификатам и домены disk.zakroma.internal / webdav.zakroma.internal на значения вашего контура.
TLS для Закрома.Диск настраивается на уровне Nginx. В конфигурации zakroma_disk_dsdrive.storage TLS-параметры Закрома.Диск указывать не требуется.
Пример конфигурации Nginx:
1--- 2# Перезапустить nginx, даже если не было изменений. 3flush_restart_nginx: false 4 5# Название пакета Nginx.
8. Запустите установку
1# Если ZMB ещё не установлен и нужен для seclog — выполните до установки Закрома.Диск: 2ANSIBLE_CONFIG=ansible.cfg ansible-playbook -i inventories/base-cluster/hosts playbooks/sample-play-message-broker.yml 3 4ANSIBLE_CONFIG=ansible.cfg ansible-playbook -i inventories/base-cluster/hosts playbooks/sample-play-copy-licence-file.yml 5ANSIBLE_CONFIG=ansible.cfg ansible-playbook -i inventories/base-cluster/hosts playbooks/sample-play-zakroma-disk.yml 6ANSIBLE_CONFIG=ansible.cfg ansible-playbook -i inventories/base-cluster/hosts playbooks/sample-play-zakroma-disk-nginx.yml
9. Проверьте стенд после установки
- Откройте
https://disk.zakroma.internalи убедитесь, что загружается интерфейс Закрома.Диск. - Войдите через Keycloak и проверьте, что пользователь попадает в интерфейс без ошибок авторизации.
- Подключитесь к WebDAV по адресу
https://webdav.zakroma.internalи проверьте чтение и запись тестового файла. - На узлах группы
zakroma-diskубедитесь, что сервисыzakroma-disk-*запущены и не уходят в постоянный перезапуск. - Если установлен ZMB, проверьте, что сервис
zmb-serverактивен на узлах группыmessage-broker:systemctl status zmb-server.