simbiot-harness/docs/KEYS-REGISTRY.md

11 KiB
Raw Blame History

Реестр ключей и секретов хоста (только пути и описания, БЕЗ значений)

Дата: 2026-09-30. Составил: часовой поток Simbiot Harness (t-260930061207-617c69). Правило: значения секретов в чат/файлы отчётов не выводятся — только пути и назначение.

1. Simbiot Harness (активный, владелец: харнес)

Путь Что Права Бэкап Ротация
/root/simbiot-harness/.env ROUTER_KEY, OPENROUTER_KEY, SIMBIOT_TG_TOKEN, SIMBIOT_TG_ALLOWED, ROUTER/OPENROUTER_BASE_URL 600 да (см. §6) ROUTER_KEY — по политике 9router; TG-токен — при подозрении
/etc/simbiot/dashboard.env SIMBIOT_DASH_TOKEN (страница + /api/state, порт 8765 открыт наружу 0.0.0.0) 600 да при демобилизации дашборда
git-история /root/simbiot-harness .env убран из трекинга (e6a99ce); 01.10 push в приватный репо https://git.cil.by/symbiot/simbiot-harness (3361b67..d39f60f): аудит — .env в истории отсутствует (0 коммитов), скан sk-/bot/rsh/Bearer по git log -p --all чист. Утечки не было. — n/a токен Forgejo symbiot (9f29709…) — admin-скоп, ротация при компрометации; в репо не хранить

Git-канал харнеса (восстановлен 2026-10-05, e-261004110909-bd70b0): fetch-токен в remote-URL (7ea8d11a…) оказался без скопа write:repository → git push = 403. Push теперь идёт через admin-токен 9f29709… (значение — в git-remote конфиге клона /home/hermes/vybirai/.git/config, в наш репо НЕ копируется): git remote set-url --push origin <url с 9f29709…> — персистентно в .git/config (не в трекинге). Диагностика: scripts/deploy_channel_probe.py. Правка: менять только pushurl, fetch остаётся на узком токене. Деплой лендинга: docs/DEPLOY-LANDING.md.

2. Наследие агента Гермес (живое, сервисы active)

Путь Что Права Примечание
/root/.hermes/.env (+ .env.bak.tok-5673079687) ~30 ключей: TELEGRAM_BOT_TOKEN/TOKEN, OLLAMA_API_KEY, KIE/KIMI_API_KEY, RESEND_API_KEY, X_* (OAuth Twitter, 8 шт: consumer/access/refresh/bearer), MATRIX_ACCESS_TOKEN, SIMPLEX_, 9ROUTER_CIL_API_KEY, HERMES_CUSTOM__API_KEY, 42admin-*, OIDC-токены профиля 600 .env.bak.* — тот же набор, дубликат ротации токена
/root/.hermes/profiles/coop-group/.env TELEGRAM_BOT_TOKEN (групповой бот), KIMI/OLLAMA_API_KEY, 9ROUTER_CIL_API_KEY, HERMES_CUSTOM_ROUTER_CIL_BY_API_KEY 600 профиль кооп-чата
/root/.hermes/config.yaml (+ 8 бэкапов config.yaml.bak.*) api_key у ~10 провайдеров (9router, ollama-cloud, kimi-coding, glm-coding, 9router-remote, 9router-cil…), password_hash, token_analytics 600 бэкапы копируют те же ключи
/root/.hermes/auth.json credential_pool: kimi-coding, zai, openrouter, custom:9router(-remote/-cil), glm-coding, ollama-cloud, nous (OAuth client_id) 600 актуальный пул кредов LLM-провайдеров
/root/.hermes/profiles/coop-group/auth.json тот же пул для профиля coop-group 600
/root/.hermes/chain-key.json приватный ключ блокчейна (address + private_key, кооп 42) 600 критично; бэкап обязателен, ротация невозможна без смены адреса
/root/.hermes/harness-attest.json аттестационный чек (root/tx/files/bytes/ts) — не секрет 600 не бэкапить отдельно
/root/.hermes/telegram_config.yaml token TG 600
/etc/systemd/system/hermes-api.service ADAPTER_KEYS inline (ключ доступа к локальному OpenAI-адаптеру) 600 (было 644 — исправлено) см. §5 рекомендация
/root/hermes-api/.key ключ адаптера (тот же) 600 адаптер слушает только 127.0.0.1:9100
/root/.hermes/state.db (+ бэкапы /root/backups/hermes/state.db.*.bak.zst, 644, ротация 14) SQLite агента — внутри сессии/токены в истории 600 бэкапы содержат секреты, права нести в 600

