
Информатика: создаём своего цифрового помощника Урок 57 из 72
Кому что разрешено: принцип наименьших прав
Библиотека даёт читателю книгу, а сотруднику право изменять каталог.
Где мы на карте
Урок 57 из 72. Блок «Цифровая безопасность» (55–62). Мы продолжаем локального помощника с тремя вымышленными задачами. Каждая мера имеет конкретную границу: учебная версия не становится готовым публичным сервисом.
Ситуация и вопрос
Библиотека даёт читателю книгу, а сотруднику право изменять каталог. Если выдать читателю права сотрудника, случайная кнопка может испортить записи. Так же разделим чтение и запись в помощнике.
Новые слова без пропусков
Аутентификация отвечает «кто пришёл?», авторизация — «что ему разрешено?». Роль собирает разрешения. Принцип наименьших прав даёт только необходимые действия и только на нужное время. Только чтение — запрет изменения через этот путь; это свойство конкретного подключения, а не абсолютная защита файла.
Опорный сигнал
Прочитайте три клетки схемы слева направо, затем закройте третью. Назовите вход и действие в каждой клетке; предскажите, чем закончится путь и какой наблюдаемый факт подтвердит ответ. Сравните рисунок с файлом проекта или контрольным примером. Если число на схеме не получается из данных, исправьте схему, а не данные под красивую картинку.
Разбираем шаг за шагом
Откройте data_store.py: connect_readonly использует SQLite mode=ro; страница читает задачи через него. Команда init отдельно создаёт новую БД, а повторный запуск не заменяет старую. Составьте матрицу: страница — читать, резервирование — читать источник и создавать новый файл копии, восстановление — создавать новый файл назначения. Ни одна операция не должна молча перезаписывать рабочую базу. Убедитесь, что POST веб-страницы отвечает отказом.
Предскажите и проверьте
Запишите ожидаемый вывод до запуска кода. Выполните его в указанной папке step-06 или step-07, сравните результат символ за символом и объясните каждую строку. Затем измените один безопасный вымышленный вход и повторите цикл «предсказать — запустить — изменить — объяснить — проверить». Наблюдение на маленьком наборе не превращайте в обещание для реальных людей.
from pathlib import Path
text = Path("data_store.py").read_text()
print("mode=ro" in text, "destination.exists()" in text)
Ожидаемый вывод
True True
Поймайте ошибку
Если другой процесс имеет права ОС на запись файла, read-only подключение страницы не мешает ему менять БД. Не называйте учебный сервер системой с аккаунтами: там нет входа, ролей пользователей и защищённого удалённого доступа.
Изменение проекта
В проекте 1.3 сохраняются исходные три задачи, четыре занятия и правила напоминаний. Новые действия вынесены в security_assistant.py: проверка, создание отдельной копии и восстановление только в новый файл. Запишите, от какой угрозы помогает это изменение и от какой не помогает; учебные данные остаются вымышленными.
Задание и доказательство
Нарисуйте матрицу «операция × разрешение». Объясните, почему доступ к чтению отчёта не должен автоматически давать право удалить базу. Проверьте отказ повторного init.
Перенос в новую ситуацию
Школьный чат требует редакторов и читателей. Какие действия каждому нужны и как отозвать доступ без общего пароля?
Возврат через 1, 7 и 30 дней
Через 1 день нарисуйте схему по памяти и найдите в ней одну границу применения. Через 7 дней объясните её товарищу, не читая урок, и решите 7 из 10 вопросов блока; ошибочные ответы разберите на конкретных входах. Через 30 дней откройте свежую копию проекта, воспроизведите проверку и перенесите принцип в новый пример. Сохраните свой протокол с входом, ожидаемым и фактическим результатом.
Первоисточник для проверки
Следующий урок
Если вы нашли ошибку или опечатку в тексте статьи, то сообщите нам об этом
Комментарии (0)
Войдите, чтобы оставить комментарий →
Пока нет комментариев. Будьте первым.