wordpress防站,做网站上传图片一直错误,wordpress博客模板教程,建设一个直播网站基本概念
数据库审计#xff08;简称DBAudit#xff09;能够实时记录网络上的数据库活动#xff0c;对数据库操作进行细粒度审计的合规性管理#xff0c;对数据库遭受到的风险行为进行告警#xff0c;对攻击行为进行阻断。它通过对用户访问数据库行为的记录、分析和汇报简称DBAudit能够实时记录网络上的数据库活动对数据库操作进行细粒度审计的合规性管理对数据库遭受到的风险行为进行告警对攻击行为进行阻断。它通过对用户访问数据库行为的记录、分析和汇报用来帮助用户事后生成合规报告、事故追根溯源同时加强内外部数据库网络行为记录提高数据资产安全。
数据库审计是数据库安全技术之一数据库安全技术主要包括 数据库漏扫 数据库加密 数据库防火墙 数据脱敏 数据库安全审计系统
概括起来主要表现在以下三个层面 **管理风险**主要表现为人员的职责、流程有待完善内部员工的日常操作有待规范第三方维护人员的操作监控失效等等离职员工的后门致使安全事件发生时无法追溯并定位真实的操作者。SQL审核是保证数据库DDL 和 DML 安全使用、SQL变更可追溯、降低线上数据事故概率的重要手段。 **技术风险**Oracle, SQL Server是一个庞大而复杂的系统安全漏洞如溢出 注入层出不穷每一次的CPUCritical Patch Update都疲于奔命 而企业和政府处于稳定性考虑往往对补丁的跟进非常延后更何况通过应用层的注入攻击使得数据库处于一个无辜受害的状态。 **审计层面**现有的依赖于数据库日志文件的审计方法存在诸多的弊端,比如:数据库审计功能的开启会影响数据库本身的性能、数据库日志文件本身存在被篡改的风险难于体现审计信息的有效性和公正性。此外对于审计数据的挖掘和迅速定位也是任何审计系统必须面对和解决的一个核心问题之一。
行业产品现状
企业产品
就国内而言做数据库审计产品的公司越来越多比如安华金和、天融信、安恒、绿盟、Themis宜信公司等等。
云平台数据库审计
阿里云、AWS等都有自己的数据库审计平台。
开源类
本文即将介绍的Yearning。 开源数据库审计平台Yearning
简介
Yearning是一个轻量级的Web端的MySQL SQL语句审核平台提供查询审计SQL审核SQL回滚自定义工作流等多种功能。Yearning的前端是基于Vue.js构建的它还提供SQL语法高亮、自动补全和智能提示、可视化等。
Yearning自身包含了一套通常适用的审核规范基本上能满足日常需要同时规范了日常开发需求所涉及到的SQL变动在Yearning平台的辅助下日常的SQL变动也更加贴近SQL使用的规范化、标准化的要求同时100%基于GO语言研发的Yearning也可以通过自定义二次开发(遵循AGPL协议)增加一些符合自己审核策略。
Yearning的安装十分简单它只依赖一个mysql数据库用于存储工单的数据。官方提供了安装手册用于在linux上安装Yearning。除此之外Yearning还支持容器化部署安装包内置了Dockerfile方便快捷。同时Yearning还支持二次开发二次开发的同学可以自己构建发布。
主要功能Feature SQL查询 查询工单 导出 自动补全智能提示 查询语句审计 SQL审核 流程化工单 SQL语句检测与执行 SQL回滚 历史审核记录 推送 E-mail工单推送 钉钉webhook机器人工单推送 用户权限及管理 角色划分 基于用户的细粒度权限 注册 其他 todoList LDAP登录 动态审核规则配置 AutoTask自动执行
兼容性与依赖
Yearning 不依赖于任何第三方SQL审核工具作为审核引擎内部已自己实现审核/回滚相关逻辑。 仅依赖Mysql数据库。mysql版本必须5.7及以上版本 Yearning日志仅输出error级别,没有日志即可认为无运行错误 Yearning 的前端管理界面基于1080p分辨率开发仅支持1080p及以上显示器访问 Yearning目前只支持MySQL。 Yearning SQL审核平台目前兼容99%的Mysql 标准SQL语法。已知不支持的语句类型有: 复杂的查询语句(多表,多函数,非必现。并不是所有复杂语句不支持) create table like 语句 视图语句 外键相关语句
部分功能展示
1. 登陆界面 2. 用户模块
2.1 Dashboard
dashboard主要展示Yearning各项数据包括用户数/数据源数/工单数/查询数以及其他图表。个人信息栏内用户可以修改密码/邮箱/真实姓名同时可以查看该用户权限以及申请权限 2.2 我的工单
展示用户提交的工单信息对于执行失败/驳回的工单点击详细信息后可以重新修改sql并提交对于执行成功的工单可以查看回滚语句并且快速提交SQL。 2.3 提交****工单DDLDML审核
提交DDL/DML相关SQL语句的执行审核需要指定SQL语句内容DDL或DML语句、SQL执行的数据库执行时间/频率、工单审核人等信息。此处的SQL编辑器支持语法高亮、自动补全等。等审核人审核通过后该DDL/DML语句才可按配置定时执行。 2.4 查询数据库
当用户需要查询/导出数据时需要提交查询审核申请单填写好查询说明、查询条件预估所需的查询时间等信息待审核人审核通过后用户方可进入查询页面进行查询。
在查询页面期间用户所提交的查询语句均会进行审计记录且仅支持查询语句不可使用非查询语句。 3. 审核模块
3.1 工单审核
管理员审核用户提交的工单DDL/DML语句执行申请管理员可以通过或者驳回用户的工单请求如果审核通过由执行人Yearning中的角色种类之一来点击执行按钮。
3.2 查询审核
管理员审核用户查询请求。
3.3 权限审核
管理员用户的权限审核
4. 管理模块
4.1 用户管理
创建/修改/删除用户。创建用户时需要指定用户角色操作人/执行人/管理员等以及部门等其他信息。 4.2 数据库管理
添加/修改/删除数据源。可以通过数据库地址本地或公网访问地址、端口号以及数据库的账号密码来关联不同的数据库包括本地的MySQL数据库部署在公网服务器的MySQL数据库阿里云、AWS等云平台的MySQL数据库等都可以添加到Yearning的数据源之中。
关联之后可以使用Yearning来对他们进行统一的管理。 4.3 权限管理
创建/修改权限组。Yearning中通过权限组的方式来进行权限控制将不同的用户加入到不同的权限组之中来赋予不同用户不同的权限。具体参见本文后续的Yearning中的权限设计章节
5. 通知模块
Yearning还支持进行消息推送。在设置中配置消息推送渠道支持钉钉机器人/邮件还支持OpenLDAP平台。 6. 内置SQL审核规则
Yearning内置了多种常见场景的SQL审核规则管理员开启对应的规则后用户提交的工单SQL语句会先经过内置审核规则的过滤内置规则判定通过后才会到达人工审核的流程。以此方式可以大大减少人工审核的工作量。 除了使用Yearning提供的内置审核规则之外100%基于GO语言研发的Yearning也可以通过自定义二次开发(遵循AGPL协议)增加一些符合自己审核策略。
下表展示了Yearning中原生支持的内置的审核规则
规则类型规则描述规则类型规则描述DDL强制表必须拥有表注释DMLInsert最大插入行数上限DDL强制表字段必须拥有列注释DML允许update/insert 语句使用limit关键字DDL强制非timestamp类型字段必须为NOT NULLDML不允许隐式转换DDL强制非text,blob,json,timestamp类型字段必须拥有默认值DML检查Insert语句中插入的字段名是否存在DDL强制float/double类型变更为decimal类型DML强制DML语句必须拥有where条件DDL强制自增列初始值为1DML禁止DML语句使用Order by子句DDL强制主键名称为IDDML禁止DML语句使用Select子句DDL强制主键为自增列DMLDML最大影响行数DDL强制主键必须使用无符号标志unsignedPt-osc开启Pt-pocDDL开启索引名称规范(索引名必须以idx_为开头Pt-oscpt-osc可执行文件路径,精确到文件本身。 如: /usr/bin/pt-online-schema-changeDDL开启mysql关键词检查Pt-osc当表体积大于该值且开启pt-osc时,该表DDL语句将使用pt-osc进行变更 单位:MDDL允许跨库表迁移Pt-osc--chunk-time 当需要复制的块大于设置的chunk_size时则不复制DDL允许删除表Pt-osc--no-drop-new-table 如果复制原始表失败则删除新表DDL允许删除库Pt-osc--no-drop-old-table 重命名后删除原始表。在原表被成功重命名以让新表取而代之之后如果没有错误pt-osc将在默认情况下删除原表。如果有任何错误pt-osc将保留原始表DDL允许主键类型为非int/bigintPt-osc--no-check-replication-filters 如果在任何服务器上设置了replication filter 则中止。pt-osc将查找replication filter的服务器选项如binlog_ignore_db和replicate_do_db。如果它找到任何这样的filter它将终止并产生一个错误。DDL允许索引名为空Pt-osc--no-check-alter 解析指定的——alter并尝试警告可能的意外行为。DDL允许单个工单提交多条DDL语句Pt-osc--no-check-unique-key-change 不检查唯一索引DDL允许字段进行类型转换(不同字段之间的转换或长度从长变短。如:int - bigint,int(50) - int(20))Pt-osc--print 打印OSC执行的SQL语句。DDL允许使用after/firstPt-osc--alter-foreign-keys-method 当pt-osc重命名原始表以让新表取而代之时外键“跟随”已重命名的表并且必须更改外键以引用新表。DDL允许创建视图Pt-osc--set-vars lock_wait_timeout 锁定等待时间 单位:秒DDL允许创建分区表Pt-osc--chunk-time 动态调整块的⼤⼩避免每个数据副本花费很长时间执行。DDL允许添加bit,enum,set类型字段Pt-osc--sleepDDLcreate/alter 表或字段时允许的Collate范围。多个请使用逗号进行分割Pt-osc--max-lag 复制最大延迟时间.单位:秒DDLcreate/alter 表或字段时允许的Charset范围。多个请使用逗号进行分割Pt-osc--check-interval 检查间隔时间。DDL建表必须拥有的字段,多个字段请用逗号分隔Pt-osc--max-load Threads_connected: 最大线程连接数DDL单个索引指定字段上限Pt-osc--max-load Threads_running: 最大线程运行数DDL单个表最多允许几个索引Pt-osc--critical-load Threads_connected 关键线程连接数DDLDDL最大影响行数Pt-osc--critical-load Threads_running: 关键线程运行数DDLchar字段最大长度Pt-osc--recursion-method 发现副本的首选递归方法。DDL表名最大长度限制
7. AutoTask自动执行任务
用户可通过该功能设置自动执行任务在任务配置中设置任务SQL语句的类型Insert/Update/Delete、任务的目标数据库、表格以及最大影响行数等条件。当提交的DML语句符合配置的任务条件时将会自动执行无需审核人审核。该功能仅限DML语句使用需要慎重使用 Yearning中的权限设计
1. 理念
Yearning自2.1.7版本之后采用权限组的方式进行权限授权,权限最低下放至数据源。
Yearning中用户先以角色的形式分为三大类,分别为 提交人/操作人/超级管理员。其中超级管理员角色为可见管理页面角色, 提交人/操作人为非可见管理页面角色。通过角色Yearning在细粒度权限划分之前先将用户分类。使管理类权限不会出现在使用者细粒度权限划分中
可根据每个用户的实际需求配置相应ddl/dml/查询数据源。每一类权限相互独立互不干扰。
2. 权限种类
在Yearning中权限共分为2大类 角色权限 细粒度权限
角色权限: 提交人/操作人/超级管理员 该权限主要用来划定各用户权限边界并规定功能入口
细粒度权限: DML/DDL/查询的数据源访问权限,查询上级审核人
3. 如何分配权限
**角色权限:**超级管理员在新建用户时可自行设置对应角色。LDAP用户登录默认第一次登录均为提交人角色。可在登录后由超级管理员修改角色(必须在赋权之前确定好用户的角色)
细粒度权限: 超级管理员建立权限组并将单个或多个权限组赋予用户使用户继承权限组的细粒度权限。
总结
Yearning是一款比较流行且成熟的开源MySQL SQL审计平台它的定位是面向中小型企业/组织/个人的轻量级平台。它可以帮助开发者快速的完成SQL语句的语法的审核、检测、执行和回滚等操作。
Yearning自身包含了一套通常适用的审核规范基本上能满足日常需要同时规范了日常开发需求所涉及到的SQL变动在Yearning平台的辅助下日常的SQL变动也更加贴近SQL使用的规范化、标准化的要求同时100%基于GO语言研发的Yearning也可以通过自定义二次开发(遵循AGPL协议)增加一些符合自己审核策略但是它的审核引擎Juno不是开源的。同时基于Vue.js开发的前端平台提供了SQL语法高亮、自动补全和智能提示、可视化等用户体验较好的交互形式也为它增色不少。
审核规则这一块的逻辑全部都是在JS中传递和处理的使得它在面对大规模数据场景时性能会遇到瓶颈。除此之外只支持MySQL的限制也让人觉得多少有点美中不足。
参考链接
https://github.com/cookieY/Yearning
https://guide.yearning.io/
转至https://developer.aliyun.com/article/790865