3. Инфраструктура кооператива (/root, /opt)

Путь Что Права Примечание
/root/coop/.env HETZNER_API_TOKEN, STRIPE_(LIVE/TEST)_KEY, STRIPE_WEBHOOK_SECRET, RESEND_API_KEY, HARNESS_TOKEN, TIME_REPORT_TOKEN, SALARY_CRON_TOKEN, STUDIO_ADMIN_KEY, LIVE_MONITOR_TOKEN, MAGIC_SEND_SECRET, GOOGLE_AI_KEY 600 ядро биллинга коопа
/root/coop/.alfa_env (EnvironmentFile coop-portal.service) FORGEJO_PULL_TOKEN — scoped read-токен Forgejo (simbiot-agent-pull, read:repository): им simbiot-агенты клонируют /root/simbiot-harness с git.cil.by при деплое (simbiot_harness.py) 600 ротация: Forgejo → Settings → Applications → удалить и перевыпустить, обновить .alfa_env, рестарт coop-portal
/root/rag/.env RAG_API_KEY (публичный сервис RAG) 600
/root/litellm/.env LITELLM_MASTER_KEY, ZAI/KIMI/OLLAMA_API_KEY ×4, POSTGRES_PASSWORD 600
/root/9router/.env JWT_SECRET, INITIAL_PASSWORD, API_KEY_SECRET, MACHINE_ID_SALT, OLLAMA_CLOUD_API_KEY 600 (было 644 — исправлено) сервис слушает 0.0.0.0:20128
/root/deip/.env DEIP_ADMIN_TOKEN, STRIPE_* (live+test+webhooks), RESEND_API_KEY, OLLAMA_API_KEY 600 (было 644)
/root/jitsi/.env JICOFO/JVB/JIGASI XMPP-пароли, JIGASI_TRANSCRIBER_PASSWORD 600 (было 644)
/root/cal-diy/.env CALCOM_DB_PASSWORD, NEXTAUTH_SECRET, CALENDSO_ENCRYPTION_KEY, SSO42_CLIENT_SECRET 600 (было 644)
/root/chatwoot/.env POSTGRES/REDIS_PASSWORD, SECRET_KEY_BASE, C42_CLIENT_ID(+secret) 600 (было 644)
/opt/documenso/.env POSTGRES_PASSWORD, NEXTAUTH_SECRET, NEXT_PRIVATE_ENCRYPTION_KEY ×2, SMTP_PASSWORD, OIDC_CLIENT_SECRET, SIGNING_PASSPHRASE 600
/opt/kan/.env POSTGRES_PASSWORD, BETTER_AUTH_SECRET, OIDC_CLIENT_SECRET 600
/opt/rallly/.env SECRET_PASSWORD, OIDC_CLIENT_SECRET, SMTP_PWD, POSTGRES_PASSWORD, S3_ACCESS_KEY_ID/SECRET, GARAGE_RPC_SECRET 600
/opt/espocrm/compose.yml inline: MARIADB_ROOT/USER_PASSWORD, ESPOCRM_ADMIN_PASSWORD (admin: alex), ESPOCRM_DATABASE_PASSWORD 600 (было 644 — исправлено) вынести в .env или secrets
/opt/hermes-agent/.env OPENROUTER_API_KEY, GLM_API_KEY, TELEGRAM_BOT_TOKEN, KIMI_API_KEY 600 (было 644)
/opt/apps/totem-platform/.env STRIPE_WEBHOOK_SECRET 600 (было 644)
/opt/vexa/.env TRANSCRIPTION_SERVICE_TOKEN, пароли/ключи портов сервисов 600 (было 644)
/root/docker-compose.openclaw.yml OPENCLAW_GATEWAY_PASSWORD inline в командной строке 600 (было 644 — исправлено)
/root/.config/claude-code/env CLAUDE_CODE_OAUTH_TOKEN; router-env: ANTHROPIC_API_KEY (через 9router) 600
/root/.openclaw/credentials/ telegram-default-allowFrom.json, telegram-pairing.json 600, dir 700
/root/.docker/.token_seed seed docker-токенов 600, dir 700
/root/.config/gogcli/ gog-credentials (OAuth google) 600
~/.ssh пусто — приватных SSH-ключей пользователя нет —
/etc/ssh/ssh_host_*_key host-ключи сервера 600 бэкапить при DR
systemd simbiot-*.service секретов нет (токены в .env/dash-env) 644

