СОЗДАЁМ · С ИИ← К программе
Оглавление материала

Безопасность личной лаборатории

Три правила ученика

  1. Репозиторий и порт предпросмотра — Private.
  2. В проекте — учебные данные. Ключи, пароли и реальные данные людей туда не добавляем.
  3. Смотри изменения перед сохранением. Не включай Allow all и не отключай защитные hooks.

Шифрование и доступ

Подключение к облачному Codespaces и приватному preview защищается HTTPS/TLS и входом GitHub. Private-порт доступен владельцу после входа. Каждый ученик работает в отдельной среде и своей копии; преподавательский репозиторий не заменяет личное рабочее место.

Для API используем индивидуальный ограниченный ключ. В Codespaces храним его через Codespaces secrets с доступом только к личному учебному репозиторию. GitHub шифрует такие секреты и расшифровывает их для работы среды. В браузер ключ не передаём; Vite не загружает .env и не экспортирует пользовательские переменные окружения автоматически.

В активной среде процесс, который использует ключ, получает его расшифрованным. Произвольный код ученика или разрешённая shell-команда тоже могут получить доступ к окружению. Общий, платёжный или административный ключ преподавателя здесь хранить нельзя. Чтобы скрыть оплачиваемый ключ от среды ученика, нужен отдельный серверный gateway с авторизацией и лимитами; в этом шаблоне его пока нет.

Это не сквозное шифрование от AI-провайдера: отправленный в модель код провайдер получает для обработки. Для конфиденциальных рабочих данных заранее выбираем разрешённый сервис и условия хранения. Локальный трекер хранит учебные задачи в браузере без отдельного шифрования; не записываем в него секретную информацию.

Что настроено в шаблоне

  • Локальный сервер слушает только 127.0.0.1. В Codespaces используется адрес контейнера, а доступ через интернет контролируется приватным forwarded-портом.
  • Host разрешён только для своей среды; CORS закрыт. Файловый доступ dev-сервера ограничен проектом, чувствительные пути запрещены к выдаче. public/ нельзя наполнять ключами и ссылками на частные файлы; подготовка приложения останавливается на таких именах.
  • В клиент автоматически не передаются пользовательские переменные окружения. Убрана загрузка шрифта с внешнего сервиса.
  • OpenCode запрещает обычное чтение/изменение перечисленных чувствительных файлов и доступ вне проекта, запрашивает подтверждение shell-команд и отключает share. Другие инструменты имеют собственные правила.
  • Для Copilot выключено автоматическое подтверждение всех действий и команд; чувствительные изменения требуют согласования. Это не запрет чтения файлов и не замена серверной изоляции.
  • pre-commit останавливает сохранение чувствительных имён файлов и некоторых узнаваемых ключей. Значения ключей не выводятся. pre-push подтверждает Private назначения через GitHub API с временным токеном Codespaces или авторизованный GitHub CLI и останавливает отправку, если проверить доступ не удалось.

Hooks устанавливаются при создании среды. Для уже открытой среды: node scripts/setup-hooks.mjs. Если были свои hooks, установка останавливается, чтобы их сохранить. При смене .devcontainer нужна пересборка среды; текущие workspace-настройки редактора лежат в .vscode/settings.json.

Если сохранение остановлено

Прочитай сообщение: убери чувствительный файл из staged-изменений, удали ключ из кода или проверь вход GitHub и Private назначения. В Codespaces используется штатный временный токен; на своём компьютере преподаватель помогает подключить GitHub CLI. Не обходи остановку через --no-verify. Если секрет уже отправлен, отзови его у провайдера: удаление из нового коммита не стирает историю.

Границы защиты

Настройки агента, hooks и Private по умолчанию защищают от части ошибок. Владелец личной среды может изменить настройки, обойти hook или открыть порт публично. Проверка имени файла и известных форматов ключей не распознаёт все секреты, не проверяет всю историю и не заменяет аудит. Внешние зависимости и расширения тоже исполняются с правами среды.

Для принудительной школьной политики понадобятся организация с нужными ограничениями либо управляемая платформа: централизованный запрет Public, минимальные права, серверный учёт бюджета, изоляция сети и журнал доступа. Этого шаблон сам по себе не обеспечивает. Наличие HTTPS не означает, что все данные скрыты от GitHub, AI-провайдера или владельца среды.

Источники: безопасность Codespaces, шифрование Codespaces secrets, разрешения OpenCode, настройки Vite, контроль действий Copilot.