在这篇文章中,我们将介绍可用于加密和解密PostgreSQL数据库中数据的不同方法。拥有一些 Linux 和 PostgreSQL 经验是必要的,但拥有加密经验并不是必需的,有经验当然更好。本文是使用 Ubuntu 23.04上运行的 PostgreSQL16编写的。首先,我将介绍加密的一些动机及其对数据安全的重要性,然后查看 PostgreSQL为实现加密所提供的函数的子集。
#1 背景
虽然我们在日常生活中很少与加密进行交互,但它对于我们的敏感信息(如银行、医疗保健等)的安全至关重要。通常,加密过程会远离终端用户,隐藏所有复杂的数学和算法,让我们只需输入密码,就可以完成所有操作。但是,这些抽象需要权衡,因为我们必须相信解密我们数据的人不会对其进行复制或进行其他恶意行为。在这篇博客中,我们将介绍 PostgreSQL 用于加密数据的不同方法,以及我们在使用它们时遇到的权衡。
#2 加密选项
PostgreSQL文档列出了数据库软件支持的 6 个加密级别。这些级别包括:
>>>密码加密
可能是最简单和最常用的加密形式。在向服务器发送之前,PostgreSQL客户端将对用户密码进行Hashing处理,然后将其存储在数据库中。这意味着明文密码永远不会存储在服务器上,这使得潜在的攻击者很难获取到它。
>>>特定列的加密
pgcrypto 模块提供加密函数,用于加密存储在数据库特定列中的数据。要解密数据,