4. Отсутствует / не найдено

  • ~/.ssh/ — нет ни приватных ключей, ни known_hosts: доступ наружу по SSH не хранится.
  • /root/.git-credentials, .netrc, .pypirc — нет.
  • /etc/docker/ — нет registry-секретов (auths пуст).
  • Bitwarden-интеграция в config.yaml (secrets.bitwarden) — disabled, пароль-менеджер не подключён.
  • crontab /root/coop/scripts/* — inline-секретов нет (ключи тянутся из .env coop).

5. Рекомендации

  1. Права: исправлено в этом тике — 11 файлов с 644→600 (espocrm compose, hermes-agent, 9router, deip, jitsi, cal-diy, chatwoot, openclaw, totem-platform, vexa, hermes-api.service). На хосте есть не-root юзер swarm (uid 1000, bash) — мир-читаемые секреты были ему доступны.
  2. systemd с inline-секретами (hermes-api.service, openclaw): перенести в EnvironmentFile= с правами 600.
  3. git-история харнеса: .env с ROUTER_KEY+SIMBIOT_TG_TOKEN в коммитах 6236044/2f758bb. Репо без remote → утечки не было. Перед push: git filter-repo --path .env --invert-paths (или ротация обоих ключей).
  4. Бэкап state.db (/root/backups/hermes/) содержит сессии/креды: chmod 600 на *.bak.zst и добавить в скрипт umask 077.
  5. Экспозиция: dashboard 8765 и 9router 20128 слушают 0.0.0.0 — dashboard за токеном (ок), 9router — проверить firewall/привязку, JWT_SECRET и API_KEY_SECRET живут в его .env.
  6. Куда выгрузить копию (реестр+значения):
    • зашифрованный архив возрастом/age: age -r <public-key> secrets.tar.age → выгрузить в S3 Garage (уже есть S3_ACCESS_KEY_ID у rallly) или Hetzner Storage Box;
    • preferable: поднять Bitwarden Secrets Manager — интеграция уже есть в конфиге Гермеса (secrets.bitwarden.enabled: false → true), это даёт центральное хранение + ротацию + TTL;
    • критичный минимум для DR: chain-key.json (приватный ключ коопа), coop/.env (Stripe live + Hetzner), .hermes/.env (X OAuth refresh-токены невосстановимы!), hermes-api adapter key.
  7. Ротация: X_OAUTH2_USER_REFRESH_TOKEN — одноразовый по природе, копию держать обязательно; STRIPE_LIVE_KEY + HETZNER_API_TOKEN — ротация раз в 90 дней; ADAPTER_KEYS — сменить и разнести по файлу (см. п.2).

6. Хранение этого реестра

Сам реестр значений не содержит и безопасен в git. Значения секретов в него не заносить.