安全总览
rust_svc 的安全不是清单式加固,而是一条设计主线: fail-closed + 纵深防御 + 可举证。本节给地图,细则在各分页。
威胁模型视角的防线
text
攻击面 防线 证据
─────────────────────────────────────────────────────────────
北向 API 网关认证(验签+吊销三查) request-lifecycle
限流/并发/配额(资源耗尽) metering
伪造身份 EdDSA 算法面收窄 + JWKS 旋转 identity
伪造租户 客户端租户头剥离 + 信任头注入 multi-tenant
越权访问 授权引擎 deny-first + 行/列策略 authorization
跨租户读写 PG RLS ENABLE+FORCE(裸事务 0 行) tenant-isolation
DBA/应用缺陷 RLS 与应用代码解耦(数据库层强制) tenant-isolation
篡改审计 sha256 哈希链 + 周期校验 audit-chain
内部流量窃听 ztunnel L4 mTLS(云化) istio
横向移动 AuthorizationPolicy 仅网关可访问 istio
供应链投毒 cargo-deny + trivy + cosign + 钉版 supply-chain
敏感数据泄露 列级信封加密 + 等值哈希 + 脱敏 encryptionfail-closed 的具体含义(五处体现)
- 未认证 = 401(无匿名路径,除显式白名单);
- Introspect 不可达时写请求 503(读请求才降级放行);
- 无授权 = 403 code 3001(默认拒绝,显式授予才可用);
- 信任头解析失败 = 拒绝(没有「当无租户处理」);
profile=prod+authz=off= 拒绝启动。
身份体系一览
| 凭证 | 形态 | TTL | 吊销 |
|---|---|---|---|
| 用户 access JWT | EdDSA | 15min | jti 名单 + ver |
| 用户 refresh | 旋转式 | 14d | 旋转失效 |
| AppToken | 长期凭据 | 手动 | rotate/revoke |
| App JWT | EdDSA(sub=app, tid=token) | 15min | token 镜像 |
详见身份与令牌。
数据保护一览
| 层 | 机制 |
|---|---|
| 传输 | 云化 ztunnel mTLS;PG TLS(rustls,sslmode=verify-full + CA 注入) |
| 存储-结构化 | 列级 AES-256-GCM 信封 + {field}_hash 等值通道 |
| 存储-对象 | S3 版本化 + 对象锁 WORM(合规保留) |
| 展示 | 字段字典脱敏(email/phone/idcard/name) |
| 审计 | 哈希链防篡改 |
未实现(诚实清单)
OIDC/LDAP/MFA、外部渗透测试、Redis 权威吊销缓存、 Egress 治理、ws 每帧认证——见实现状态矩阵。