Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/lua/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Postgresql 使用pgcrypto而不是分区级加密是否有一些安全优势?_Postgresql_Encryption - Fatal编程技术网

Postgresql 使用pgcrypto而不是分区级加密是否有一些安全优势?

Postgresql 使用pgcrypto而不是分区级加密是否有一些安全优势?,postgresql,encryption,Postgresql,Encryption,这里的文档描述了使用postgresql加密数据的几种方法 我想知道使用pgcrypto加密特定列而不是简单地加密数据库所在的整个分区是否有任何安全优势。在我看来,pgcrypto使用起来很麻烦(而不是只使用SQL查询而不必担心被加密的事情),所以它的存在应该是有原因的。仅仅是因为人们可能没有能力管理数据库服务器(共享主机/等等),所以他们不得不使用pgcrypto,还是出于安全原因 在我的特殊情况下,应用程序代码和数据库位于同一主机上,因此在服务器处于活动状态时泄露服务器本身将导致数据以任何方

这里的文档描述了使用postgresql加密数据的几种方法

我想知道使用pgcrypto加密特定列而不是简单地加密数据库所在的整个分区是否有任何安全优势。在我看来,pgcrypto使用起来很麻烦(而不是只使用SQL查询而不必担心被加密的事情),所以它的存在应该是有原因的。仅仅是因为人们可能没有能力管理数据库服务器(共享主机/等等),所以他们不得不使用pgcrypto,还是出于安全原因

在我的特殊情况下,应用程序代码和数据库位于同一主机上,因此在服务器处于活动状态时泄露服务器本身将导致数据以任何方式泄漏(一种情况下可以在代码中查找加密密钥,另一种情况下只需从装入的卷中检索数据)

编辑:我忘了提到,在这种特殊情况下,数据是由服务器而不是客户端使用的,即客户端不能在运行时提供密钥,它必须在应用程序代码中位于服务器上。

  • 您可以授予DBA SQL级别的访问权限,而不会影响数据
  • 您可以为不同的数据使用不同的加密密钥
  • 您的备份(转储)已加密
  • 如果客户端提供加密密钥,则不必信任服务器
  • 如果将app server与DB server分开,则加密密钥只能在app server上
  • 您只能加密部分数据
  • 最后但并非最不重要的一点:pgcrypto比对称单密钥加密有更多功能,如非对称加密、加密散列、cryto-safe PRNG、密码散列
“如果客户端提供加密密钥,则不必信任服务器”并不完全正确,因为在使用pgcrypto时,密钥会发送到数据库服务器,因此,如果数据库服务器(而不是应用程序服务器)遭到破坏,则在可及的范围内。正如他链接的页面所述:“解密的数据和解密密钥都存在于服务器上……这是一个短暂的时刻,数据和密钥可以被完全访问数据库服务器的人(如系统管理员)截获。”