morok. Руководство администратора

Документ описывает установку, проверку, обновление и удаление morok на серверах и рабочих станциях без доступа к интернету, а также настройки среды. Работа с программой — в руководстве пользователя. Проверка за 5–10 минут на демо-данных — в сценарии проверки.

morok — инструмент подготовки тестовых данных, а не средство защиты информации.

1. Системные требования

Параметр Требование
Архитектура x86_64 (amd64)
ОС Astra Linux Special Edition 1.8 (пакет .deb); РЕД ОС 8 (пакет .rpm)
Другие версии Astra Linux SE 1.7 и РЕД ОС 7.3 не проверялись; поддержка не заявляется
Прочие дистрибутивы Linux не проверялись; статический бинарник может работать, но поддержка не заявляется
Зависимости ОС нет (статический бинарник)
Права установка — sudo; работа — обычный пользователь
Память не зависит от размера данных (потоковая обработка); метод shuffle держит в памяти до max_rows значений столбца (по умолчанию 1 000 000), сверх этого использует временные файлы
Диск место под результат (по размеру сопоставим с исходными данными) и под временные файлы shuffle
Сеть не требуется. Нужна только для подключения к БД PostgreSQL, которую вы указываете сами

Для дампов PostgreSQL в формате custom нужна утилита pg_restore из репозитория вашей ОС (пакет клиента PostgreSQL). Для остальных форматов никаких дополнительных программ не требуется.

2. Состав дистрибутива

Дистрибутив — набор файлов в одном каталоге:

Файл Назначение
morok-<версия>-astra-linux-amd64.deb пакет для Astra Linux
morok-<версия>-red-os-x86_64.rpm пакет для РЕД ОС
morok-<версия>-macos-arm64, morok-<версия>-macos-amd64 исполняемые файлы для macOS (Apple Silicon, Intel; дополнительная платформа, см. раздел 3.5)
SHA256SUMS контрольные суммы всех файлов поставки

Файлы загружаются со страницы программы https://scr1.ru/morok/ (раздел «Как получить»); контрольные суммы опубликованы там же — в таблице и в файле morok-<версия>-SHA256SUMS.txt (содержимое совпадает с SHA256SUMS). После загрузки: sha256sum -c --ignore-missing morok-<версия>-SHA256SUMS.txt. Те же файлы публикуются на странице релизов GitVerse https://gitverse.ru/vzkhrv/morok/releases; там каждый файл сжат gzip (<файл>.gz: GitVerse не принимает вложения .deb, .rpm и файлы без расширения). После загрузки: gunzip <файл>.gz, затем sha256sum -c --ignore-missing SHA256SUMS.txt — суммы относятся к исходным файлам и совпадают с суммами на странице программы.

Лицензионное соглашение (EULA.txt), перечень компонентов третьих лиц и их лицензий (NOTICE.txt) и справочная страница входят в пакеты; для macOS эти документы доступны на странице программы.

Файлы, устанавливаемые пакетом:

Путь Назначение
/usr/bin/morok исполняемый файл
/usr/share/man/man1/morok.1.gz man-страница (man morok)
/usr/share/doc/morok/user-guide.md руководство пользователя
/usr/share/doc/morok/admin-guide.md руководство администратора
/usr/share/doc/morok/expert-scenario.md сценарий проверки за 5–10 минут
/usr/share/doc/morok/report.schema.json JSON Schema отчёта
/usr/share/doc/morok/EULA.txt лицензионное соглашение
/usr/share/doc/morok/NOTICE.txt компоненты третьих лиц
/usr/share/doc/morok/CHANGELOG.md история изменений
/usr/share/morok/examples/morok.yaml пример конфигурации
/usr/share/morok/demo/ синтетический демо-набор (data/, morok.yaml, morok-events.yaml, README.md)

Пакет не создаёт пользователей, служб, заданий планировщика и файлов в /etc. Конфигурация и ключ — файлы пользователя, пакет их не трогает.

