分析了一段时间openstack的安全,觉得有下面这些事情要做:
(1)防止权限提升
A. 原生系统的密码是明文保存在配置文件里面,对于无权访问keystone和数据库,但是有权限访问配置文件的操作系统用户,他可以通过读取配置文件来提升自己的权限。
要通过对oslo.config进行改造,来解决该问题(注意swift不使用oslo.config)。方法是把密码加密后保存在配置文件中,再在读取配置文件的库oslo.config中进行解密。
oslo.config是openstack组织自己开发的库,本来是用来读取文件的,通过修改他,我们能实现配置文件的加密读取。
配置文件加密的方法有两种,全文件加密,单个配置项单独加密。第一种方法控制简单,但是流程改动大,上层需要告知,因此我们建议用第二种。
即在读取到固定配置项后,再进行解密。
从安全的角度来看,密码是要一段时间修改一次的。因此在多节点的环境上,在修改完密码后,需要同步各个节点的配置,因此要提供脚本来自动修改所有的配置文件中的密码。要修改的有:keystone的内置账号密码,数据库密码,rabbitmq的密码,ceilometer的mongodb的密码,ceilometer各agent通信用的密码等。
B. 通过增加pipeline过滤日志中的敏感信息(token、password、email)。
因为日志级别设置高了,问题难以定位;设置低了,日志(特别是keystone)会记录token、password之类的信息。这些信息&#x