Введение
У панели поддержки уже есть ограниченная запись, но она всё ещё подключается через широкую запись Redis по умолчанию. Вы переключите конфигурацию и закроете старый путь, сохранив мониторинг.
Эта независимая среда содержит запись dashboard из прошлого урока. Достаточно изученных команд Redis и понятий ACL. Каждая операция открывает новое соединение, поэтому следующий запрос использует текущую конфигурацию.
Установить исходное состояние приложения
На этом шаге вы установите нормальную работу в новой среде. Откройте Dashboard. Вход — Ticket 104: password reset, результат пуст, пользователь — default. Нажмите Process ticket и найдите Processed: Ticket 104: password reset.
В Client прочитайте закрытую конфигурацию. cat показывает файл. Терминал начинает в /workspace, каталоге конфигурации приложения:
cat app.json
JSON хранит именованные поля внутри фигурных скобок. username обозначает пользователя Redis, password передаёт секрет аутентификации. Строки заключены в двойные кавычки, поля разделены запятыми. Сейчас пользователь — default, пароль пуст.
Приложение перечитывает файл при каждом запросе и открывает новые соединения Redis. Перезапуск и написание клиента не нужны. Отдельная запись monitor читает monitor:heartbeat; сохраните её работу при изменении стандартной записи. Файл содержит секреты, поэтому он закрытый и публично не выдаётся.
Переключить соединение панели
На этом шаге приложение начнёт использовать ограниченную запись. В Client замените конфигурацию с двумя полями. cat > app.json перенаправляет последующий текст в файл, заменяя старое содержимое. EOF в кавычках начинает встроенный документ; вставьте все строки, включая последний EOF на отдельной строке. Кавычки предотвращают подстановки оболочки в JSON.
cat > app.json <<'EOF'
{"username":"dashboard","password":"Dash-Lab-42"}
EOF
Меняется только конфигурация. В новом снимке запись уже имеет GET/SET для support:*. Перезагрузите Dashboard, проверьте пользователя dashboard и снова нажмите Process ticket. Старого результата недостаточно: новая операция подтверждает чтение и запись настроенной записью.
При WRONGPASS исправьте реквизиты JSON и повторите. При NOPERM изучите шаблон и команды через cache-admin ACL GETUSER dashboard в Cache Server. Полная команда сброса из первой лабораторной исправляет ошибочную запись. Неверный JSON можно исправить повторением блока выше.
Не используйте maint как обход: приложению нужна собственная ограниченная запись.
Закрыть широкий вход по умолчанию
На этом шаге вы отключите автоматический путь, сохранив легитимные записи. Перейдите в Cache Server. Запись обслуживания, используемая cache-admin, остаётся активной, сохраняя администрирование.
ACL SETUSER default off запрещает новую аутентификацию стандартным пользователем. Сохраните активное изменение в настроенный файл ACL:
cache-admin ACL SETUSER default off
cache-admin ACL SAVE
Обе команды возвращают OK. В Client попробуйте новое соединение без реквизитов:
redis-cli -h cache-server GET support:ticket
Ожидайте NOAUTH Authentication required. — нужный отказ. Он отличается от NOPERM, означающего нехватку прав аутентифицированной записи. Каждый вызов создаёт новое соединение. Отключение пользователя не гарантирует завершение уже аутентифицированных сеансов; их отзыв вне этой задачи.
Перезагрузите Dashboard и нажмите Process ticket. Именованная запись должна работать. Если отключили не ту запись, примените её полное правильное правило сброса в терминале обслуживания и сохраните. Не включайте широкий стандартный доступ для маскировки ошибки конфигурации приложения.
Проверить безопасность и доступность вместе
На этом шаге вы сравните разрешённую работу, запрещённые данные и ненужную команду. Используйте Client и вводите Dash-Lab-42 при каждом запросе --askpass.
redis-cli -h cache-server --user dashboard --askpass GET support:result
Обработанный результат поддержки остаётся доступным. Следующая команда намеренно запрашивает чужие финансовые данные:
redis-cli -h cache-server --user dashboard --askpass GET finance:payroll
Ожидайте NOPERM. CONFIG GET читает настройки сервера; даже это административное чтение приложению не нужно. Звёздочка в кавычках запрашивает все имена настроек и должна дойти до Redis без изменений:
redis-cli -h cache-server --user dashboard --askpass CONFIG GET '*'
Ожидайте NOPERM по правам команды. Затем используйте существующую запись мониторинга с паролем Monitor-Lab-42:
redis-cli -h cache-server --user monitor --askpass GET monitor:heartbeat
Ожидайте healthy. Отключение всех записей или остановка Redis нарушит этот положительный тест и не будет исправлением. В Cache Server покажите активные ACL и сохранённый файл:
cache-admin ACL LIST
cat /data/users.acl
Сохранённые записи должны совпадать с активными, включая default off. Иначе повторите cache-admin ACL SAVE. В завершение снова нажмите Process ticket в Dashboard. Реальная доступность вместе с осмысленными отказами подтверждает результат; одна исправная страница не доказывает минимальные привилегии.
Резюме
Вы переключили настоящее приложение на ограниченную запись Redis, отключили новый стандартный доступ, сохранили ACL и проверили запрещённые запросы вместе с бизнес-операциями и мониторингом. Проверки используют новые соединения и не утверждают отзыв существующих сеансов.


