PostgreSQL 连接是否要通过SSL,为什么使用SSL 连接后,业务部门会投诉我?
开头还是介绍一下群,如果感兴趣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 的使用。
为什么,他们要提及这句话,实际上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 | 性能损耗 | 客户端模拟数量 | 应用线程数据量 | 数据操作方式 | 表数量 | 表行数 | 测试时间 | 说明 |
1 | 15201 | 17861 | 2660 TPS | 100 | 4 | update | 100 | 100万 | 180S | |
2 | 14658 | 17659 | 3001 TPS | 100 | 4 | update | 100 | 100万 | 300S | |
3 | 14733 | 17870 | 3137 TPS | 100 | 4 | update | 100 | 1000万 | 180S | |
4 | 14852 | 18049 | 3197 TPS | 100 | 4 | update | 100 | 1000万 | 300S | |
5 | 12249 | 14717 | 2468 TPS | 100 | 4 | update + select | 100 | 100万 | 180S | |
6 | 12501 | 14449 | 1948 TPS | 100 | 4 | update + select | 100 | 100万 | 300S | |
7 | 12628 | 15440 | 2812 TPS | 100 | 4 | update + select | 100 | 1000万 | 180S | |
8 | 12526 | 14527 | 2001 TPS | 100 | 4 | update + select | 100 | 1000万 | 300S |
基于相关的测试中的结果,在内网中对于POSTGRESQL 访问建议不启用SSL 的访问方式,而是采用其他的方式来进行核心数据的安全防护。
这里有以下的一些建议
1 在内网访问中,关于核心的表的核心字段进行字段加密,在数据写入到数据列中的数据为已经加密好的数据,读取数据解密也在应用程序中进行,尽量将对数据库产生可能的压力,分解到应用服务器中。
2 如果必须在数据库中进行加密则使用POSTGRESQL 扩展pgcrypto 来进行相关的工作。
但如果数据库是放到外网中,则需要更多的手段来进行安全防护,这里就不过多的进行叙述了。
相关文章:

