资讯专栏INFORMATION COLUMN

PostgreSQL 数据安全之数据加密

Dongjie_Liu / 2743人阅读

摘要:中华人民共和国数据安全法自年月日开始实施,这是我国第一部有关数据安全的专门法律。与此同时,中华人民共和国个人信息保护法也将于年月日起施行。数据库作为存储电子数据的主要方式,需要通过加密技术保护敏感数据,如个人医疗记录或金融交易数据。

大家好,我是只谈技术不剪发的 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 进行操作。

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

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/119342.html

相关文章

  • PostgreSQL安全性:快速查看身份验证最佳实践

    摘要:它提供自动身份验证单点登录。对于真实用户,更需要或身份验证。此外,如果从外部世界访问数据库服务器,则使用证书加密会话以避免数据包嗅探很有用。这种身份验证方法称为代理身份验证。 showImg(https://segmentfault.com/img/remote/1460000018887928); 来源 | 愿码(ChainDesk.CN)内容编辑 愿码Slogan | 连接每个程...

    SnaiLiu 评论0 收藏0
  • 【Filecoin源码仓库全解析】第七章:了解PoRep与PoSt并参与复制证明游戏

    摘要:如上图,验证过程可以表述为验证者会按照一定的规则向矿工提起挑战,挑战是随机生成的,矿工不能提前获知。三时空证明如图所示,可以理解为矿工一定时间内持续地生成复制证明和接受挑战和验证的过程,并通过这个过程,更新全网存储算力。 欢迎大家来到第七章,经过前章《【Filecoin源码仓库全解析】第六章:如何单机部署多节点集群及矿池设计思路》的介绍,我们分享了如何在单机部署多节点集群的知识以及矿池...

    shixinzhang 评论0 收藏0
  • docker-gitlab部署

    摘要:安装这里以发行版为例,在中输入一下命令安装最新的注意如果你使用了阿里云最新推出的镜像,那么可以省略本节的步骤。因为阿里云的这个镜像已经自带了版的,版本比较新,可以直接使用。 docker用来隔离应用还是很方便的,一来本身的操作较为简单,二来资源占用也比虚拟机要小得多,三来也较为安全,因为像数据库这样的应用不会再全局暴露端口,同时应用间的通信通过加密和端口转发,更加安全。 Gitlab...

    imtianx 评论0 收藏0
  • My Toolkit of Node.js

    摘要:它基于格式,在绝大多数情况下,使用协议传输请求。由它加密的文件可在所有支持的操作系统和处理器上进行转移。后话本文的描述及用语,仅基于本人目前的水平而写,难免有所局限和措辞不当之处。 原文链接:BlueSun | My Toolkit of Node.js Cheerio Fast, flexible, and lean implementation of core jQuery des...

    leeon 评论0 收藏0
  • 国内首款自研公有云数据安全服务亮相DTCC

    摘要:华为云数据库安全服务,简称,经过华为内部大规模实践和广泛邀请各行业企业试用后,已经在今年上线华为云。华为数据库安全服务能够更加全面的解决前文提到的敏感数据泄露的问题。5月12日,第九届中国数据库技术大会(DTCC2018)在北京落下帷幕,纵观三天的会议议程,当前全球主要的数据库例如Oracle,MySQL,SQL Server,PostgreSQL等纷纷亮相大会,来自国内外互联网、金融、教育...

    firim 评论0 收藏0

发表评论

0条评论

Dongjie_Liu

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<