Предварительный просмотр дрейфа конфигурации

CloudflareBeginner
Практиковаться сейчас

Введение

API предварительного просмотра команды поддержки возвращает рабочую конфигурацию, а пробный запуск обслуживания отклоняет учетные данные для предварительного просмотра. Рабочее окружение по-прежнему функционирует. Ваша задача — восстановить границу предварительного просмотра, не ослабляя авторизацию обслуживания и не изменяя поведение рабочего окружения.

В этом независимом задании в новой виртуальной машине доступны небольшой Worker, два именованных локальных окружения и тестовые учетные данные. Примените методы настройки конфигурации, загрузки секретов и тестирования среды выполнения из учебных лабораторных работ. Задание считается выполненным, если оба локальных окружения соответствуют приведенному ниже контракту, а затем временные серверы и файлы секретов удалены. Здесь имена preview и live обозначают локальные тестовые окружения; вход в Cloudflare и развертывание не требуются.

Восстановите изоляцию предварительного просмотра

Текущая ситуация

Подготовленный проект находится в /home/labex/project/preview-drift. Установлены Node 22.22.0, локальный для проекта Wrangler 4.131.1 и независимая среда выполнения для тестирования. Серверы разработки пока не запущены. Предоставленный обработчик реализует общедоступную проверку работоспособности и пробный запуск обслуживания; ошибка находится в общедоступной конфигурации окружения preview и загрузке учетных данных.

Область работы

Работайте с файлами wrangler.jsonc, src/index.js, .dev.vars.preview, .dev.vars.live и .gitignore. Изучите обработчик и конфигурацию, чтобы определить контракт привязок. Два dotenv-файла содержат разные случайные учетные данные, предназначенные только для тестирования. Вы можете проверить имена ключей, не выводя их значения. Храните учетные данные только в этой виртуальной машине и исключите их из Git.

Запустите окружение Wrangler preview на loopback-порту 8080, а live — на порту 8081. Для одновременно работающих сред используйте разные порты инспектора. Применяйте обычные команды разработки Wrangler, установленного в проекте; это задание не создает удаленных ресурсов. QUEUE_LABEL — это отображаемая строка, а не сервис очередей.

Цель

Оба локальных окружения должны предоставлять предусмотренную для них общедоступную идентификацию и разрешать обслуживание только с помощью собственной настроенной учетной записи. Preview должен быть изолирован от live, а существующие общедоступная проверка работоспособности и безопасное поведение при ошибках должны сохраниться.

Критерии приемки

  • GET /health возвращает JSON со статусом ok. Preview сообщает об окружении preview и очереди sandbox, а live — об окружении live и очереди primary.
  • Каждое окружение загружает собственные тестовые учетные данные через привязку обработчика MAINTENANCE_TOKEN. Значения двух учетных данных должны различаться и находиться вне исходного кода и общедоступных переменных Wrangler. Локальные dotenv-файлы должны быть доступны только пользователю виртуальной машины и исключены из Git.
  • POST /maintenance возвращает код 200 с operation: dry-run и именем окружения только для корректных учетных данных Bearer соответствующего окружения. Отсутствующие, недействительные учетные данные и учетные данные другого окружения возвращают код 401 с error: unauthorized.
  • При отсутствии настроенного секрета запрос завершается безопасно: возвращается код 503 и error: maintenance_unconfigured. GET /maintenance по-прежнему возвращает код 405 с error: method_not_allowed; неизвестный маршрут по-прежнему возвращает код 404 с error: not_found.
  • Ответы и журналы приложения не должны содержать значения учетных данных. Оба локальных сервера должны оставаться запущенными для двух проверок этого шага. Авторизация в облаке, развертывание, отчет или скопированный маркер успешного выполнения не требуются.

Подсказки

Сравните источники каждого общедоступного значения

Изучите обращения обработчика к переменным окружения, а затем сравните именованные объекты окружений в wrangler.jsonc. Переменные окружения Wrangler не наследуются автоматически. Выбранное средой выполнения окружение и значения внутри этого окружения — разные вещи.

Разберите ответ maintenance-unconfigured

Отличайте отсутствие настроенной привязки от отклонения входящих учетных данных. Сравните имя привязки в обработчике с именами ключей в dotenv-файле конкретного окружения. Наличие локального файла не гарантирует, что в нем определена привязка, которую читает обработчик. После изменения конфигурации повторно проверьте готовность среды выполнения.

Сохраните поведение live и границу безопасности

Проверьте health и maintenance в обоих направлениях. Токен, действительный в одном окружении, должен быть недействительным в другом. Предоставленная операция обслуживания является пробным запуском, поэтому корректно авторизованный запрос не изменяет данные приложения.

Оставьте рабочее пространство чистым

Текущая ситуация

Исправленные локальные окружения прошли функциональные проверки. Их процессы разработки и файлы с тестовыми учетными данными по-прежнему находятся в этой виртуальной машине.

Область работы

Временными являются только задания разработки этого упражнения на портах 8080 и 8081, файлы .dev.vars.preview и .dev.vars.live, а также переменные оболочки, содержащие их значения. Сохраните исправленные исходный код, конфигурацию, зависимости и сервисы LabEx.

Цель

Исправленный проект должен остаться доступным, но работающие серверы задания и локальные файлы секретов должны быть удалены.

Критерии приемки

  • Ни на порту 8080, ни на порту 8081 не должен прослушиваться сервер разработки.
  • В каталоге проекта задания не должно остаться файлов секретов .dev.vars* или .env*.
  • Очистите переменные оболочки, использованные для тестовых учетных данных. Это действие выполняется учащимся; серверная часть не может проверить состояние вашей интерактивной оболочки.
  • Сохраните несвязанные процессы и файлы. В этом локальном задании нет облачных ресурсов или учетных данных Cloudflare, которые нужно удалять.

Подсказки

Работайте с запущенными вами заданиями

Используйте список заданий оболочки, чтобы определить два процесса разработки Wrangler. После перезапуска сервера номера заданий могут измениться. Сначала выполните функциональную проверку и только потом очищайте среду: удаление секретов раньше времени сделало бы предыдущие проверки неубедительными.

Итоги

Вы связали несоответствие идентификации preview со значениями именованного окружения, а ошибку обслуживания — с именем привязки учетных данных. Исправление восстановило изоляцию preview и сохранило поведение live, общедоступную проверку работоспособности и серверную авторизацию.

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

✨ Проверить решение и практиковаться✨ Проверить решение и практиковаться