我们有一个应用程序,任何注册用户都可以创建自己的公司,并将该公司的访问权限授予任何注册用户。 每个公司都由Postgresql的架构代表。
有没有办法在模式中使用/解密用户数据而不使用存储在应用程序源代码中的en / decrypt的静态密钥?添加到公司的每个用户都必须能够访问公司的数据。
感谢您的回答
答案 0 :(得分:1)
这是一个可以写出书籍的问题。所以请记住,这是一个难题,你必须对这些问题采取一种非常复杂的长期方法。实质上,您不需要静态密钥,并且您不希望存储未加密的密钥。您有几个重要问题需要注意:
密钥管理和轮换。您可能需要使用公钥加密对每个用户加密静态密钥,并确保它们不会将其私钥保留在不受保护的位置!
意外密钥披露。因此,Pg端的数据现在已加密。怎么会有人拿到钥匙?简而言之,您无法定期记录查询,您可能希望在日志中将错误级别设置为FATAL等.PostgreSQL不会使这很容易被阻止。
意外明文披露。例如,出于性能原因,可以通过创建解密数据的索引来实现这一点.....还需要查看连接窃听等等。