首页 > 解决方案 > 有选择地避免在ansible中将敏感数据写入日志(不使用nolog)

问题描述

我正在使用 DSC 和 Ansible 的组合。对于任何不重要的资源,通常需要 PSCredentials,这些分为两行,如下例所示:

PsDscRunAsCredential_username: '{{ansible_user}}'
PsDscRunAsCredentual_password: '{{ansible_password}}'

为了避免将敏感信息写入 Ansible 日志(例如,在详细模式下运行时,或者如果出现错误),建议使用 'nolog' 标志。

不幸的是,这会抑制所有信息 - 因此,如果出现错误,您只需返回“CENSORED”即可。

我希望可以将 win_dsc 修改为对此更聪明一些,并且想知道是否有人可以指出另一个模块中的类似示例,我可以从中学习/借鉴,假设这是一个常见的要求?

如果参数以“_password”结尾,我基本上想避免记录数据。

标签: powershellansibledsc

解决方案


不幸的是,我认为您不能在模块级别更改它。理论上,一个模块知道它要求的哪些东西应该是秘密的(比如密码或 API 密钥),但实际上问题的核心在于任务之外。

在详细模式和日志中,ansible 将显示模块的调用,包括秘密。no_log是他们提供的唯一解决方案,并且考虑到它no_log存在于模块之外,无论如何您都无法在模块中做任何不同的事情。

即使可以,日志记录和详细输出也在 ansible 引擎方面,因此需要他们来修复,基于这个问题,看起来除了提供no_log.

关于如何更轻松地直接测试 DSC 调用的另一个问题,我有一个答案;它专注于调试 DSC 的独特挑战,并且可以让您进入单步调试代码的阶段,因此它应该对故障排除有所帮助。


推荐阅读