На некоторых минимальных образах Astra Linux каталог /usr/share/doc исключается из установки настройкой dpkg (path-exclude). Тогда документация в пакете числится, но на диск не распаковывается; файлы можно распаковать вручную из пакета (dpkg-deb -x morok-*-astra-linux-amd64.deb /каталог) или прочитать на странице загрузки.

3. Установка

Установка выполняется офлайн, из файла пакета. Репозитории ОС и сеть не нужны.

3.1. Проверка контрольных сумм

Скопируйте на целевую машину пакет(ы) и SHA256SUMS в один каталог и выполните:

sha256sum -c SHA256SUMS

Ожидаемый вывод: по строке <файл>: OK для каждого файла. Если на машине есть только один из пакетов, добавьте --ignore-missing:

sha256sum -c --ignore-missing SHA256SUMS

Любое сообщение FAILED означает, что файл повреждён при копировании; не устанавливайте его, скопируйте заново. Сверьте также значение SHA256SUMS с опубликованным на странице загрузки: контрольные суммы выявляют случайное повреждение, но не подмену пакетов вместе с файлом сумм.

3.2. Astra Linux (.deb)

sudo apt install ./morok-*-astra-linux-amd64.deb

Команда apt install с путём к локальному файлу не требует индексов репозиториев, так как у пакета нет зависимостей. Если в системе настроен недоступный репозиторий, сообщения о нём можно игнорировать либо использовать sudo dpkg -i morok-*-astra-linux-amd64.deb.

3.3. РЕД ОС (.rpm)

sudo dnf install --disablerepo='*' ./morok-*-red-os-x86_64.rpm

Параметр --disablerepo='*' исключает обращение к репозиториям, которых нет без сети.

3.4. Проверка установки

morok version
morok --help
man morok

morok version выводит строки: версия, коммит, дата сборки, версия Go. morok --help выводит справку на русском языке. Состав пакета:

dpkg -L morok          # Astra Linux
rpm -ql morok          # РЕД ОС

Проверка работы на демо-данных — по сценарию проверки (5–10 минут).

3.5. macOS (дополнительная платформа)

macOS — дополнительная платформа для разработчиков и администраторов; в заявке на включение в реестр и в обязательствах по поддержке она не заявляется. Основные платформы — Astra Linux и РЕД ОС. Поддерживаются macOS 12 и новее. Поставка для macOS — один исполняемый файл без установщика: пакета, справочной страницы и демо-набора нет.

  1. Определите архитектуру процессора:

    uname -m

    arm64 — Apple Silicon (M1 и новее), файл morok-<версия>-macos-arm64; x86_64 — Intel, файл morok-<версия>-macos-amd64.

  2. Загрузите файл и контрольные суммы со страницы программы в один каталог, например в Терминале:

    cd ~/Downloads
    curl -fLO https://scr1.ru/morok/morok-<версия>-macos-arm64
    curl -fLO https://scr1.ru/morok/morok-<версия>-SHA256SUMS.txt

    На странице релизов GitVerse тот же файл опубликован сжатым: morok-<версия>-macos-arm64.gz. Распакуйте его командой gunzip morok-<версия>-macos-arm64.gz; контрольные суммы — в SHA256SUMS.txt.

  3. Проверьте контрольную сумму:

    shasum -a 256 -c --ignore-missing morok-<версия>-SHA256SUMS.txt

    Ожидаемый вывод: morok-<версия>-macos-arm64: OK. При FAILED загрузите файл заново.

  4. Снимите атрибут карантина. Файл подписан только ad-hoc подписью компоновщика Go, без сертификата разработчика Apple и без нотаризации (подпись и нотаризация вне объёма поставки). Файл, загруженный браузером, получает атрибут карантина, и macOS блокирует его запуск с сообщением «Не удаётся проверить разработчика». Команда снимает атрибут:

    xattr -d com.apple.quarantine morok-<версия>-macos-arm64

    Сообщение No such xattr означает, что атрибута нет (например, файл загружен через curl), — это не ошибка. Вместо команды можно разрешить запуск в «Системных настройках» → «Конфиденциальность и безопасность» → «Всё равно открыть» после первой заблокированной попытки.

  5. Установите файл в каталог из PATH под именем morok:

    sudo install -m 0755 morok-<версия>-macos-arm64 /usr/local/bin/morok

    Без прав администратора — в домашний каталог:

    mkdir -p ~/.local/bin
    install -m 0755 morok-<версия>-macos-arm64 ~/.local/bin/morok
    echo 'export PATH="$HOME/.local/bin:$PATH"' >> ~/.zprofile

    Последняя команда нужна один раз; откройте новое окно Терминала.

  6. Проверьте установку:

    morok version
    morok --help

    morok version выводит версию, коммит, дату сборки и версию Go.

