mizcausevic-dev/identity-mesh
GitHub: mizcausevic-dev/identity-mesh
为 AI Agent 集群提供 SPIFFE 风格的零信任身份层,用短期可刷新的 JWT-SVID 替代长期 API Key,从根源上收敛凭证泄露的爆炸半径。
Stars: 0 | Forks: 0
# identity-mesh 🔐
[](https://github.com/mizcausevic-dev/identity-mesh/actions/workflows/ci.yml)



## 为什么选择它
大多数 AI 代理使用长期有效的 API 密钥向下游服务进行身份验证,
这些密钥被固化在环境变量中。攻破一个代理 -> 攻破该密钥所能触及的一切。
无限期地。CISO 无法安眠。
**identity-mesh** 按需为每个代理颁发短期(默认 5 分钟)、限定受众、
加密签名身份。
- 窃取了 token?你只有 5 分钟的时间。
- 窃取了密钥?**根本不存在可供窃取的密钥。**
- 需要撤销代理?停止注册即可。现有的 token 会自然过期。
## 它是什么
五个与 SPIFFE 兼容的原语:
| 组件 | 用途 |
|---|---|
| `SPIFFEID` | 解析/验证 `spiffe://trust-domain/path` URI |
| `IdentityBroker` | 生成 JWT-SVIDs (RS256),持有信任域的签名密钥 |
| `Workload` | 代理端身份持有者;缓存并自动刷新 SVIDs |
| `Verifier` | 服务端验证器;检查签名、受众、颁发者和有效期 |
| `Rotator` | 用于凭证轮换的后台 daemon |
基于 `pyjwt[crypto]` 和 `cryptography` 构建。没有自定义加密,没有意外。
## 架构

## SVID 生命周期
每个 token 默认存活 5 分钟 - 代理缓存、出示它,
并在过期前刷新。被盗的 token 在几分钟内就会作废,
而不是几年:

## 安装
```
pip install identity-mesh
```
或者从源码安装:
```
git clone https://github.com/mizcausevic-dev/identity-mesh
cd identity-mesh
pip install -e ".[dev]"
pytest
```
## 快速开始
### 完整的 broker -> agent -> service 流程
```
from identity_mesh import IdentityBroker, Workload, Verifier
# 安全团队负责运营 broker
broker = IdentityBroker(trust_domain="prod.kineticgain.com")
# 注册 agent
agent = Workload(name="research-agent-1", broker=broker)
# 使用 trust bundle 引导下游服务
service = Verifier(
trust_domain="prod.kineticgain.com",
trust_bundle=broker.trust_bundle(),
)
# agent 获取全新的、限定 audience 的 SVID
audience = "https://api.kineticgain.com/v1"
svid = agent.get_svid(audience)
# 服务进行验证 - 返回调用者的 SPIFFE ID
caller = service.verify(svid, expected_audience=audience)
# -> spiffe://prod.kineticgain.com/workload/research-agent-1
```
### 路径前缀授权
```
if caller.is_under("/workload/research-"):
# Allow only research-* agents
handle_request(caller)
else:
raise PermissionError("forbidden")
```
### 后台轮换
```
from identity_mesh import Rotator
# 每 4 分钟刷新一次 SVID(在 5 分钟过期前 1 分钟)
rotator = Rotator(
interval=240,
callback=lambda: agent.get_svid(audience, refresh_before=120),
)
rotator.start()
# ... 稍后
rotator.stop()
```
## 目标受众
- **CISO / 安全人员** - 消除长期有效的 API 密钥;满足 SOC2 CC6.6(逻辑访问)要求
- **平台工程师** - 为代理集群提供即插即用的零信任身份层
- **合规人员** - 每次代理调用在加密层面上均可追溯到 SPIFFE ID
## 搭配使用
- [`rate-limit-shield`](https://github.com/mizcausevic-dev/rate-limit-shield) - 纵深防御:边缘采用身份验证,在模型层实施速率限制
- [`agent-router`](https://github.com/mizcausevic-dev/agent-router) - 基于 `caller.path` 进行路由(研究代理 vs 管理代理)
- [`agent-canary`](https://github.com/mizcausevic-dev/agent-canary) - 基于身份的 canary 测试群组
- [`model-registry-pro`](https://github.com/mizcausevic-dev/model-registry-pro) - 将审批请求者/审批者与 SPIFFE 身份绑定
## 路线图
- [ ] X.509 SVIDs(与 JWT-SVIDs 并存)
- [ ] Workload 证明(TPM,K8s service accounts)
- [ ] gRPC SPIFFE Workload API endpoint
- [ ] OIDC discovery + JWKS endpoint
- [ ] HSM / KMS adapter 用于密钥托管
- [ ] 分布式 broker(Redis/etcd)以支持多区域
- [ ] PyPI 发布
## 原则
三项规则:
1. **短 TTL 或无 TTL。** 五分钟的成本很低,但被攻破后的爆炸半径可不低。
2. **受众绑定。** 为服务 A 颁发的 token 对服务 B 必须是无效的。
3. **轮换 broker 密钥,就是轮换所有人的信任。** 在第 0 天就规划好第 1 天的密钥轮换。
## 安全说明
- Broker 每次实例化都会生成一个全新的 RSA-2048 密钥。在生产环境中请**持久化该密钥**
(从 secrets manager 或 KMS 挂载)。
- 默认的宽限时间是 5 秒的时钟偏移。在对抗性环境中请进一步收紧。
- 本库**不**提供传输层实现。请仅通过 mTLS 或 HTTPS 传递 SVIDs。
## 许可证
MIT - 详见 [LICENSE](./LICENSE)。
由 [Mirza Causevic](https://github.com/mizcausevic-dev) 构建 - 属于
[mizcausevic-dev](https://github.com/mizcausevic-dev) AI 平台工程作品集的一部分。
标签:Agent, AI代理, Cryptography, DevSecOps, DLL 劫持, IAM, JSONLines, JWT, JWT-SVID, PyJWT, Python, RS256, SPIFFE, SPIRE, Streamlit, StruQ, 上游代理, 人工智能, 令牌, 大语言模型, 威胁情报, 安全架构, 密钥轮换, 开发者工具, 开源, 无后门, 无密钥认证, 服务网格, 用户模式Hook绕过, 短期凭证, 网络安全, 访问控制, 身份与访问管理, 身份代理, 身份安全, 身份网格, 隐私保护, 零信任, 零信任网络