cognis-digital/secretsync

GitHub: cognis-digital/secretsync

面向 GitOps 的声明式 Kubernetes Secret 加密封装与集群内解封工具,纯 Python 标准库实现,零外部依赖。

Stars: 0 | Forks: 0

# secretsync **面向 GitOps 的声明式 secret 封装与同步。** 将 Kubernetes Secret 的值加密为可安全提交至 git 的 manifest,并且仅在存有私钥的地方进行解封。采用带身份验证的加密,纯 Python 标准库实现,无需任何外部加密包。 属于 **Cognis Neural Suite** 的一部分。 ## 为什么需要它 将明文 Secrets 存放在 git 中是顶级的供应链失误,但大多数团队又希望将其 secret *与*其他内容一起存放在 GitOps 仓库中。secretsync 会对每个值进行封装,确保提交后的形式是不透明的且可验证防篡改的,随后在集群内进行解封——零依赖,因此完全适用于气隙环境和自托管环境。 ## 命令 ``` # 生成一个 sealing key(私有 .sealkey + 公有 label .sealpub)。 python -m secretsync keygen --out ss # Seal 一个 Secret manifest,或内联值。 python -m secretsync seal secret.json --key ss.sealkey python -m secretsync seal --key ss.sealkey --set DB_PASSWORD=hunter2 --name app # Unseal(需要私钥)。 python -m secretsync unseal sealed.json --key ss.sealkey # Rotate 到新密钥(decrypt-with-old, seal-with-new)。 python -m secretsync rotate sealed.json --old-key ss.sealkey --new-key ss2.sealkey # 作为本地 MCP 服务器运行(stdio JSON-RPC)。 python -m secretsync mcp ``` ## secretsync 的独特之处 - **带身份验证的加密。** Encrypt-then-MAC (HMAC-SHA256) 意味着密钥错误或发生任何篡改,在解封时都会直接失败——你绝不会在不知情的情况下得到损坏的 Secret。 - **逐值封装。** 每个值都会获取专属的 nonce/keystream;封装后的 manifest 中不包含任何明文。 - **内置密钥轮换。** 可在新密钥下重新封装,无需将明文写入磁盘。 - **原生支持 MCP** (`seal` / `unseal`),并提供可选的本地集群 AI 钩子(默认关闭),用于标记类似于长期凭据的 secret 密钥。 - **与 GitOps 套件完美搭配** —— 使用 secretsync 进行封装,使用 [gitopsd](https://github.com/cognis-digital/gitopsd) 检测偏差。 ## 测试 ``` python -m pytest -q # or: python -m unittest discover -s tests ``` ## 互操作性 `secretsync` 可与包含 300+ 工具的 Cognis 套件无缝组合 —— 统一的 JSON 输入/输出以及共享的 OpenAI 兼容 `/v1` 主干网络。请参阅 **[INTEROP.md](INTEROP.md)** 了解套件映射图、组合模式以及参考技术栈。 ## 集成 通过 [`cognis-connect`](https://github.com/cognis-digital/cognis-connect) 将 `secretsync` 的检测结果转发至 STIX/MISP/Sigma/Splunk/Elastic/Slack/webhooks。请参阅 **[INTEGRATIONS.md](INTEGRATIONS.md)**。 ## 许可证 Cognis Open Collaboration License (COCL) 1.0 —— 详见 [`LICENSE`](LICENSE)。 © 2026 Cognis Digital LLC. 原创的 Cognis 作品;不包含任何第三方代码、名称或品牌标识。 ## 领域 **主要领域:** 网络与安全 · **JTF MERIDIAN 部门:** NULLBYTE · SPECTER **主题:** `cognis` `security` `infosec` `cybersecurity` `blue-team` 属于 **Cognis Neural Suite** 的一部分 —— 包含 300+ 源代码可见的工具,跨越 JTF MERIDIAN 命令结构下的 12 个领域。请参阅 [GitHub 上的套件](https://github.com/cognis-digital) 和 [jtf-meridian](https://github.com/cognis-digital/jtf-meridian) 了解各组件是如何协同工作的。 ## 使用说明 —— 分步指南 `secretsync` 可将 Kubernetes Secret 的值封装为可安全提交至 git 的 manifest,并且仅在存有私钥的地方进行解封。 1. **安装**(纯标准库实现,需 Python 3.10+): pip install "git+https://github.com/cognis-digital/secretsync.git" 2. **生成封装密钥** —— 生成私有的 `.sealkey`(保留在集群内)和公开的 `.sealpub` 标签: secretsync keygen --out ss 3. **封装** Secret manifest,或内联值,生成可安全提交的 SealedSecret: secretsync seal secret.json --key ss.sealkey --out sealed.json secretsync seal --key ss.sealpub --set DB_PASSWORD=hunter2 --name app --out sealed.json 4. **使用封装后的对象** —— `peek` 在不解密的情况下对其进行描述,`verify` 检查每个值的 MAC,而 `unseal`(仅限私钥)可还原出 Secret: secretsync peek sealed.json secretsync verify sealed.json --key ss.sealkey secretsync unseal sealed.json --key ss.sealkey --out secret.json 5. **自动化** —— 在 pipeline 中轮换至新密钥,或封装任意文件: secretsync rotate sealed.json --old-key ss.sealkey --new-key ss2.sealkey --out sealed.json secretsync seal-file config.bin --key ss.sealkey --out config.sealed.json 或者将其作为本地 MCP 服务器 (stdio JSON-RPC) 运行:`secretsync mcp`。
标签:GitOps, Python, StruQ, 大语言模型安全, 子域名突变, 数据加密, 无后门, 机密管理, 逆向工具