# 🔒 Миграция: Обязательные системные credentials ## ⚠️ Критическое обновление безопасности **Начиная с этой версии, API ТРЕБУЕТ явной установки системных credentials.** Это изменение **устраняет критическую уязвимость** - захардкоженные дефолтные пароли в коде. --- ## 📋 Что изменилось? ### **До:** ```python # ❌ НЕБЕЗОПАСНО: Дефолтные значения в коде self._system_username = os.getenv("SYSTEM_ADMIN_USERNAME", "guacadmin") self._system_password = os.getenv("SYSTEM_ADMIN_PASSWORD", "guacadmin") ``` ### **После:** ```python # ✅ БЕЗОПАСНО: Обязательные переменные окружения self._system_username = os.getenv("SYSTEM_ADMIN_USERNAME") self._system_password = os.getenv("SYSTEM_ADMIN_PASSWORD") if not self._system_username or not self._system_password: raise ValueError("Credentials required!") ``` --- ## 🚀 Быстрая миграция (2 минуты) ### **Шаг 1: Генерируем безопасный пароль** ```bash openssl rand -base64 32 ``` **Пример вывода:** `Xk7N9pQ2vT8mL5wR3jH6yU4aF1sD0eG9` --- ### **Шаг 2: Меняем пароль в Guacamole** 1. Войдите в Guacamole: `https://mc.exbytestudios.com` 2. **Settings** → **Users** → **guacadmin** 3. **Change password** → вставьте сгенерированный пароль 4. Сохраните --- ### **Шаг 3: Обновляем production.env** ```bash cd /usr/local/guacomole_project nano GuacamoleRemoteAccess/production.env ``` **Найдите и обновите:** ```bash # 🔒 System Admin Account SYSTEM_ADMIN_USERNAME=guacadmin SYSTEM_ADMIN_PASSWORD=Xk7N9pQ2vT8mL5wR3jH6yU4aF1sD0eG9 # ⬅️ Ваш новый пароль! ``` ⚠️ **Пароли ДОЛЖНЫ совпадать!** --- ### **Шаг 4: Перезапускаем API** ```bash cd GuacamoleRemoteAccess docker compose restart remote_access_api ``` --- ### **Шаг 5: Проверяем работу** ```bash # Проверяем запуск API docker compose logs remote_access_api | tail -20 # ✅ Должно быть: # "System token refreshed successfully" # "Application startup complete" # ❌ Если ошибка: # "SYSTEM_ADMIN_USERNAME and SYSTEM_ADMIN_PASSWORD environment variables are required" # → Вернитесь к Шагу 3 ``` --- ## 🔄 Для существующих установок с дефолтным паролем Если вы **ранее использовали дефолтный пароль `guacadmin`**, ваша установка **продолжит работать**, но: ### ⚠️ **Рекомендуем немедленно обновить!** ```bash # 1. Сгенерируйте новый пароль NEW_PASSWORD=$(openssl rand -base64 32) echo "Новый пароль: $NEW_PASSWORD" # 2. Обновите в Guacamole UI (см. выше) # 3. Обновите production.env echo "SYSTEM_ADMIN_PASSWORD=$NEW_PASSWORD" >> GuacamoleRemoteAccess/production.env # 4. Перезапустите cd GuacamoleRemoteAccess && docker compose restart remote_access_api ``` --- ## 🆘 Troubleshooting ### Проблема: API не запускается после обновления **Логи:** ``` ValueError: SYSTEM_ADMIN_USERNAME and SYSTEM_ADMIN_PASSWORD environment variables are required ``` **Решение:** ```bash # Проверьте наличие переменных в production.env grep SYSTEM_ADMIN GuacamoleRemoteAccess/production.env # Должно быть: # SYSTEM_ADMIN_USERNAME=guacadmin # SYSTEM_ADMIN_PASSWORD=какой-то_пароль # Если пусто - добавьте: echo "SYSTEM_ADMIN_USERNAME=guacadmin" >> GuacamoleRemoteAccess/production.env echo "SYSTEM_ADMIN_PASSWORD=ваш_пароль_из_guacamole" >> GuacamoleRemoteAccess/production.env ``` --- ### Проблема: `Failed to authenticate system user` **Причина:** Пароль в `production.env` не совпадает с паролем в Guacamole. **Решение:** 1. Войдите в Guacamole UI 2. Убедитесь какой пароль установлен для guacadmin 3. Обновите `SYSTEM_ADMIN_PASSWORD` в `production.env` 4. Перезапустите API --- ### Проблема: Хочу продолжить использовать `guacadmin:guacadmin` **⚠️ НЕ РЕКОМЕНДУЕТСЯ для production!** Но если очень нужно (только для dev/test): ```bash # production.env SYSTEM_ADMIN_USERNAME=guacadmin SYSTEM_ADMIN_PASSWORD=guacadmin ``` ⚠️ **КРИТИЧНО:** Эта конфигурация небезопасна и может быть скомпрометирована! --- ## ✅ Checklist миграции - [ ] Сгенерирован новый пароль - [ ] Пароль guacadmin изменен в Guacamole UI - [ ] `production.env` обновлен - [ ] API успешно перезапущен - [ ] Логи подтверждают успешную аутентификацию - [ ] Дефолтный пароль больше **НЕ используется** --- ## 📚 Дополнительная информация - `SECURITY_SETUP.md` - полная инструкция по безопасной настройке - `DEPLOYMENT_API_GUIDE.md` - руководство по деплою - `production.env` - файл с переменными окружения --- **Время миграции:** ~2-5 минут **Downtime:** ~10 секунд (только перезапуск API) **Риски:** Минимальные (откат = вернуть старый пароль)