PostgreSQL 数据安全之数据加密

大家好,我是只谈技术不剪发的 Tony 老师。

《中华人民共和国数据安全法》自 2021 年 9 月 1 日开始实施,这是我国第一部有关数据安全的专门法律。与此同时,《中华人民共和国个人信息保护法》也将于 2021 年11月1日起施行。相关法律的陆续出台,意味着国家对于信息安全保护制度的完善,同时也对存储和处理数据的企业和组织提出了更高的要求。

数据库作为存储电子数据的主要方式,需要通过加密技术保护敏感数据,如个人医疗记录或金融交易数据。本文给大家介绍一些 PostgreSQL 提供的加密技术。PostgreSQL 支持多个不同级别的灵活加密技术,可以保护数据不因数据库服务器被盗、内部管理员或者不安全的网络传输而导致泄露。

密码加密

PostgreSQL 支持用户密码的加密存储(加密方式由 password_encryption 参数决定),确保数据库管理员无法得到用户的密码。

如果我们采用了 SCRAM 或者 MD5 加密的客户端认证,明文密码甚至不会在服务器中出现,因为客户端在发送之前就已经进行了密码加密。推荐使用 SCRAM 加密,因为它是一个互联网标准,而且比 PostgreSQL 使用的 MD5 认证协议更安全。

注意,某些旧的客户端可能不支持 SCRAM 认证机制,因此无法使用 SCRAM-SHA-256 加密后的密码。关于密码认证的详细信息可以参考官方文档

字段加密

PostgreSQL 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)。同时,客户端可以指定只通过 SSL 连接到服务器(gssencmode=require)。

除此之外,Stunnel 或者 SSH 也可用于加密传输。

认证加密

PostgreSQL 客户端和服务器都可以提供相互的 SSL 认证。认证加密需要客户端和服务器的一些额外配置,但是可以提供比密码更安全的身份认证。

认证加密可以防止机器伪装成数据库服务器读取客户端发送的密码,同时也可以防止“中间人”攻击,也就是在客户端和服务器中间的机器伪装成服务器读取和传递它们之间的所有数据。

应用加密

如果数据库服务器的管理员不可信,需要使用客户端加密技术。这样的话明文数据首先会在客户端应用中进行加密,网络中传输的就是密文数据,数据库中不会出现明文数据。这种方式也被称为全加密数据库解决方案。

全加密数据库
【图片来源:阿里云】

注意,这种方式查询的数据结果需要在客户端应用中进行解密后才能使用,无法在数据库中使用 SQL 进行操作。

如果你觉得文章有用,欢迎扫一扫:

在这里插入图片描述

  • 5
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论
### 回答1: PostgreSQL 是一种开源的关系型数据库管理系统(RDBMS)。它支持大多数的 SQL 标准,并且在许多平台上运行,包括 Linux、Unix 和 Windows。PostgreSQL 在性能、可靠性和安全性方面都有很高的评价,因此常用来作为企业级应用的数据库。 ### 回答2: PostgreSQL是一种开源的关系型数据库管理系统,也是目前最先进和功能强大的数据库之一。它具备了高度的可靠性、可扩展性和稳定性,被广泛地用于各种规模和复杂度的应用中。 PostgreSQL以其ACID(原子性、一致性、隔离性和持久性)特性而闻名。这意味着它在处理并发操作和事务时非常可靠。它通过多版本并发控制(MVCC)技术实现了高度的隔离性,确保每个事务在一个独立的视图中运行,从而避免了数据争用和冲突。此外,PostgreSQL还支持完整的崩溃恢复机制,可以保证数据的持久性和一致性。 PostgreSQL还提供了丰富的功能集,包括复杂的查询、触发器、视图、存储过程和自定义函数等。它支持多种数据类型,包括基本的数字、字符串和日期类型,以及复杂的几何、网络地址和JSON等类型。此外,它还具有强大的索引和查询优化器,可以高效地处理大量数据和复杂查询。 PostgreSQL是一个高度可扩展的数据库系统。它支持水平和垂直扩展,可以在多台服务器上分布和并行处理数据。它还具有丰富的插件和扩展功能,可以根据需求进行自定义和扩展。 作为一个开源项目,PostgreSQL具有一个庞大和活跃的社区,不断地开发新的功能和修复错误。它还拥有完善的文档和教程,为用户和开发者提供了丰富的资源。 总之,PostgreSQL是一个功能强大、可靠性高和可扩展性好的关系型数据库管理系统,它适用于各种规模和复杂度的应用,是许多企业和组织的首选数据库解决方案。 ### 回答3: PostgreSQL是一种开源的关系型数据库管理系统(RDBMS),可以在多个操作系统上运行,如Windows,Linux和macOS等。它提供了高度可靠性和可扩展性的解决方案,广泛用于各种应用程序的数据存储和管理。 PostgreSQL具有许多强大的功能,使其成为一种受欢迎的数据库选择。首先,它支持ACID事务,这意味着数据的一致性和可靠性得到保证。其次,它具有丰富的数据类型,包括整数,浮点数,字符串,日期和时间等,以及存储和查询复杂数据类型的能力。此外,PostgreSQL支持高级的数据查询功能,包括复杂的联接,子查询和聚合。 此外,PostgreSQL还具有良好的扩展性和可定制性。它支持多种编程语言的接口,如Python,Java和C ++等,使开发人员可以轻松地与数据库进行交互。此外,PostgreSQL还支持存储过程,触发器和自定义函数等高级功能,使其能够适应各种应用程序的需求。 PostgreSQL还提供了一套完善的安全性措施,包括用户身份验证,访问控制和数据加密等,确保数据的安全性和保密性。此外,它还具有备份和恢复的功能,以便在发生故障或意外情况时能够迅速恢复数据。 总的来说,PostgreSQL是一种功能强大,可靠性高且可扩展的数据库管理系统。它在各种应用程序中被广泛使用,包括网站,企业级应用程序和科学研究等。它的开源性质使得它具有强大的社区支持和持续的改进,确保了它的稳定性和可靠性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

不剪发的Tony老师

为 5 个 C 币而折腰。

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值