一、什么是日志脱敏

在日常的运维工作中,当使用SSH会话、执行命令控制台作业等功能时,不可避免的会有如:密码、身份证号、银行卡号、手机号码等大量敏感数据会记录在运维审计日志中,为避免用户敏感数据泄露,行云管家针对运维审计日志提供了日志脱敏功能,保障数据安全;

行云管家中日志脱敏设置包含三个部分:SSH会话日志指令脱敏,命令控制台命令脱敏,脚本控制台参数脱敏,三种脱敏方式只对输入的指令、命令和参数进行脱敏,不会对输出的内容进行脱敏;

展开功能模块菜单,选择“安全中心”的“堡垒机”,在“审计日志”下“主机审计日志”、“作业执行日志”以及“任务执行日志”等页面里都可以进行“日志脱敏设置”,从而进入相应的日志脱敏设置。

1.1、SSH会话日志指令脱敏:

在“SSH会话日志脱敏设置”中点击“新建”;在列表中填写“规则名称”和“匹配规则”,匹配规则为正则表达式,通过正则表达式,对SSH会话所执行的指令进行匹配,匹配到的敏感数据在会话日志中将进行隐藏。

查看脱敏结果:

会话日志中SSH会话相关敏感数据已脱敏。

1.2、命令控制台命令脱敏:

在“命令控制台脱敏设置”中点击“新建”;在列表中填写“规则名称”和“匹配规则”,匹配规则为正则表达式,通过正则表达式,对命令控制台所执行的命令进行匹配,匹配到的敏感数据在作业日志中将进行隐藏。

查看脱敏结果:

作业日志中命令审计相关敏感数据已脱敏。

1.3、脚本控制台参数脱敏:

在“脚本控制台脱敏设置”中点击“新建”;选择脚本库与脚本,该脚本的所有参数在其执行日志中将进行隐藏。

查看脱敏结果:

作业日志中脚本审计中所有参数已脱敏。

1.4、任务执行历史脱敏:

由于任务编排中也会涉及到与脚本控制台、命令控制台相关的节点,所以任务的执行历史也会将涉及的敏感数据进行脱敏;

查看脱敏结果:

执行历史中敏感执行命令已脱敏;

执行历史中所有脚本参数已脱敏。

二、设置查看脱敏日志原始数据权限

相关法规有明确要求:日志脱敏后,仍然需要保留原始数据供查阅。因此,我们在权限管理中新增了“查看脱敏日志原始数据”权限,来设置哪些团队成员允许查看脱敏日志的原始内容。

在“团队管理/权限管理/功能授权”中,可以在“安全中心”的“操作日志”模块中向团队中的角色分配“日志脱敏管理”以及“查看脱敏日志原始数据”的权限,没有查看权限的用户将无法查看脱敏日志的原始数据。

如:在SSH会话审计录像中,拥有权限的人可以设置指令检索或播放录像中是否显示原始内容:

三、日志脱敏匹配规则设置参考

行云管家在运维审计日志中对会话指令或命令控制台命令的脱敏,是将运维策略中设置的脱敏规则的正则表达式与这条指令或命令进行匹配,将匹配到的敏感数据进行脱敏。因此在设定脱敏规则时,只需填写命令或指令本身相关的正则表达式即可,无需考虑其所在目录等元素,下面列举几个常见的日志脱敏设置场景;

3.1、MySQL密码脱敏:

在会话输入登录MySQL数据库的指令,如:mysql -u root -p 123456,会显示数据库密码,为了避免密码泄露,可以在SSH会话脱敏规则中添加以下规则:

  • 匹配规则:mysql.+-p\s*['"]?(\w+)['"]?

那么当用户在会话中尝试登录MySQL数据库时,输入的密码在运维审计日志将会进行隐藏。

3.2、SSH远程访问主机密码脱敏:

在会话中输入通过SSH远程连接某台主机的指令,如:sshpass -p '123456' ssh root@192.168.1.1,会显示目标主机密码,为了避免密码泄露,可以在SSH会话脱敏规则中添加以下规则:

  • 匹配规则:sshpass.+-p\s*['"]?(\w+)['"]?

那么当用户在会话中尝试SSH远程连接某台主机时,输入的密码在运维审计日志将会进行隐藏。