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

mysql进阶:企业数据库安全防护方案

0.引言

数据库安全是系统安全的重中之重,做好数据库安全防护及规范,是系统建设的基础。

今天我们来看看企业生产如何落地数据库安全防护机制。

1. 数据库安全问题

最好数据库安全,我们首先要了解能够威胁数据库安全的问题有哪些:
在这里插入图片描述

  • 1、基础设施薄弱
    作为数据库的第一层防护,我们的防火墙、网络设备、服务器等基础设施的防护如果不足,那么黑客则能够利用这些薄弱点,来攻击服务器,以获取数据库数据。

    甚至如果系统的硬盘存在问题,都不需要外部攻击,可能内部使用时就会导致数据损坏。

  • 2、弱认证
    数据库访问请求在经过网络层、硬件层的校验后,进入到数据库本身的认证校验中时,如果数据库本身的密码防护不足,也会导致安全问题。这一点也是很多初学者容易出现的问题,

  • 3、用户权限未隔离
    用户权限不做层级划分,不进行严格的权限分配,这是很多企业内部容易出现的安全问题。有的数据库管理员为了图方便,给每一个开发者都分配了一个最高权限的管理员账号,开发者能够随意更改表结构,调整库信息,这是非常危险的行为。

    从数据库管理员的职责出发,这样的做法是对企业生产极大的不负责。

  • 4、SQL注入
    SQL注入是我们老生常谈的问题了,这一点我们一般在开发层进行防护。随着开发者安全意识的提高以及各类持久层的完备,这类问题倒是越来越少,但并不意味着我们可以不重视它,越是熟悉的地方,反而越容易马虎。

  • 5、数据库备份弱加密
    数据库连接加密是很多人都会完善的,但是较多企业缺会忽略备份数据的加密或者加密等级不足,也会导致数据的二次泄漏。安全防护在哪一层都容不得马虎。

  • 6、数据库未做审计
    针对数据库搭建审计系统,这一点依然是不可或缺的。使用审计系统,我们可以监控执行的数据库更新语句,能够在数据更改中加上一层防护。最后一层防止职权的滥用以及针对SQL的检验。

    很多企业觉得我们企业小,没必要花钱搭建数据库审计系统,但生产数据的安全防护,真的不能有一点马虎,如果企业在这一块的投入有限,但至少将生产环境保护起来,同时现在开源免费的数据库审计软件有很多,所需要投入的无非就是服务器成本和运维成本。如果连这一点都舍不得,那么数据安全的风险你也需要硬着头皮承担。

2. 安全防护措施

在我们了解了数据库安全的风险点后,我们再一一针对这些问题点,来提出我们的防护方案:

2.1 网络硬件安全防护

针对基础硬件的安全防护,这一点不是开发能够关注得到的,一般是由硬件供应商来提供。因此我们就需要关注我们能够触及到的网络层安全防护了。

1、对外暴露时不要使用默认的数据库端口
比如3306,建立内外网端口映射。这样能够降低恶意程序对数据库的攻击准度。

2、网络隔离
通过VLAN、防火墙建立网络环境隔离,将开发环境、测试环境、生产环境区分开来,防止一个环境产生问题而导致的事故蔓延。
针对开发者需要连接上企业服务器进行某些环境部署或者生产排错的,需要搭建堡垒机,并且指定用户禁用某些敏感指令,比如rm,reboot,chown等指令。从根本上扼杀“删库跑路”的可能。

3、防病毒系统
如果你不想让你的服务器裸奔,那么安装防病毒系统必不可少,而选择哪些防病毒系统呢,最方便的解决方案就是联系你的服务器供应商,让他们给你提供完备的解决方案吧。
如果实在预算有限,那么就做好其他方便的防控,严格把控端口开放、权限释放。

4、监控系统
我们需要一个监控系统来帮助我们全天监控服务器情况,发现异常情况马上告知我们,比较早期的zabbix和现在流行的k8s都是不错的选择。

2.2 连接加密

除了网络和硬件层外,连接加密是数据库内部最顶层的保护措施了,设置用户连接数据库的账号及密码,注意密码不可设置的过于简单,最好包含大小写字母、数字、特殊字符,长度不小于8位

针对书写在配置文件中的连接密码,要设置加密,防止二次暴露

2.3 用户权限隔离

这一点是重中之重,权限分层管理,不同的用户、角色设置不同的权限,普通开发人员不给予DDL权限,选择性开放DML权限。

不需要的绝不多开一点权限,权限开通严格执行审批流程。

2.4 视图保护

虽然现在已经不太建议采用视图了,但是针对一些内部对接或者特殊要求,视图依然是一种选择,通过视图可以严格把控输出哪些字段数据,并且针对视图进行赋权,把控哪些用户能够访问哪些视图。以此保障数据安全