Лицензионное соглашение, перечень компонентов третьих лиц и руководства для macOS доступны на странице программы. Демо-набор и сценарий проверки — в пакетах Astra Linux и РЕД ОС либо в репозитории проекта (demo/, scripts/demo-check.sh).

4. Обновление

Установите более новый пакет тем же способом, что и первый; настройки пользователей не затрагиваются:

sudo apt install ./morok-<новая версия>-astra-linux-amd64.deb     # Astra Linux
sudo dnf upgrade --disablerepo='*' ./morok-<новая версия>-red-os-x86_64.rpm   # РЕД ОС

macOS: загрузите новый файл, проверьте контрольную сумму, снимите атрибут карантина и замените файл (шаги 2–5 раздела 3.5).

Перед обновлением сверьте контрольные суммы (раздел 3.1) и прочитайте CHANGELOG.md. Программа не проверяет наличие обновлений и не обращается к сети: о новых версиях сообщает страница загрузки, а доставка пакета на закрытый контур — ваша процедура.

После обновления:

5. Удаление

sudo apt remove morok        # Astra Linux
sudo dnf remove morok        # РЕД ОС
sudo rm /usr/local/bin/morok # macOS (или rm ~/.local/bin/morok)

Удаляются файлы пакета. Файлы пользователей (конфигурации, ключи, результаты, отчёты) остаются; удалите их самостоятельно. Ключи храните и уничтожайте по принятым у вас правилам.

6. Среда выполнения

6.1. Зависимости

Бинарник статически собран и не требует библиотек ОС. Единственное исключение — дамп PostgreSQL в формате custom: нужен pg_restore из репозитория ОС. Если его нет, программа завершится с кодом 3 и сообщением, какой пакет поставить; путь можно указать параметром source.pgdump.pg_restore. pg_restore запускается без подключения к серверу. Дампы MySQL/MariaDB (mysqldump) читаются самой программой, внешние программы не нужны.

6.2. Сетевое взаимодействие

6.3. Хранение ключа

6.4. Права файлов

Объект Рекомендуемые права
файл ключа 0600, владелец — пользователь запуска
конфигурация 0640 или 0600; ключа в ней нет, но она раскрывает структуру данных
исходные данные как принято для исходных данных; программа их только читает
результат и отчёт программа создаёт файлы с правами 0644; при необходимости ограничьте их umask каталога или родительским каталогом
временные файлы shuffle создаются с правами 0600 в системном каталоге временных файлов и удаляются после работы

Каталог результата не должен совпадать с каталогом источника или находиться внутри него (и наоборот); каталог отчёта не должен находиться внутри каталога источника.

6.5. Журналирование

Файлов журналов программа не ведёт. Вывод:

В сообщениях и отчёте нет значений данных, ключа и DSN. Для сохранения журнала в среде CI перенаправьте stderr и stdout средствами оболочки или системы CI.

