
У меня есть несколько журналов, используемых в качестве доказательства в вопросах конфиденциальности GDPR. Приложение обрабатывает персональные данные и регистрирует, кто их использует для каких целей. Журналы не должны читаться кем-либо, если только не ведется расследование злоупотреблений.
Как мне хранить эти журналы, которые будут ротироваться каждый день, в безопасном зашифрованном виде (локально)? Я думаю о задании root crontab, но пароль не должен быть в виде открытого текста. Все предложения очень приветствуются.
$ ls -ltrh
-rw-r----- 1 appuser appuser 83K May 27 23:55 gdpr.log.2018-05-27
-rw-r----- 1 appuser appuser 905K May 28 23:55 gdpr.log.2018-05-28
-rw-r----- 1 appuser appuser 3.0M May 29 23:40 gdpr.log.2018-05-29
-rw-r----- 1 appuser appuser 462K May 30 09:49 gdpr.log
решение1
Вы можете зашифровать файлы, используя открытый ключ, который находится на сервере, который можно расшифровать только с помощью закрытого ключа, который не находится на сервере. Таким образом, даже если сервер будет скомпрометирован, зашифрованные журналы все равно будут в безопасности.
Пример:
Создайте каталог для работы и новую пару открытого и закрытого ключей:
$ mkdir /tmp/1
$ cd /tmp/1
$ ssh-keygen -f key
$ ls
key
key.pub
Преобразуйте открытый ключ в pem
формат:
$ openssl rsa -in key -pubout > key.pub.pem
Создайте тестовый файл file
с именем и содержимым hello
:
$ echo hello > file
Зашифруйте файл, используя pem
открытый ключ формата, и запишите вывод в файл с именем encrypted
:
$ cat file | openssl rsautl -encrypt -pubin -inkey key.pub.pem > encrypted_file
Расшифруйте файл с помощью закрытого ключа:
$ cat encrypted_file | openssl rsautl -decrypt -inkey key
hello
Очевидно, вы захотите переместить закрытый ключ с сервера, и вы можете поместить команды шифрования в cronjob. Что-то вроде:
for file in /var/log/dir/*;do
cat "${file}" | openssl rsautl -encrypt -pubin -inkey /path/to/key.pub.pem > "${file}.encrypted" && rm "${file}"
done
решение2
Любой, кто хоть немного знаком с предметом, вероятно, мог бы задать сотню вопросов, чтобы установить, что было бы хотя бы реалистичной основой для решения. Тем не менее, вы рассматривали шифрование всего диска? Это действительно,Действительнопросто по сравнению с накладными расходами на создание любого вида автоматизации или процедуры, и, вероятно, достаточно хорошо, чтобы покрыть вашу ответственность (я не юрист), если только вы не находитесь на удаленном сервере.