2.5 审计系统

审计系统的搭建是小型企业实际生产容易忽略的问题,但是数据库审计系统却是数据安全防护至关重要的一环。除了完备的商业数据库审计软件外,我们还可以选择一些开源的数据库审计软件或插件,比如通过数据库审计插件:Percona Audit Log Plugin、MariaDB Audit Plugin、McAfee MySQL Audit Plugin、htp_audit,还有开源或免费审计软件:yearning、CloudQuery

2.6 防SQL注入

如今多数的web防火墙、数据库防火墙或者一些防护软件能够有效防护SQL注入,但是我们在实际的开发过程中依然要养成避免SQL注入的习惯,比如mybatis中书写中慎用${},在程序中书写特殊字符过滤器等。

2.7 数据库备份加密

数据库备份是必不可少的操作,一般我们可以采用mysqldump指令实现。但是备份的数据文件如果不加以严格管理,反而成为一个安全隐患。

针对备份的数据,做好异地储存,同时也要做好储存文件的加密,加密密码不可过于简单。守好安全防护的最后一关。

总结

本期针对数据库安全防护的讲解就到此结束了,本期先针对防护概念做出梳理,下一期我们将讲讲其中一些措施的具体实施

相关文章:

  • 会员营销体系构建需要满足的四个条件
  • C++----unordered_map unordered_set使用及模拟
  • R统计绘图-变量分组相关性网络图(igraph)
  • JUC并发编程系列详解篇五(线程基础理论进阶)
  • 设计模式 人类父母和猫孩子的关系理解观察者模式(发布订阅模式)
  • 【java核心技术】Java知识总结 -- 语法篇
  • Neo4j图数据库和GDS图算法应用
  • Hello, World
  • 蒋鑫鸿:9.10国际黄金原油最新外盘行情趋势点评附解一套技术指导
  • gem5 GPGPU-Sim 安装踩坑笔记
  • 【Linux私房菜】—— 远程登录与数据传输、Vim与Vi的基础用法、关机与重启、登录与注销、运行级别、root密码找回
  • JSR-133: JavaTM Memory Model and Thread Specification原文解析
  • html网页如何获取后台数据库的数据(html + ajax + php + mysql)
  • Spring之事务实现原理及其注解@Transactional底层和传播机制原理
  • 第14章: 集合
  • 《Java编程思想》读书笔记-对象导论
  • CSS中外联样式表代表的含义
  • EventListener原理
  • iOS高仿微信项目、阴影圆角渐变色效果、卡片动画、波浪动画、路由框架等源码...
  • isset在php5.6-和php7.0+的一些差异
  • Java|序列化异常StreamCorruptedException的解决方法
  • JavaScript 无符号位移运算符 三个大于号 的使用方法
  • java中的hashCode
  • Linux快速配置 VIM 实现语法高亮 补全 缩进等功能
  • PhantomJS 安装
  • QQ浏览器x5内核的兼容性问题
  • Redash本地开发环境搭建
  • 看域名解析域名安全对SEO的影响
  • 自动记录MySQL慢查询快照脚本
  • 说说我为什么看好Spring Cloud Alibaba
  • ​决定德拉瓦州地区版图的关键历史事件
  • ​水经微图Web1.5.0版即将上线
  • #14vue3生成表单并跳转到外部地址的方式
  • #define,static,const,三种常量的区别
  • #NOIP 2014# day.2 T2 寻找道路
  • #QT(一种朴素的计算器实现方法)
  • (1)(1.9) MSP (version 4.2)
  • (二)Eureka服务搭建,服务注册,服务发现
  • (附源码)spring boot建达集团公司平台 毕业设计 141538
  • (附源码)基于ssm的模具配件账单管理系统 毕业设计 081848
  • (附源码)计算机毕业设计SSM基于健身房管理系统
  • (更新)A股上市公司华证ESG评级得分稳健性校验ESG得分年均值中位数(2009-2023年.12)
  • (未解决)macOS matplotlib 中文是方框
  • (转)fock函数详解
  • (转)总结使用Unity 3D优化游戏运行性能的经验
  • (自适应手机端)响应式新闻博客知识类pbootcms网站模板 自媒体运营博客网站源码下载
  • .NET 4 并行(多核)“.NET研究”编程系列之二 从Task开始
  • .net Application的目录
  • .net 设置默认首页
  • .netcore 如何获取系统中所有session_如何把百度推广中获取的线索(基木鱼,电话,百度商桥等)同步到企业微信或者企业CRM等企业营销系统中...
  • .NET企业级应用架构设计系列之技术选型
  • .NET上SQLite的连接
  • .Net中的设计模式——Factory Method模式
  • @DataRedisTest测试redis从未如此丝滑
  • @transaction 提交事务_【读源码】剖析TCCTransaction事务提交实现细节