У меня есть большое приложение ASP.NET, работающее на веб-сервере Windows 2003. Части системы обслуживают статические файлы (PDF, CSV, Excel и т. Д.), Которые содержат конфиденциальные данные. Файлы создаются определенными процессами в системе, загружаются пользователями и администраторами и получаются путем интеграции с другими системами.
Где лучше всего (наиболее надежно и практично) хранить этот файл. Я хранил их вне IIS и использовал код .NET для обслуживания файла при необходимости. Это работает достаточно хорошо, но пользователи высказывают опасения по поводу безопасности этих конфиденциальных файлов, поскольку они хранятся на веб-сервере.
Было предложено хранить их в базе данных, но я бы не стал этого делать.
Есть идеи? Спасибо!
но пользователи высказывают опасения по поводу безопасности этих конфиденциальных файлов, поскольку они хранятся на веб-сервере.
Ну да. Они хотят загружать и получать их через Интернет. Они будут на веб-сервере, по крайней мере, на какой-то момент процесса. Некоторые вопросы - кто пользователи? Они клиенты? Если да, то насколько хорошо они знают вашу архитектуру и должны ли они это иметь? Подпадает ли вы (если в США) под требования PCI или HIPAA или какие-либо другие правила? Если да, то вам следует провести аудит и поделиться результатами «прошел / не прошел» с клиентами, а не заставлять их придираться к вашему дизайну.
Пока каталог, в котором они хранятся, заблокирован, чтобы только приложение и действительные пользователи могли получить к нему доступ, они должны быть максимально безопасными. Вы можете переместить их на другой сервер, который веб-сервер может видеть, но не является публичным.
В конечном итоге файлы будут обслуживаться по сети, поэтому они должны быть доступны для чтения кем-то / чем-то.
Вы обслуживаете эти файлы через https?
Более подходящий вопрос: "Сколько накладных расходов вы готовы взять на себя"
Выгружая файлы на отдельный компьютер в той же сети (я предполагаю, что сеть Гбит / с), вы несете затраты примерно на 1/2 микросекунды для каждой транзакции (еще раз, я делаю предположения здесь о дисковом кеше и файле размер, но я думаю, что это разумное предположение). Это обеспечивает лишь незначительно лучшую безопасность. Путем разгрузки с помощью AES со 128-битным блочным шифрованием вы можете ожидать, что каждая транзакция будет зависать около 2-3 микросекунд). Разгрузка с AES-128 + аутентификацией через сеансы ASP, вы можете разумно ожидать, что она поднимется в диапазоне 20-30 микросекунд (на файл).
Я знаю, что вы заявили, что не помещаете их в базу данных, но я сторонник этого, где это уместно, и думаю, что вот оно. Каким бы способом вы ни хранили файлы, вы собираетесь взять на себя некоторые накладные расходы, проблема заключается в том, сколько вы захотите принять. Сохраняя файлы в базе данных, вы можете дополнительно ограничить круг лиц, которые могут их видеть, полностью удалив их из файловой системы. При правильном управлении и программировании вы можете ограничить доступ к файлам только для вашего приложения, тем самым устраняя необходимость в другом сервере и множестве изменений безопасности файловой системы, не говоря уже о дополнительном плане резервного копирования для этого дополнительного «безопасного» сервера.
Еще одним дополнительным преимуществом их такого хранения является то, что вы можете их зашифровать и хранить, а также получите упрощенный план резервного копирования.