私密配置管理及同步工具链

2021-06-03 22:45:39 +08:00
 jeffreystoke
大家都在用密码管理工具管理自己的私密信息,对于登录类的支持都很好,但是对于软件需要用到含有私密配置信息的本地文件的时候就没什么作用了。

比较好的管理本地私密配置文件一种方案是用 system keychain 做存储,像 ssh-agent 就可以直接读取 keychain,其他不支持的就需要自己写 wapper 脚本封装(比如 rclone )。

我比较懒,想要 home 文件夹多端同步,想用 git 管理 home 文件夹,但是又不想把配置 commit 到 git 私有仓库,还有不想手动导入配置到 keychain 。

找了一圈没有发现解决方案,然后就想到是不是可以用 fuse 做一个虚拟文件系统,相当于 hook 了文件系统,私密配置文件被读取的时候通过系统安全机制让用户授权,内部对接密码管理工具实现配置同步。

于是我的 credentialfs 项目就诞生了,借助系统 keychain 和 密码管理工具,形成私密配置管理工具链。

目前只支持 macos 和 bitwarden,项目处于初始阶段,这两天刚写出来的,应该会有很多 bug

项目地址: https://github.com/arhat-dev/credentialfs

另外配合我的 dotfiles 管理方案可能效果会更好: https://github.com/jeffreystoke/dotfiles
1988 次点击
所在节点    分享创造
12 条回复
vlitter
2021-06-04 00:05:13 +08:00
有点意思,我前段时间就在想有没有这样的软件。star 了
jeffreystoke
2021-06-04 14:46:40 +08:00
@vlitter 感谢老哥,你是唯一一个 star 的,不知道是不是大家都有更好的解决方案,好像都没什么关注的意愿 🤣
vlitter
2021-06-04 15:12:46 +08:00
@jeffreystoke 领域不太同所以我也看不太懂🤭我就是觉得有这个需求,愿意关注这个项目的进展。或许有这个需求的人不多?我倒是觉得加密同步 home 里各种配置文件很有必要啊
jeffreystoke
2021-06-04 15:24:46 +08:00
@vlitter 😂 可能是我语言组织的问题吧,发帖之前感觉做这个很有用,发完贴之后人都傻了。。
zliea
2021-06-04 17:03:17 +08:00
我比较懒,一般都是 ln -s 方法解决同步配置问题
jeffreystoke
2021-06-04 18:24:54 +08:00
@ztechstack 但是这样还是会在本地留存私密配置
Eleutherios
2021-06-04 20:23:03 +08:00
@jeffreystoke 我还是不太明白……

本地要使用“私密配置”,但是不留存明文的?只有在用的时候使用 touch ID 这种手动验证每一次文件访问的正当性?然后临时从 encrypted vault 里解压出到内存?因为是文件层的,所以不需要对软件进行任何修改?

如果只是同步 home 的话,我可能会选择 seafile 这种号称自带 client-side encryption 的私有网盘吧……

至于本地留存明文,我想 full disk encryption 这种层级的保护对我就够了
jeffreystoke
2021-06-04 21:32:55 +08:00
@Eleutherios 本地不存任何实体文件, 所有私密信息都在内存里, 也就不涉及到文件加密和 encrypted vault, 不过后续可能会在内存进行加密防 CPU bug, 只是以文件的形式提供数据访问入口.

全盘加密只是对直接读取硬盘有效, 电脑处于开机状态通过操作系统访问等于没有加密, 除了硬件层面的病毒, 一般入侵者好像只对开机并且有操作系统的设备动手吧.

home 同步的方案有很多, 而 home 同步只是一个同步场景, 只是我认为同步时能不带上敏感信息就不带, 而这个软件主要做的是使用时请求授权和文件虚拟化, 能让你尽可能在所有情况下都不上传私密文件而且用得舒服.
libook
2021-06-10 10:33:57 +08:00
我尝试理解一下,目前楼主是有 2 个需求:
1. 可以使用某种同步机制在多台设备间同步一些文件。
2. 不希望敏感文件直接原样进入同步机制的数据流,以防止意外造成的数据泄露。

需求 1 楼主已经解决了,在解决需求 2 的时候,楼主想到可以不把这些敏感配置文件直接放在文件系统里,文件系统里没有文件,那么同步的时候就自然不会把这些文件传到同步数据流中。

把敏感文件放到 Bitwarden 里,像同步安全笔记和密码一样在各个设备间同步。

但软件还是要读取文件的,那么就可以在文件系统上加个 hook,当任何程序尝试读取特定路径的时候,hook 拦截到请求,然后问用户是否授权,用户不授权的话就返回给软件一个 permission denied,如果用户授权了就在 Bitwarden 里读这个文件的数据,然后直接以 buffer 或者 stream 的形式从内存里提供给这个软件读取,对于软件来说就好像是真的读到了这个文件一样
jeffreystoke
2021-06-10 12:35:44 +08:00
@libook 是的,的确可以把这个 fuse 理解成现有文件系统的 hook,唯一的细节差异在于不会每次都去 bitwarden 里面查询,而是缓存在内存中,也就是为什么开 issue4 说要加内存加密。
gjquoiai
2021-06-14 15:04:40 +08:00
git-secret
jeffreystoke
2021-06-14 16:37:12 +08:00
@gjquoiai 感谢推荐,正是我想要的,和这个软件可以配合

我现在是用 git-secret 加密 helm values 文件,用 credentialfs 保存 git-secret 的 seed,大量私密且需要频繁改动的文件这样操作似乎更方便一点

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/781228

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX