我想使用PostgreSQL作为数据库创建一个Web应用程序。我希望对数据库进行加密,这样即使是对数据库服务器具有超级访问权限的攻击者也无法解密数据(或者至少他必须使用临时的内存数据来解决这个问题 hard < / em>的)。我不关心架构,只关心表的内容。
我也不想将解密密钥存储在应用程序服务器上的某个位置(既不在配置文件中,也不在硬编码中)。
相反,我的想法是使用用户通过Web应用程序提供的密钥加密整个数据库(或只是表和行?),并在运行时解密。
使用PostgreSQL可以实现这种情况吗?我实现了哪些选项?
旁注:这是一个基于.NET的应用程序(ASP.NET MVC3),我正在使用Npsql驱动程序。
答案 0 :(得分:1)
使用pgcrypto进行加密。但是,超级用户可以控制日志文件并告诉数据库记录每个查询的所有内容。这将包括查询,包括您的密码。
您可能想要使用SELinux和SEPostgreSQL。