PostgreSQL 连接是否要通过SSL,为什么使用SSL 连接后,业务部门会投诉我?
开头还是介绍一下群,如果感兴趣PolarDB ,MongoDB ,MySQL ,PostgreSQL ,Redis, Oceanbase, Sql Server等有问题,有需求都可以加群群内有各大数据库行业大咖,CTO,可以解决你的问题。加群请联系 liuaustin3 ,(…...

Linux驱动开发——USB设备驱动
目录 一、 USB 协议简介 二、 Linux USB 驱动 三、 USB 设备驱动实例 一、 USB 协议简介 USB(Universal Serial Bus,通用串行总线)正如它的名字一样,是用来连接PC外设的一种通用串行总线,即插即用和易扩展是它最大的特点。所谓即插即用&am…...

微服务使用指南
微服务使用指南 1.初识微服务 微服务可以认为是一种分布式架构的解决方案,提供服务的独立性和完整性,做到服务的高内聚、低耦合。 目前服务架构主要包含:单体架构和分布式架构。 1.1 单体架构 单体架构:把所有业务功能模块都…...

MYSQL运维篇(已完结)
一、日志 1. 错误日志 2. 二进制日志 😎 介绍 😎 日志格式 😎 日志查看 😎 日志删除 3. 查询日志 4. 慢查询日志 二、主从复制 1. 概述 2. 原理 3. 搭建 4. 总结 三、分库分表 1. 介绍 🍤 问题分析 🍤…...

MapReduce性能优化之小文件问题和数据倾斜问题解决方案
文章目录 MapReduce性能优化小文件问题生成SequenceFileMapFile案例 :使用SequenceFile实现小文件的存储和计算 数据倾斜问题实际案例 MapReduce性能优化 针对MapReduce的案例我们并没有讲太多,主要是因为在实际工作中真正需要我们去写MapReduce代码的场…...

面向萌新的数学建模入门指南
时间飞逝,我的大一建模生涯也告一段落。感谢建模路上帮助过我的学长和学姐们,滴水之恩当涌泉相报,写下这篇感想,希望可以给学弟学妹们一丝启发,也就完成我的想法了。拙劣的文笔,也不知道写些啥,…...

基于 golang 从零到一实现时间轮算法 (二)
Go实现单机版时间轮 上一章介绍了时间轮的相关概念,接下来我们会使用 golang 标准库的定时器工具 time ticker 结合环状数组的设计思路,实现一个单机版的单级时间轮。 首先我们先运行一下下面的源码,看一下如何使用。 https://github.com/x…...
【系统架构设计】架构核心知识: 5 系统安全性与保密性设计
目录 一 信息安全基础 1 信息安全的基本要素 2 信息安全的范围 3 网络安全...

无人零售奶柜:革新牛奶购买体验
无人零售奶柜:革新牛奶购买体验 无人零售奶柜的投放地点覆盖了社区、写字楼等靠近居民的场所,大大提升了消费者购买牛奶的体验。这一创新不仅令消费者能够享受到与电商平台相媲美的直供价格优势,还让他们能够购买更多、更丰富的知名品牌牛奶。…...

【Mybatis小白从0到90%精讲】15: Mybatis配置打印SQL日志
文章目录 前言配置日志实现前言 日志(Log)是每个程序都不可或缺的一部分,它可以帮助开发人员诊断和调试问题。Mybatis,作为一款备受赞誉的ORM框架,自然也提供了强大的日志功能。 它不仅提供了内置的标准实现,还支持集成各种主流的日志框架,让我们可以轻松地查看最终执行…...
vue3-video-play视频播放组件
安装: npm i vue3-video-play --save使用说明: https://codelife.cc/vue3-video-play/guide/install.html...
vue项目中页面遇到404报错
vue页面访问正常,但是一刷新就会404的问题解决办法: 1.解决方法: 将vue的路由模式 mode: history 修改为 mode: hash模式 //router.js文件 const router new Router({//mode: history, mode: hash,routes: [{ path: /, redirect: /login …...
快手直播弹幕websocket protobuf序列化与反序列化
系列文章目录 websocket训练地址:https://www.qiulianmao.com,正在搭建中 基础-websocket逆向基础-http拦截基础-websocket拦截基础-base64编码与解码基础-python实现protobuf序列化与反序列化基础-前端js实现protobuf序列化与反序列化基础-protobufjs实现protobuf序列化与反…...

viple入门(三)
(1)条件循环活动 条件循环活动中,必须给定条件,条件成立,则执行条件循环的后续程序。 条件不成立,则不执行后续程序。 从报错信息来看,程序提示:条件循环要和结束循环活动一起使用。…...
Vue渲染函数渲染html
版本 vue2.6 使用 domProps属性 domProps: {innerHTML: xxx},官方文档...

Odoo|“视图”和“模型”之间的数据传输
01前言 今天带领大家学习Odoo系统中“视图”与“模型”之间的数据传输。看题目我们可以知道,这篇文章是面向的是Odoo的初学者。Odoo作为当前最普遍的二开ERP系统,其开源,模块化,灵活开发的属性使得它在ERP相关领域十分受青睐。 …...
Electron进程通信的另一种方式
上一篇讲述了主进程和渲染进程之间的通信,其中是通过调用 ipcMain 和 ipcRenderer 来完成的。比如渲染进程给主进程发送一个消息,然后主进程再返回一个消息给渲染进程: 主进程的逻辑: ipcMain.on(selectDate,(e,date)>{conso…...

二次型的相关理解
...
Spring框架中用于注入构造函数参数的标签constructor-arg
一、constructor-arg的介绍 constructor-arg是Spring框架中用于注入构造函数参数的标签,它可以用于实现依赖注入的方式之一。在实际开发中,我们通常会在Spring配置文件中声明bean的时候使用constructor-arg标签注入构造函数参数。 constructor-arg标签有…...
spdlog简单介绍和使用
spdlog 是一个C的快速、可扩展的日志库,具有高性能和友好的接口。它支持多种日志输出目标,如控制台、文件、远程服务器等,并具有强大的日志格式化和异步日志记录功能。 以下是对spdlog的简单介绍和使用示例: 安装 spdlog 你可以…...
React hook之useRef
React useRef 详解 useRef 是 React 提供的一个 Hook,用于在函数组件中创建可变的引用对象。它在 React 开发中有多种重要用途,下面我将全面详细地介绍它的特性和用法。 基本概念 1. 创建 ref const refContainer useRef(initialValue);initialValu…...

微软PowerBI考试 PL300-选择 Power BI 模型框架【附练习数据】
微软PowerBI考试 PL300-选择 Power BI 模型框架 20 多年来,Microsoft 持续对企业商业智能 (BI) 进行大量投资。 Azure Analysis Services (AAS) 和 SQL Server Analysis Services (SSAS) 基于无数企业使用的成熟的 BI 数据建模技术。 同样的技术也是 Power BI 数据…...

【WiFi帧结构】
文章目录 帧结构MAC头部管理帧 帧结构 Wi-Fi的帧分为三部分组成:MAC头部frame bodyFCS,其中MAC是固定格式的,frame body是可变长度。 MAC头部有frame control,duration,address1,address2,addre…...

YSYX学习记录(八)
C语言,练习0: 先创建一个文件夹,我用的是物理机: 安装build-essential 练习1: 我注释掉了 #include <stdio.h> 出现下面错误 在你的文本编辑器中打开ex1文件,随机修改或删除一部分,之后…...
Golang dig框架与GraphQL的完美结合
将 Go 的 Dig 依赖注入框架与 GraphQL 结合使用,可以显著提升应用程序的可维护性、可测试性以及灵活性。 Dig 是一个强大的依赖注入容器,能够帮助开发者更好地管理复杂的依赖关系,而 GraphQL 则是一种用于 API 的查询语言,能够提…...

(二)原型模式
原型的功能是将一个已经存在的对象作为源目标,其余对象都是通过这个源目标创建。发挥复制的作用就是原型模式的核心思想。 一、源型模式的定义 原型模式是指第二次创建对象可以通过复制已经存在的原型对象来实现,忽略对象创建过程中的其它细节。 📌 核心特点: 避免重复初…...
Frozen-Flask :将 Flask 应用“冻结”为静态文件
Frozen-Flask 是一个用于将 Flask 应用“冻结”为静态文件的 Python 扩展。它的核心用途是:将一个 Flask Web 应用生成成纯静态 HTML 文件,从而可以部署到静态网站托管服务上,如 GitHub Pages、Netlify 或任何支持静态文件的网站服务器。 &am…...
2023赣州旅游投资集团
单选题 1.“不登高山,不知天之高也;不临深溪,不知地之厚也。”这句话说明_____。 A、人的意识具有创造性 B、人的认识是独立于实践之外的 C、实践在认识过程中具有决定作用 D、人的一切知识都是从直接经验中获得的 参考答案: C 本题解…...

九天毕昇深度学习平台 | 如何安装库?
pip install 库名 -i https://pypi.tuna.tsinghua.edu.cn/simple --user 举个例子: 报错 ModuleNotFoundError: No module named torch 那么我需要安装 torch pip install torch -i https://pypi.tuna.tsinghua.edu.cn/simple --user pip install 库名&#x…...
QT3D学习笔记——圆台、圆锥
类名作用Qt3DWindow3D渲染窗口容器QEntity场景中的实体(对象或容器)QCamera控制观察视角QPointLight点光源QConeMesh圆锥几何网格QTransform控制实体的位置/旋转/缩放QPhongMaterialPhong光照材质(定义颜色、反光等)QFirstPersonC…...