前言
说到数据库的安全性,SAP BTP对此要求非常严格。并且基本上也是付诸行动,不只是嘴上说说。
这里,自然就提到几个问题:
在你们的生产环境里头,PostgreSQL数据库的用户,多长时间更换一次密码?这是第一个问题。或者说,设置完一次密码以后,后边就基本上没怎么换过?号称密码的rotate操作。
紧接着,单向SSL或者双向SSL证书,支持吗?或者说压根就不支持?证书同样也会有过期的问题,即算不过期,也有可能遇到要定期rotate的问题。
分析
先说说用户及密码
通常,在用户部署一个应用到BTP云平台以后,如果用到数据库(PG, HANA等),自然会绑定一个数据库服务的实例(以后有机会我会整理简单的使用方法),而服务实例里头就会包含有对应的credentials(用户连接信息)。
第一次部署的时候,肯定会进行相应的待绑定的数据库实例的生成与绑定。绑定完之后,会生成对应的用户名与密码。这个用户名绝不是简单易记的单词,密码更是长的你都没有兴趣去记。在这一点上,确实值得我们本地部署的DBA们借鉴。那就是生成长长的复杂的用户名与密码,人家想去进行多次尝试攻击,都没法攻击,因为你尝试的用户名根本就不存在。当然了,那个所谓的"postgres"数据库用户也不会在那里了。
至于生成用户名或密码的方法,有很多啊。
微信的公众号文章链接:https://mp.weixin.qq.com/s/U3uylVKZ-FsMjdeX3lymog, 像后边的串:
U3uylVKZ-FsMjdeX3lymog
生成的就很好,你也很难猜测。有大量的随机字符串生成算法可以采用。
这样虽然已经比较好了,但是还是不够安全。用户名和密码必须能定期更换。这里可以采取最长一个月必须更换一次。正好匹配了PaaS/SaaS应用一个月发布一次的频率,赶着每次发布的时候,强制更换用户及密码,连接的是同一个数据库,权限保持不变。
发布的时候,可以进行数据库的解绑定,再进行重新绑定。都可以通过发布的相关处理来自动完成。
再说说证书
证书的事,就会复杂一些,第一,它的周期比较长,通常,至少有效期一年以上。也有变态一点的,做成三个月一换。懒的,甚至做成10年或20年有效期。
它跟数据库实例级,联系的更紧密一些。因而大量的工作会落到数据库集中运维那一块。
因而,它并不是伴随着应用的再次部署,而同步更新。
大部分是通过平台,对所有的数据库实例统一更新证书。于是,新的问题或需求出现了?
在更新的时候,肯定是在上一个或若干过证书还没有过期的时候,就进行追加的。并且是统一动作。
最近,BTP平台,就出现过一些迷惑人的动作,证书是“更新”了,但是呢,旧的过期的证书仍然放到整个证书链上。结果,各个相关的Devops的内部监测程序,产生了误报:“认为系统的证书过期了”,接着会触发是否要关停应用,再触发再次更新证书的动作。
幸好,这一切是需要人工授权的,否则就会造成连琐反应,并且是崩塌型的。
在经过仔细比对分析以后,发现,在证书链中存在这种旧的过期的证书,如果有新的证书可以生效,那么也不是问题。于是各相关Devops的检测程序,经过适当调整,只找证书链当中有效期最长的那个证书,判定它是否是在未来2周(或更长一点)以内即可。这样也避免了产生误报。
当然,更理想的动作,难道不是平台那边,直接定期删除有效期已经超期的无用证书吗?
简单总结
安全性在云平台下边,是非常重要的一块。平时不出事时,一点也显现不出来。一旦出事,可能就是致命性的。
除了正常的备份以外,加强安全性的保护与定期的安全性维护,毫无疑问,是很有必要的。
比如,IP访问白名单的设置,云环境下,好多都是让公网访问的,那就更要进行相关设置了。
比如,定期进行包含最新安全补丁的数据库子版本升级。
比如,定期轮换数据库连接的用户名及密码 (坚决杜绝过于简单的用户名及密码)
比如,定期更换数据库连接的证书
比如,定期进行数据库的备份以及备份验证
比如,定期对数据库进行有效的chaosMonkey测试以及基础的安全测试验证
有了这些以后,也许可以在很大程度上保护你的数据库免受不必要的侵害。
往期导读:
1. PostgreSQL中配置单双向SSL连接详解
2. 提升PSQL使用技巧:PostgreSQL中PSQL使用技巧汇集(1)
3. 提升PSQL使用技巧:PostgreSQL中PSQL使用技巧汇集(2)
4. PostgreSQL SQL的基础使用及技巧
5. PostgreSQL开发技术基础:过程与函数
6. PostgreSQL中vacuum 物理文件truncate发生的条件
7. PostgreSQL中表的年龄与Vacuum的实验探索:Vacuum有大用
8. PostgreSQL利用分区表来弥补AutoVacuum的不足
9. 也聊聊PostgreSQL中的空间膨胀与AutoVacuum
10. 正确理解SAP BTP中hyperscaler PG中的IOPS (AWS篇)