公共 Git 代码库如何管理敏感信息?

2023-08-15 06:02:27 +08:00
 ltltfuture

请问各位在公共代码库里如何管理敏感信息 比如用户名,密码,token 等等

不知道现在企业实际在用的方法是什么

我搜到的一些方式:

一个公共 repo (存代码),一个私有 repo(放敏感信息),公共 repo 用 submodule 调用私有 repo

或者写一个示例的密码文件比如*.json repo clone 之后替换掉

2649 次点击
所在节点    程序员
37 条回复
xudaxian520bsz
2023-08-15 11:59:17 +08:00
k8s 的 configmap 中
tabris17
2023-08-15 12:16:47 +08:00
私有信息都是写在环境变量里的,为何你要将数据落地?
Alias4ck
2023-08-15 12:27:33 +08:00
我记得 有类似的 security 项目
https://github.com/awslabs/git-secrets
Alias4ck
2023-08-15 12:29:57 +08:00
之前瞟过一样,才发现是 aws 的哈哈😄😄
ltltfuture
2023-08-15 12:33:41 +08:00
@Alias4ck 这个好像适用于私有 repo ,放共有 repo 有安全隐患
ltltfuture
2023-08-15 12:34:00 +08:00
ltltfuture
2023-08-15 12:36:34 +08:00
@tabris17 比如我写 pyspark data pipeline 有很多不同的 data source 最后可能需要打包提交到 emr 集群上计算
libook
2023-08-15 12:39:19 +08:00
我去年做了一个项目,在全公司设立制度禁止在代码中包含敏感信息。提供了多种整改方案,比如用 k8s 的 Secret 、环境变量、数据库或 K-V 存储来保存敏感信息,开发人员禁止接触敏感信息,仅获得授权的运维人员或负责的业务人员可以接触到。

现有的、已经在代码中包含敏感信息的情况,要全部更换敏感信息,比如重设密码、重新生成 token 和证书。

开发、预发布、线上环境采用不同的认证凭证。
tabris17
2023-08-15 12:49:59 +08:00
@ltltfuture 你需要一个分布式配置中心
ltltfuture
2023-08-15 12:53:13 +08:00
@libook 感谢分享实战的经验,想请请教一下,
现在比如说有个 repo 里面有整个公司 data pipeline, 主要写 pyspark ,会用到 ci/cd 比如说 做一些 transformation 的 unit test 在里面 unit test 可能就用一些小的 sample data 验证,这个一个 docker 应该可以搞定,之后在 dev 环境中做 end to end test 这必然会涉及到很多 credentials 比如各种数据库的 connection string, API token, ftp username password 这些 pipeline 在 emr 上跑,我能想到的一个是我会使用 airflow 可以使用 airflow 的 connection 来保存, 但如果我要打包.py 成 zip submit 到 emr 集群有没有什么比较好的管理敏感信息的方法呢
ltltfuture
2023-08-15 12:53:54 +08:00
@tabris17 这个有哪些现成的工具 能推荐一下吗
tabris17
2023-08-15 13:00:28 +08:00
@ltltfuture 新手推荐用 Consul ,几乎不用配置,每个平台都有发布二进制包,拉下来就跑。接口是 HTTP 的。自带 WEB 管理 UI
ltltfuture
2023-08-15 13:01:24 +08:00
@tabris17 感谢 我去了解一下
libook
2023-08-16 10:20:38 +08:00
@ltltfuture #30 大数据基础设施虽然我们也有,但我并不是很了解实际内部工作流,我只是把原始需求提给了大数据架构师。

我尝试理解一下你描述的场景。
首先不同的环境要用不同的 credentials ,dev 肯定和正式环境的不一样,这样即便 dev 的泄漏了,也不影响正式环境。
其次我不清楚你们的 dev 环境是不是由运维或专人全权维护的,如果是的话那么就和线上正式环境一样,仅专门人员可以访问和操作运维环境,使用外挂的方式管理和向服务注入敏感信息。只要运维环境的访问权限限制死,用 CI/CD 来实现手工注入敏感信息也是可以的。

这需要你们有一个相对健全的 DevOps 流程,如果开发兼 dev 环境的运维,肯定就没法把敏感信息分出来了。
xudaxian520bsz
2023-08-16 13:03:05 +08:00
HashiCorp Vault 这个方案也是好的,支持部署到 k8s 中,并且 SpringBoot 也提供了对它的支持。
ltltfuture
2023-08-16 20:37:39 +08:00
@libook 嗯,谢谢解答,我们这属于小团队,得开发运维一起抓,所以这方面还是有很多不熟悉的
ltltfuture
2023-08-16 20:38:21 +08:00
@xudaxian520bsz 这个看起来不错,刚去看了看官网的介绍视频,还得研究一下能不能用到自己的环境

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

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

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

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

© 2021 V2EX