共计 1381 个字符,预计需要花费 4 分钟才能阅读完成。
参考翻译自 https://www.postgresql.org/docs/12/encryption-options.html
18.8. 加密选项
PostgreSQL 提供了多个级别的加密,并提供了灵活性,能够避免因为数据库服务器偷盗,不道德的管理员和不平安的网络而导致数据泄露。还可能用加密来爱护敏感数据,例如病历或财务交易。
明码加密
数据库中的用户明码以哈希值的形式贮存 (由设置 password_encryption 选项决定), 因而管理员无奈确定调配给用户的理论明码. 如果将 SCRAM 或 MD5 加密用于客户端身份验证, 未加密的明码永远不会长期呈现在服务器上,因为客户端会在通过网络发送之前对其进行加密. 举荐用 SCRAM, 因为它是 Internet 规范,并且比 PostgreSQL 特定的 MD5 身份验证协定更平安。
特定列的加密
pgcrypto 模块容许某些字段被加密存储。如果只有一些数据是敏感的,这将很有用。客户端提供解密密钥,数据在服务器上解密,而后发送到客户端。
解密的数据和解密密钥会在客户端和服务器之间进行解密和通信时,短暂地呈现在服务器上。这在这短暂的时刻数据和密钥能够被某个领有对数据服务器齐全拜访权的人截获,比方零碎的管理员。
数据分区加密
能够在文件系统级别或块级别执行存储加密。Linux 文件系统加密选项包含 eCryptfs 和 EncFS,而 FreeBSD 应用 PEFS。块级或全盘加密选项包含 Linux 上的 dm-crypt + LUKS 和 FreeBSD 上的 GEOM 模块 geli 和 gbde。许多其余操作系统也反对此性能,包含 Windows。
如果驱动器或整个计算机被盗,此机制可避免从驱动器中读取未加密的数据。这在文件系统挂载时无奈避免攻打,因为在文件系统挂载时,操作系统会提供未加密的数据视图。然而,要挂载文件系统,您须要某种形式将加密密钥传递给操作系统,有时密钥会存储在挂载磁盘的主机上的某个地位。
网络数据加密
SSL 连贯会加密通过网络发送的所有数据:明码,查问和返回的数据。pg_hba.conf 文件容许管理员指定哪些主机能够应用非加密连贯(host),哪些主机须要 SSL 加密的连贯(hostssl)。此外,客户端能够指定仅通过 SSL 连贯到服务器。
GSSAPI 加密的连贯对通过网络发送的所有数据进行加密,包含查问和返回的数据。(没有明码通过网络发送。)pg_hba.conf 文件容许管理员指定哪些主机能够应用非加密连贯(host),哪些主机须要 GSSAPI 加密的连贯(hostgssenc)。此外,客户端能够指定仅通过 GSSAPI 加密的连贯连贯到服务器(gssencmode = require)。
Stunnel 或 SSH 也能够用于加密传输。
SSL 主机认证
客户端和服务器都能够互相提供 SSL 证书。它须要在每一侧进行一些额定的配置,然而与仅应用明码相比,它提供了更弱小的身份验证。它能够避免计算机伪装成为服务器的工夫足够长,所以无奈读取客户端发送的明码。它还有助于避免“中间人”攻打,即客户端和服务器之间的计算机假冒服务器,并在客户端和服务器之间读取和传递所有数据。
客户端加密
如果无奈信赖服务器计算机的系统管理员,则客户端必须对数据进行加密;这样,未加密的数据就永远不会呈现在数据库服务器上。数据在发送到服务器之前先在客户端上加密,并且数据库后果在应用前必须在客户端上解密。