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, 大语言模型安全, 子域名突变, 数据加密, 无后门, 机密管理, 逆向工具