当前位置: 首页 > news >正文

PostgreSQL 连接是否要通过SSL,为什么使用SSL 连接后,业务部门会投诉我?

5e514e538a76674dba949e91a66eaeac.png

开头还是介绍一下群,如果感兴趣PolarDB ,MongoDB ,MySQL ,PostgreSQL ,Redis, Oceanbase, Sql Server等有问题,有需求都可以加群群内有各大数据库行业大咖,CTO,可以解决你的问题。加群请联系 liuaustin3 ,(共1680人左右 1 + 2 + 3 + 4) 3群突破 490已关闭自由申请如需加入请提前说明,新人会进4群(200+)准备开5群,另欢迎 OpenGauss GAUSSDB的技术人员加入。

每日感悟

朋友走着走着就散了,可惜吗。谈不上一辈子你如火车,朋友如一段平行的列车,千万不要交汇点,有利益的冲突,那必然是车毁人亡,大部分时间人生的轨道上,只有你自己在上面飞奔,习惯就好。

相信使用数据库的同学,对于SSL这名词并不陌生,但问及SSL的数据库连接的访问的方式是否应该被用在数据库上面,这点可能知道的人就不多了,用了怎么样,不用又会怎么样。咱们的说一说,SSL安全套接字,安全套接字是一种加密的安全协议,1995由netscape发明,确保通信中的信息的隐私性和身份验证性等。SSL 本身在两个通信设备之间启动成为握手验证,确保两个设备确认他们所定义的身份,同时SSL还对数据进行数字签名验证数据是否到达目标接手者之前是否篡改过。

对于数据产品本身经过在这么多年的数据库使用中,并未有通过SSL协议来进行数据访问的使用经验,为什么有如下的一些问题需要进行解决。

1  什么时候应该使用SSL

这是一个好的问题,在多种的专业资料中都提到SSL对于数据库的必要性保证数据和应用端使用数据的信息安全,防止数据被盗取等问题。防止黑客对数据库数据进行访问或截取网络的数据包等问题,导致数据被盗取。但是SSL 协议以及相关的使用者从未说明这些SSL的使用的领域是在数据库被放置在公网的领域里面。

为什么基于SSL协议本身的一些问题,SSL对于数据库的性能损耗一直是一个被数据库工作者关心的问题,这正如你如果要横跨告诉公路,一定不能从告诉公路中横跨,但如果你仅仅是在你家小区横跨以下也要建立一个人行天桥就未免有些不能被理解了。

在一些安全的材料中,也提到SSL 的必要性,但专业的材料中也基本会提到,Unless the database server and the client are communicating over a local network. 这里大致的意思是SSL非常重要,除非你是在本地网络进行数据的访问,也就是你的应用和数据库都在一个网络内,在一个本地区域的网络内,这样就没有必要进行SSL 的使用。

dd56b711369c99acebab2ea4ace6cc76.png

为什么,他们要提及这句话,实际上SSL的使用是有很大的成本的,这里简单的描述SSL 访问的过程,这里 A 与 B 进行访问,则A 和 B 都需要选定加密的算法,通过确认饱含公钥的证书,并且双方 都要进行会话秘钥的产生和确认并且进行握手。简单的总结为5部分

1 client hello

2  server hello

3  certificate server key exchange , server hello done

4  client key exchange ,change cipher spec ,encrypted handshake message

5  change cipher spec, encrypted handshake message

也就是如果你想进行一次客户端和数据库之间的访问,要走5步后才能正常 进行数据的传输。相对于TCP/IP的协议,3步走,还要多两步。

所以我们必然考虑一件事情,在采用SSL 后对于数据库的性能下降我们是否能接受,正好我们最近做了一次PG的数据库在不采用SSL 和采用SSL协议后的数据的使用中的性能变化,我们简单列一个表。

基于下面的表中的测试数据,我们可以看到在相关的测试中,只要通过SSL 访问的方式中对比采用普通方式访问的情况下,必然出现性能的损耗,损耗的差异与表的大小 ,以及并发等都有关。

编号

数据库开启SSL/TPS

数据库关闭SSL/TPS

 性能损耗

客户端模拟数量

应用线程数据量

数据操作方式

表数量

表行数

测试时间

说明

编号

数据库开启SSL/TPS

数据库关闭SSL/TPS

 性能损耗

客户端模拟数量

应用线程数据量

数据操作方式

表数量

表行数

测试时间

说明

11520117861 2660 TPS1004update100100万180S
214658176593001 TPS1004update100100万300S
314733178703137 TPS1004update1001000万180S
414852180493197 TPS1004update1001000万300S
512249147172468 TPS1004update + select100100万180S
612501144491948 TPS1004update + select100100万300S
712628154402812 TPS1004update + select1001000万180S
812526145272001 TPS1004update + select1001000万300S

5f9ea1744aa08ac2d108f485ca270b57.png

基于相关的测试中的结果,在内网中对于POSTGRESQL 访问建议不启用SSL 的访问方式,而是采用其他的方式来进行核心数据的安全防护。

这里有以下的一些建议

1   在内网访问中,关于核心的表的核心字段进行字段加密,在数据写入到数据列中的数据为已经加密好的数据,读取数据解密也在应用程序中进行,尽量将对数据库产生可能的压力,分解到应用服务器中。

2   如果必须在数据库中进行加密则使用POSTGRESQL 扩展pgcrypto 来进行相关的工作。

但如果数据库是放到外网中,则需要更多的手段来进行安全防护,这里就不过多的进行叙述了。

3f3a1366947b167d9f0bbbc1e9e3e3be.png

4f372a253c7215a8b9b5f5e697016ed9.png

http://www.lryc.cn/news/221002.html

相关文章:

  • Linux驱动开发——USB设备驱动
  • 微服务使用指南
  • MYSQL运维篇(已完结)
  • MapReduce性能优化之小文件问题和数据倾斜问题解决方案
  • 面向萌新的数学建模入门指南
  • 基于 golang 从零到一实现时间轮算法 (二)
  • 【系统架构设计】架构核心知识: 5 系统安全性与保密性设计
  • 无人零售奶柜:革新牛奶购买体验
  • 【Mybatis小白从0到90%精讲】15: Mybatis配置打印SQL日志
  • vue3-video-play视频播放组件
  • vue项目中页面遇到404报错
  • 快手直播弹幕websocket protobuf序列化与反序列化
  • viple入门(三)
  • Vue渲染函数渲染html
  • Odoo|“视图”和“模型”之间的数据传输
  • Electron进程通信的另一种方式
  • 二次型的相关理解
  • Spring框架中用于注入构造函数参数的标签constructor-arg
  • spdlog简单介绍和使用
  • 分类模型的Top 1和Top 5
  • LinkdeList集合
  • KaiOS APN配置文件apn.json调试验证方法(无需项目全编)
  • 【qemu逃逸】HWS2017-FastCP
  • 调节扬声器和麦克风的音量
  • XShelll-修改快捷键-xftp-修改编辑器
  • 编译原理(1)----LL(1)文法(首符号集,后跟符号集,选择符号集)
  • 远程仓库地址改变后更换url
  • VR全景如何助力乡村振兴,乡村发展在哪些方面用到VR全景技术
  • 21.6 Python 构建ARP中间人数据包
  • DVWA靶场SQL注入