Переключить приложение на ограниченный доступ

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

Введение

У панели поддержки уже есть ограниченная запись, но она всё ещё подключается через широкую запись 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 и проверили запрещённые запросы вместе с бизнес-операциями и мониторингом. Проверки используют новые соединения и не утверждают отзыв существующих сеансов.