Пишите один раз, читайте много (WORM), используя файловую систему Linux
У меня есть требование записать файлы в файловую систему Linux, которые впоследствии не могут быть перезаписаны, добавлены, обновлены или удалены. Не судом, корнем или кем-либо еще. Я пытаюсь выполнить требования регламента финансовых услуг по ведению учета, FINRA 17A-4, который в основном требует, чтобы электронные документы записывались на устройства WORM (один раз напиши, прочитай много). Я бы очень хотел избежать использования DVD-дисков или дорогих устройств EMC Centera.
Существует ли файловая система Linux или SELinux может поддерживать требование, чтобы файлы были полностью неизменными сразу (или, по крайней мере, вскоре) после записи? Или кто-нибудь знает, как я могу применить это в существующей файловой системе, используя разрешения Linux и т. Д.?
Я понимаю, что могу установить разрешения только для чтения и неизменный атрибут. Но, конечно, я ожидаю, что пользователь root сможет их сбросить.
Я рассмотрел возможность хранения данных на небольших томах, которые были размонтированы, а затем перемонтированы только для чтения, но затем я думаю, что root все еще может размонтировать и перемонтировать как доступный для записи.
Я ищу какие-нибудь умные идеи и наихудший сценарий, я готов сделать небольшое кодирование, чтобы "улучшить" существующую файловую систему, чтобы обеспечить это. Предполагая, что есть файловая система, которая является хорошей отправной точкой. И поставьте на место тщательно настроенный сервер Linux, который будет выполнять роль сетевого устройства хранения данных, не делая ничего другого.
После всего этого шифрование файлов также будет полезно!
4 ответа
Кажется, что нет способа сделать это без написания пользовательской файловой системы / кода ядра.
Жизнеспособным решением, по-видимому, является использование Amazon Glacier с возможностью архивного хранения WORM. Согласно официальному блогу AWS по адресу: https://aws.amazon.com/blogs/aws/glacier-vault-lock/
[...] новая функция Glacier, которая позволяет блокировать ваше хранилище с помощью различных средств контроля соответствия, разработанных для поддержки этого важного варианта использования хранения записей. Теперь вы можете создать политику Vault Lock в хранилище и заблокировать ее. После блокировки политика не может быть перезаписана или удалена. Glacier будет применять политику и защищать ваши записи в соответствии с указанными в них элементами управления (включая заранее определенный срок хранения).
Вы не можете изменить политику блокировки хранилища после ее блокировки. Однако вы все равно можете изменять и настраивать элементы управления доступом, не связанные с соответствием, с помощью отдельной политики доступа к хранилищу. Например, вы можете предоставить доступ на чтение деловым партнерам или назначенным третьим сторонам (как иногда требуется по закону).
Для меня это обеспечивает именно то, что нужно без затрат на оборудование NetApp или EMC, и при этом соответствует требованиям к хранению записей.
Вы можете сделать это с помощью OpenAFS и томов только для чтения. Однако для его работы необходимо установить множество инфраструктур, которые могут не соответствовать требованиям.
По сути, имеется записываемый том и одна или несколько копий тома, доступных только для чтения. Пока вы не освободите доступный для записи том, копии, доступные только для чтения, не могут быть изменены клиентами. Для освобождения тома требуются права администратора.
Кажется, что любое решение потребует либо специализированного оборудования, либо сетевой файловой системы, которая дублирует семантику специализированного оборудования.
Это вариант проблемы "Infalible backup", и единственный способ ее решения - использование нескольких удаленных файловых систем-червей, которые используют и совместно используют контрольные суммы и не имеют общего физического или административного доступа. Это гарантирует, что все записывается один раз, дублируется, может быть проверена на целостность, а в случае стирания, изменения или повреждения одного блока может быть восстановлена.
Plan9 или его производные могут включать все необходимые функции. Смотри Plan9 и Venti
Если вам просто нужен доступ к файлам из системы, в которой пользователи не могут их перезаписать, вы можете подключить удаленный том, на который у вас нет разрешения на запись. Самый простой способ сделать это - смонтировать общий ресурс samba/cifs только для чтения.
В противном случае, если вам нужен способ, позволяющий пользователям записывать новые файлы (которые нельзя перезаписать или изменить), решение заключается в подключении пути FTP с помощью FUSE curlftpfs.
Вы можете установить каталог proftpd с помощью следующих директив:
AllowOverwrite off
<Limit WRITE>
DenyAll
</Limit>
<Limit STOR>
AllowAll
</Limit>
Таким образом, новые файлы могут храниться в смонтированном каталоге, но их нельзя больше изменять или удалять.