Начало работы
Установка
Заголовок раздела «Установка»Самый простой путь — одна команда, сама подберёт нужный бинарник под вашу ОС/архитектуру:
curl -fsSL https://get.enodia.sh/unix | sh # Linux/macOS/Android (Termux)irm https://get.enodia.sh/windows | iex # Windowsenodia сразу же доступна в том же самом окне PowerShell — установщик
патчит PATH текущей сессии напрямую, а не только сохранённое значение
в реестре, которое подхватил бы только новый терминал.
На Windows также можно поставить через winget или Chocolatey, если хотите, чтобы обновления отслеживал пакетный менеджер:
winget install EpicMorg.Enodia # wingetchoco install enodia # ChocolateyЛибо пакет, если хотите, чтобы обновления отслеживал пакетный менеджер:
sudo dpkg -i enodia_linux_amd64.deb # Debian/Ubuntusudo rpm -i enodia_linux_amd64.rpm # Fedora/RHELapk add --allow-untrusted enodia_linux_amd64.apk # Alpinesudo pacman -U enodia_linux_amd64.pkg.tar.zst # ArchКаждый пакет ставит бинарник в /usr/bin/enodia, man-страницы в
/usr/share/man/man1/ и создаёт отдельного непривилегированного
системного пользователя enodia — для запуска ничего из этого не
требует root. Нужный файл — на странице
последнего релиза.
Либо контейнер:
docker run --rm \ -v /etc/enodia:/config:ro \ ghcr.io/epicmorg/enodia:latest check --config /config/config.yamlНачиная с 1.1.0 этот образ собирает и публикует соседний репозиторий,
EpicMorg/docker,
по собственному расписанию — уже не пайплайн релизов этого проекта,
хотя опубликованный адрес и теги остались теми же. Публикуется также в
docker.io/epicmorg/enodia и Quay, те же теги — latest, голый тег
мажорной версии (2) и точная версия без суффикса сборки (например,
2.2.1 — подтверждено вживую во всех трёх реестрах; у более раннего пайплайна теги выглядели
как 1.0.0-1, они всё ещё доступны для pull, просто новые релизы с
этого момента тегируются иначе). Два реальных изменения, о которых
стоит знать: теперь образ собирается только под linux/amd64
(arm64 убрали при переносе публикации), и работает от root, а не
от отдельного пользователя, на собственной домашней базе проекта
debian:trixie-light вместо scratch. Он объявляет
/var/lib/enodia/cve томом для
баз CVE — смонтируйте туда свои копии
или дайте enodia cve update заполнить его.
Сборка из исходников
Заголовок раздела «Сборка из исходников»Нужен Go — точную версию, на которую сейчас рассчитана enodia, смотрите
в go.mod.
git clone https://github.com/EpicMorg/enodia.gitcd enodiago build -o enodia ./cmd/enodia./enodia versionПоддерживаемые платформы
Заголовок раздела «Поддерживаемые платформы»| ОС | Архитектура | Минимальная версия |
|---|---|---|
| Linux | amd64, arm64 | Ядро 3.2 или новее — Debian 8+, Ubuntu 14.04+, RHEL/CentOS 7+ подходят с запасом |
| Windows | amd64, arm64, 386 | Windows 10 / Windows Server 2016 или новее |
| macOS | amd64, arm64 | macOS 12 Monterey или новее |
| Android (Termux) | только arm64 | Android 7 или новее — собственный минимум Termux, строже, чем Android 5.0 Lollipop — минимум для поддержки PIE, который на деле и привёл к отдельной сборке (см. заметку про Termux выше). На рутованных устройствах может понадобиться su — см. предупреждение выше |
Это собственный минимум тулчейна Go, а не что-то, что enodia добавляет сверху. Сборка из исходников более новым Go поднимает минимум для macOS ещё выше — это решение тулчейна, а не проекта.
Ваш первый конфиг
Заголовок раздела «Ваш первый конфиг»Создайте enodia.yaml рядом с бинарником (или в любом из мест,
перечисленных в
Конфигурации):
schemaVersion: 1targets: - id: gitlab-main product: gitlab address: https://gitlab.example.comЗатем запустите:
enodia checkID PRODUCT PATCH LIFECYCLE BRANCH SEVERITY REASON CVESgitlab-main gitlab ...check без --from собирает данные и оценивает их за один прогон —
enodia достучится до вашего таргета, затем до интернета за данными
жизненного цикла. Если у таргета есть сеть только до вашей
инфраструктуры (закрытый контур), а не до интернета — разделите фазы:
# внутри закрытого контура - интернет не нуженenodia collect --config enodia.yaml -o inventory.jsonl
# где угодно ещё - доступ к сервисам не нуженenodia check --from inventory.jsonlДобавление учётных данных
Заголовок раздела «Добавление учётных данных»Таргету с приватным API нужен именованный credential, который
резолвится из карты credentials: в enodia.yaml (либо из отдельного
credentials.yaml — см. Конфигурацию):
schemaVersion: 1targets: - id: gitlab-main product: gitlab address: https://gitlab.example.com credentials: gitlab-token
credentials: gitlab-token: kind: token-header header: PRIVATE-TOKEN value: "${GITLAB_TOKEN}"${GITLAB_TOKEN} подставляется из окружения в момент загрузки — см.
Конфигурацию.
Секретам не обязательно жить в одном файле с инвентарём сервисов.
- Концепции — решения, которые стоят за всем этим.
- Справочник CLI — все команды и флаги.
- Представления — не только дефолтная таблица, но и
lifecycle,drift,fleet.