Можно ли гарантировать, что дампы, взятые из базы данных PostgreSQL, всегда зашифрованный?
Данные в базе данных очень конфиденциальны, и мы не можем позволить себе неавторизованный персонал, в том числе системных администраторов, которым необходимо сделать резервную копию базы данных, чтобы получить доступ к фактическим данным.
В PostgreSQL нет ничего встроенного. Лучше всего зашифровать его с помощью внешней программы.
pg_dump ... | encrypt > mydump.pg.enc
Можно ли гарантировать, что дампы, взятые из базы данных PostgreSQL, всегда зашифрованы?
Да. Вам нужно будет создать механизм (возможно, сценарий или программу), который будет выполнять резервное копирование и предоставлять дамп, который в результате зашифровывается. Затем администраторы запустили бы сценарий и наблюдали за процессом, но не смогли бы определить содержимое дампа.
Вам также необходимо защитить необработанные данные таким образом, чтобы их нельзя было увидеть, возможно, поместив их на зашифрованный том с паролем, который может быть введен только определенным персоналом. Тогда доступ к этому объему будет ограничен для очень определенного набора пользователей и служб, что фактически лишит возможности реплицировать данные для проверки в другом месте. Это означает, что на компьютерах с Windows они будут не быть администраторами домена (которые могут обойти безопасность); в Linux / BSD они не иметь возможность «стать пользователем root» (что также обходит безопасность). Это создает огромную нагрузку с точки зрения администрирования компьютеров, которые вы будете использовать, потому что многие административные функции требуют доступа на этом уровне. Это не значит, что это невозможно, но это создаст огромные накладные расходы на то, как они будут выполнять свои обязанности. Вам нужно будет найти творческие способы заставить скрипты запускать другие скрипты с повышенными привилегиями (и так далее).
Самым простым решением было бы физически изолировать сервер и поручить только определенному доверенному персоналу выполнить последовательность резервного копирования, запустив сценарий, который создает зашифрованный файл дампа. Доступ к данным будет осуществляться через обычное (порт 5432) соединение PostgreSQL, но другой доступ к сети будет запрещен. Это также означает, что вашим системным администраторам не будет разрешен доступ к рассматриваемому серверу.
Данные в базе данных очень конфиденциальны, и мы не можем позволить себе неавторизованный персонал, включая системных администраторов, которым необходимо сделать резервную копию базы данных, чтобы получить доступ к фактическим данным.
Тогда у вас фундаментальное затруднение. Ваши администраторы - это люди, которым вы должны доверять. Это связано с тем, что большая часть административного доступа на компьютере обходится без проверок безопасности, чтобы администратор мог выполнять свои обязанности.
Конечно, вы можете создавать инструменты и методы, которые отделяют их от прямого доступа к данным, но, честно говоря, умный администратор сможет обойти это с небольшими усилиями. Здесь в игру вступает доверие.
Помните, честность и доверие - настоящая ценность системного администратора., и что отличает их от других пользователей. Они должны обеспечить целостность ваших данных и сохранить доверие пользователей к своим системам. Без того или другого, ну ... вам лучше выполнять свой долг самому.
Системный администратор, который выполняет резервное копирование БД, IMHO всегда может смотреть в таблицы, поэтому само содержимое таблицы должно быть заблокировано. Единственный способ добиться этого - зашифровать данные перед их сохранением в БД, но это может немного увеличить сложность запроса и создание индекса.