为什么避免直连数据库
在有专业 DBA 或者数据库管理系统的团队中,对于生产数据库的操作是有专人和流程来保证的。因此能够知道数据库账号和密码的人少之又少。通常不太可能直接连接数据库。
一旦数据库账号被更多人知道将会带来安全风险,比如:
- 安全风险增加:直接使用数据库账号连接数据库,尤其是当这些账号拥有较高权限时,会极大地增加数据泄露和非法访问的风险。一旦账号信息被恶意获取,攻击者便能直接访问并操作数据库,造成数据篡改、删除或窃取等严重后果。
- 难以追踪和管理:在多用户或多应用的环境中,如果每个用户或应用都直接使用数据库账号连接,将使得权限管理和访问审计变得异常复杂。这不仅增加了管理成本,也使得在发生安全事件时难以快速定位问题源头和责任方。
数据库账号的密码是怎样被传播的
在有专业 DBA 或者数据库管理系统的团队中,对于生产数据库的操作是有专人和流程来保证的。因此能够知道数据库账号和密码的人少之又少。通常不太可能直接连接数据库。
但在实际情况中,团队一些开发人员手上多少都会拿到某个数据库账号和密码。这些流露出来的账号权限可能比较大。造成这样结果的原因有很多,比如以下几种情况:
- 生产数据库由于程序 Bug 突发问题需要熟悉业务的开发登陆生产数据库进行排查数据问题。
- 团队管理上对于数据库账号把控不严导致数据库账号在团队间被分享。
- 程序设计中对配置文件的管理不严格导致数据库账号密码被递交到 git 或 svn 仓库中。
- …
无论是何种因素,在没有统一的数据库访问工具之前这些风险都是一只存在的。因此也就有了 CloudDM Team 和 Yearning 这类工具。
通过代理访问数据库
解决数据库直连的最佳办法就是选择一个中间代理服务,例如:CloudDM Team、Yearning、Archery 等。
通过中间代理服务,可以做到如下能力:
- 避免直接连数据库,保障数据库账号的安全。
- 支持 SQL 审计,谁在什么时间执行了哪些 SQL 清晰可见。
- 通过 Web 浏览器提供服务,团队成员使用简单。
- 支持 SQL 规则校验,可以防止危害较大的 SQL 被执行。
- 工单流程,保障团队数据库变更流程的运转。
使用 CloudDM 来避免直连数据库
当安装好 CloudDM Team 并且在添加数据源之后,就可以通过分配 CloudDM Team 账号让团队成员访问数据库从而避免直连接数据库。
CloudDM Team 的产品界面比较清爽,作为管理员还可以在 “系统设置” -> “子账号管理” > “具体账号” 来分配团队成员的权限。
总结
通过前面的文章本文解释了团队中通过直连方式访问数据库的危害,并且在文章末尾推荐了一款工具可以帮助团队解决直连数据库的困境。