papayu/docs/SECURITY_AND_PERSONAL_AUTOMATION.md
Yuriy 65e95a458d feat: мульти-провайдер LLM, тренды дизайна, Snyk/Documatic sync, личная автоматизация
- Мульти-провайдер: PAPAYU_LLM_PROVIDERS — сбор планов от нескольких ИИ (Claude, OpenAI), агрегация
- Тренды дизайна и иконок: вкладка в модалке, поиск по безопасным доменам (Tavily include_domains)
- Snyk Code: PAPAYU_SNYK_SYNC, REST API issues → snyk_findings в agent-sync
- Documatic: architecture_summary из .papa-yu/architecture.md в agent-sync
- Личная автоматизация: capability personal-automation (терминал git/npm/cargo, открытие URL)
- agent_sync расширен: snyk_findings, architecture_summary; analyze_project_cmd и run_batch пишут sync
- Документация: SNYK_AND_DOCUMATIC_SYNC.md, SECURITY_AND_PERSONAL_AUTOMATION.md, обновлён CLAUDE_AND_AGENT_SYNC

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-10 15:05:39 +03:00

70 lines
5.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Безопасность и личная автоматизация (терминал + интернет)
PAPA YU рассчитан на **личное использование**. Ниже — как настроена защита и как приложение может работать с терминалом и интернетом (Chrome, GitHub и т.д.) оставаясь надёжно защищённым.
---
## 1. Что разрешено по умолчанию
- **Файлы:** чтение/запись только в выбранных пользователем путях; защита служебных каталогов (`.git`, `node_modules`, `target`, `dist` и т.д.).
- **Сеть:** только исходящие HTTPS-запросы к настроенным API (LLM, OpenRouter и т.д.) из кода приложения; никакого произвольного доступа с фронтенда.
- **Браузер:** через встроенный механизм Tauri (`shell:allow-open`) можно открывать только ссылки `http(s)://`, `mailto:`, `tel:` в **стандартном браузере** системы (Chrome, Safari и т.д.). Произвольные команды в shell для этого не нужны.
---
## 2. Личная автоматизация: терминал и интернет
Чтобы приложение могло **самостоятельно** выполнять ограниченный набор действий в терминале и открывать ссылки (GitHub, документация и т.д.), используется отдельная capability **personal-automation**.
### Что даёт personal-automation
- **Открытие URL в браузере** (если по какой-то причине нужен явный вызов):
- macOS: `open` с аргументом-URL (только `https?://...`).
- Linux: `xdg-open` с URL.
- Windows: `cmd /c start "" <URL>`.
- **Терминал — только разрешённые команды и аргументы:**
- **git**: `status`, `pull`, `push`, `add`, `commit`, `checkout`, `branch`, `log`, `diff`, `clone`, `fetch`, `merge` и аргументы по валидатору (URL репозитория, имена веток/путей).
- **npm**: `install`, `run`, `ci`, `test`, `build`, `start`, `exec`, `update` и допустимые имена скриптов/пакетов.
- **npx**: `-y`, `create-*`, `run`, `exec` и допустимые имена.
- **cargo**: `build`, `test`, `run`, `check`, `clippy`, `fmt`, `install` и допустимые аргументы.
- **python3**: `-m pytest`, `pip install` и т.п. с ограниченными аргументами.
Любая **другая** команда или аргумент вне этого списка **заблокированы** на уровне Tauri (scope shell).
### Как включить
Capability `personal-automation` уже подключён в проекте: окно `main` получает эти разрешения вместе с базовыми. Ничего дополнительно включать не нужно.
### Как ужесточить защиту
1. **Отключить выполнение команд в терминале:**
В `src-tauri/capabilities/` удалите или переименуйте `personal-automation.json` и пересоберите приложение. Останется только открытие ссылок через стандартный `shell:allow-open` (без явных `open`/`xdg-open`/`start` из capability).
2. **Сузить список команд:**
Отредактируйте `personal-automation.json`: удалите ненужные блоки `{"name": "...", "cmd": "...", "args": [...]}` или сократите `args` до конкретных подкоманд/валидаторов.
3. **Оставить только открытие ссылок:**
В `personal-automation.json` оставьте только команды `open-url`, `xdg-open-url` и при необходимости `start-url`; блоки `git`, `npm`, `cargo`, `python3`, `npx` удалите.
---
## 3. Принципы защиты
- **Нет произвольного кода:** фронтенд не может выполнить произвольную строку в shell (например, `bash -c "..."`). Разрешены только команды и аргументы из scope.
- **Allowlist команд:** в `verify` и `auto_check` на бэкенде выполняются только команды из `src-tauri/config/verify_allowlist.json` с фиксированными аргументами.
- **Подтверждение пользователя:** применение изменений к проекту только после явного подтверждения (`user_confirmed`).
- **Сеть:** все вызовы к LLM/API идут из Rust (reqwest); ключи и URL задаются через переменные окружения, не хранятся в фронтенде.
---
## 4. Рекомендации для личного использования
- Храните `.env.openai` (ключи API) только локально и не коммитьте их в репозиторий.
- Используйте один аккаунт/профиль ОС для повседневной работы; не запускайте приложение с правами администратора без необходимости.
- При необходимости отключите или сузьте `personal-automation` по инструкциям выше.
---
*См. также: `README.md` (раздел «Безопасность»), `config/verify_allowlist.json`.*