具有凭证
回答
如果你不信任远程服务器 - 你永远不应该暴露敏感凭据它,因为具有该服务器上的root访问权限的人可以很容易地拦截通信量,文件和存储在该服务器上分配由你。让别人知道你秘密的最简单方法是转储临时文件,这些文件可以在远程服务器上完成它的工作,因为它只需要你连接的用户的特权!
有一个叫特殊的环境变量ANSIBLE_KEEP_REMOTE_FILES=1
来解决问题。它应该让您了解远程磁盘上实际存储的信息,即使是短暂的几秒钟。我执行了
ANSIBLE_KEEP_REMOTE_FILES=1 ansible -m command -a "echo 'SUPER_SECRET_INFO'" -i 127.0.0.1, all
命令在我的机器上查看远程计算机上创建的文件。它的执行后,我看到在我的主目录的临时文件,命名为~/.ansible/tmp/ansible-tmp-1492114067.19-55553396244878/command.py
因此,让我们用grep出来的秘密信息:
grep SUPER_SECRET ~/.ansible/tmp/ansible-tmp-1492114067.19-55553396244878/command.py
结果:
ANSIBALLZ_PARAMS =“{ “ANSIBLE_MODULE_ARGS”:{” _ansible_version “: ”2.2.2.0“, ”_ansible_selinux_special_fs“:[” 熔丝 “ ”NFS“, ”vboxsf“, ”RAMFS“], ”_ansible_no_log“:假 ”_ansible_module_name“: ”命令“, ”_raw_params“:” echo \'SUPER_SECRET_INFO \'“,”_ansible_verbosity“:0,”_ansible_syslog_facility“:”LOG_USER“,”_ansible_diff“:false,”_ ansible_debug“:false,”_ansible_check_mode“:false}}'
正如你所看到的 - 没有什么东西是安全的从窥探的眼睛!所以如果你真的关心你的秘密 - 不要在可疑主机上使用任何关键的东西,使用一次性密码,密钥或可撤销令牌来缓解这个问题。
这取决于你对这个证书的偏执。一般来说:不,这是不安全的。
我猜远程主机上的root用户可以看到任何东西。
例如,在远程主机上运行strace -f -p$(pidof -s sshd)
,并尝试通过ssh执行任何命令。
默认情况下Ansible写所有调用到系统日志远程主机上,可以为任务设置no_log: no
避免这种情况。
- 1. 重定向到具有凭证
- 2. 使用具有凭证的UNC路径
- 3. javax.xml.transform具有凭证的源代码
- 4. 具有基于证书的凭证的Azure ACS服务身份
- 5. Firebase凭证凭证API
- 6. HttpClient.GetAsync具有网络凭据
- 7. Authlogic没有提供凭证
- 8. 带有凭证的JSON NSURLRequest
- 9. SugarCRM账户凭证和机会凭证
- 10. 跨凭证凭证与资源共享
- 11. 凭证管理API(删除凭证)
- 12. 具有凭证和多个域的白名单的CORS
- 13. 如何验证具有相同凭据的子域
- 14. 具有服务帐户但无效凭证的Google AppEngine
- 15. 负载测试具有独特的凭证
- 16. 当npm具有git依赖性时的Git凭证
- 17. 验证FTP凭证
- 18. 使用具有RESOURCE_STATUS的python-rtkit创建RT票证:401需要凭证
- 19. Google API PHP - OAuth问题 - “请求具有无效的身份验证凭证”
- 20. 使用CmdLet New-AzureRmADAppCredential创建具有证书的新凭证时出错
- 21. 凭证阵列
- 22. Subversive Reject凭证
- 23. HttpRequest凭证
- 24. usps凭证
- 25. 凭证缓存
- 26. Paypal WPS凭证
- 27. 集中凭证
- 28. 凭证问题
- 29. 凭证无效
- 30. ServiceBase凭证
定义“安全” - 例如,您是否将凭证保存在Git仓库中? –
安全我的意思是说,远程主机上的用户(根或不用)应该永远不会看到带有这些凭证(历史记录或日志记录)的命令行。 证书将存储在Git仓库(私人)上,但我只想要关于远程方面的信息。 – Ardinis