Коды возврата: 0 — успех; 1 — внутренняя ошибка или прерывание; 2 — неверные аргументы или конфигурация; 3 — ошибка чтения или записи данных; 4 — ключ отсутствует или некорректен; 5 — --strict: в полях без правил найдены персональные данные либо часть путей вложенного формата не проверена.

6.6. Дампы MySQL и MariaDB

source.type: mysqldump и target.type: mysqldump обрабатывают SQL-дамп, созданный mysqldump или mariadb-dump. Программа читает файл дампа и пишет файл результата; к серверу MySQL она не подключается, mysqldump и mysql не запускает. Результат восстанавливается обычной командой mysql < результат.sql.

Поддерживаемые ключи mysqldump:

Ключ Поведение
(по умолчанию) INSERT INTO ... VALUES (...),(...); с несколькими записями; столбцы берутся из CREATE TABLE.
--complete-insert INSERT со списком столбцов.
--extended-insert / --skip-extended-insert Несколько записей в команде или по одной.
--hex-blob Двоичные значения в виде 0x....
--insert-ignore INSERT IGNORE INTO.
--replace REPLACE INTO.
--databases, --all-databases Базы разделяются командами USE; при одноимённых таблицах в разных базах задайте source.mysqldump.database.

Ограничения:

7. Использование в CI

Требования к окружению задачи: пакет morok установлен на исполнителе (или бинарник доступен по пути), ключ передаётся переменной окружения из секретов, исходные данные и конфигурация доступны на диске. Пример скрипта задачи (shell):

#!/usr/bin/env bash
set -euo pipefail

# MOROK_KEY задаётся системой CI из секретов (hex, не короче 64 символов)
: "${MOROK_KEY:?не задан ключ}"

morok version
morok validate -c ci/morok.yaml

# --strict: код 5, если в полях без правил найдены персональные данные
morok run -c ci/morok.yaml --strict --quiet --force

# отчёт сохраняется как артефакт задачи
test -s out/report/report.md

В ci/morok.yaml укажите key.env: MOROK_KEY. Пример реакции на коды возврата:

set +e
morok run -c ci/morok.yaml --strict --quiet --force
rc=$?
set -e
case "$rc" in
  0) echo "обезличивание выполнено" ;;
  5) echo "найдены ПДн без правил, дополните конфигурацию" >&2; exit 5 ;;
  4) echo "проблема с ключом" >&2; exit 4 ;;
  *) echo "ошибка morok, код $rc" >&2; exit "$rc" ;;
esac

Рекомендации:

8. Устранение неполадок

Симптом Причина и действие
apt install ./morok-*-astra-linux-amd64.deb пытается обратиться к репозиторию Недоступный источник в /etc/apt/sources.list. Используйте sudo dpkg -i morok-*-astra-linux-amd64.deb.
dnf выводит ошибки репозиториев Не указан --disablerepo='*'.
sha256sum -c сообщает FAILED Файл повреждён при копировании. Скопируйте заново.
man morok не находит страницу Минимальный образ без man-утилит или без /usr/share/man. Прочитайте morok --help и руководства.
код 4: «файл ключа ... доступен другим пользователям» chmod 600 на файл ключа.
код 2 для mysqldump: «неизвестен список столбцов» Создайте дамп с определениями таблиц (без --no-create-info) или с --complete-insert.
код 2 для mysqldump: «встречается в нескольких базах» Укажите source.mysqldump.database.
код 3 для custom-дампа: не найден pg_restore Установите пакет клиента PostgreSQL из репозитория ОС либо укажите source.pgdump.pg_restore.

Список типовых ошибок программы с текстами — в разделе 11 руководства пользователя.

9. Поддержка и обновления

Контакты поддержки, страница загрузки и порядок выпуска версий указаны на публичной странице продукта. История изменений — CHANGELOG.md. Сведения о лицензии — EULA.txt, о компонентах третьих лиц — NOTICE.txt.