Вот интересная проблема, и я ищу шаблон, который сделает все это работоспособным.
Я создаю приложение для умного клиента для школьной системы. Он будет содержать информацию о студентах, включая их табели успеваемости, больничные и т. Д. он будет генерировать отчеты на уровне учеников, включая их табели успеваемости, каждый из которых будет содержать очень личные комментарии своих учителей. Приложение будет получать данные с удаленного сервера через веб-сервисы.
Так что данные довольно конфиденциальны. Я зашифрую его в базе данных и расшифрую при извлечении - никаких проблем там нет.
Проблема в том, что я и моя команда должны никогда не видеть данные открытого текста. Тогда возникает интересная проблема для исследования производственных ошибок! Мы хотим открыть ту же запись, что и пользователь, чтобы увидеть то, что он видит. Но если мы ДЕЛАЕМ, мы нарушаем конфиденциальность.
Моя мысль такова, и она не идеальна.
- Сначала зашифруйте данные перед сохранением в базе данных, расшифруйте их в пользовательском интерфейсе. Там ничего нового.
- Во-вторых, поместите механизм в пользовательский интерфейс, чтобы скрыть привилегированные данные. (т. е. имена и повествование учителя являются привилегированными; уровень образования - нет.) Я не буду шифровать это, но запутывать его - даже простой смены ключей будет достаточно. Причина в том, что эти отчеты полны текста. Если я зашифрую абзац и покажу результат в отчете, это будет сплошная стена из заглавных букв, не похожая на оригинальный текст. Если я сделаю сдвиг клавиш алфавитных символов, это будет нечитаемо, но все равно будет выглядеть как абзацы, предложения, маркированные списки и тому подобное. Будет легче увидеть, что происходит, не добавляя визуальных усложнений.
- В-третьих, я установил настройку конфигурации, чтобы выполнить обфускацию пользовательского интерфейса только для членов, скажем, роли SysAdmin, а не учителя или SchoolAdmin. Во время разработки я установил эту конфигурацию в False, и мы разрабатываем против фальшивого открытого текста. Для производства мы установили для него значение True, и с этого момента мы видим только запутанный текст.
Наконец, для тех случаев, когда мы абсолютно ДОЛЖНЫ видеть открытый текст записей учащегося, у нас есть настройка переопределения в пользовательском интерфейсе, которая противоречит настройке конфигурации и представляет открытый текст. И нам это удается на человеческом уровне - информируя администрацию школы о том, что в ЭТУ дату по ЭТОЙ причине нам нужно будет просмотреть ЭТУ студенческую запись и т. Д. Подписи подписаны, дано ворчливое согласие, юристы разбираются со своими самолетами, промывают повторить.
Мысли? Я чувствую, что это должно быть протоптанной землей. Пожалуйста, помогите мне улучшить этот план, если это возможно.