400 lines
12 KiB
Markdown
400 lines
12 KiB
Markdown
# JWT + ETCD 加密系统文档索引
|
||
|
||
## 📚 文档完整导航
|
||
|
||
### 快速入门 (5-15分钟)
|
||
|
||
**推荐路径:** 从上到下顺序阅读
|
||
|
||
1. **[SUMMARY.md](./SUMMARY.md)** ⭐ 从这里开始
|
||
- 📋 项目概览和架构图
|
||
- 🎯 核心特性一览
|
||
- ✅ 生产就绪检查清单
|
||
- 🚀 下一步行动计划
|
||
|
||
2. **[README.md](./README.md)**
|
||
- 🏃 4个快速部署步骤
|
||
- 🔐 安全考虑事项
|
||
- 🔄 密钥轮换程序
|
||
- 🆘 故障排查
|
||
|
||
3. **[QUICK_REFERENCE.md](./QUICK_REFERENCE.md)**
|
||
- ⚡ 一页速查表
|
||
- 📝 常见命令复制粘贴
|
||
- 🗺️ 文档地图
|
||
- 🎓 关键参数速知
|
||
|
||
### 部署实施 (30-60分钟)
|
||
|
||
4. **[DEPLOYMENT.md](./DEPLOYMENT.md)** - 最详细的部署指南
|
||
- 📦 第1步:创建 Secret 和 RBAC(必需)
|
||
- 🔄 第2步:更新 user-rpc Deployment
|
||
- 🌐 第3步:更新 Envoy Gateway Deployment
|
||
- 🔐 第4步:启用 ETCD 加密(生产推荐)
|
||
- ✔️ 第5步:验证整个系统
|
||
- 📊 监控和日志配置
|
||
- 🛠️ 安全最佳实践
|
||
- 🆘 故障排查指南
|
||
- 💾 灾难恢复流程
|
||
|
||
### 验证和监控 (20-30分钟)
|
||
|
||
5. **[VERIFICATION.md](./VERIFICATION.md)** - 完整验证清单
|
||
|
||
**12个验证部分:**
|
||
|
||
| 部分 | 用途 | 时间 |
|
||
|-----|------|------|
|
||
| 第1部分 | Secret/RBAC 基础验证 | 2分钟 |
|
||
| 第2部分 | 权限测试(allow/deny) | 3分钟 |
|
||
| 第3部分 | Deployment 配置检查 | 2分钟 |
|
||
| 第4部分 | Redis 连接测试 | 2分钟 |
|
||
| 第5部分 | 应用启动日志 | 3分钟 |
|
||
| 第6部分 | 网络和服务发现 | 3分钟 |
|
||
| 第7部分 | Prometheus 指标 | 3分钟 |
|
||
| 第8部分 | Loki 日志聚合 | 2分钟 |
|
||
| 第9部分 | ETCD 加密验证 | 5分钟 |
|
||
| 第10部分 | JWT 功能测试 | 10分钟 |
|
||
| 第11部分 | 故障排查诊断 | 5分钟 |
|
||
| 第12部分 | 清理和总结 | 2分钟 |
|
||
|
||
### 高级话题
|
||
|
||
6. **[ENCRYPTION.md](./ENCRYPTION.md)** - ETCD 加密完整指南
|
||
- 🔑 第1部分:密钥生成
|
||
- 📋 第2部分:配置格式
|
||
- 🔧 第3部分:kube-apiserver 修改
|
||
- ✅第4部分:验证加密
|
||
- ⚠️ 第5部分:关键警告(数据不可恢复)
|
||
- 🔐 第6部分:RBAC 解释
|
||
- 📦 第7部分:Deployment 示例
|
||
- 🍎 第8部分:Minikube 特定说明
|
||
|
||
7. **[INTEGRATION.md](../api/INTEGRATION.md)** - 代码集成指南
|
||
- 🔗 第1部分:gRPC Unary Interceptor
|
||
- 🔗 第2部分:gRPC Stream Interceptor
|
||
- 👤 第3部分:登录 Handler 实现
|
||
- 🔐 第4部分:受保护 Handler 中的声明提取
|
||
- 🔄 第5部分:令牌刷新端点
|
||
- 🚪 第6部分:登出处理
|
||
- 🛣️ 第7部分:REST Routes 配置
|
||
- 🔎 第8部分:错误处理最佳实践
|
||
- 🧪 第9部分:单元测试示例
|
||
|
||
---
|
||
|
||
## 📁 文件结构详解
|
||
|
||
```
|
||
deploy/k8s/
|
||
├── secrets/
|
||
│ ├── jwt-secret.yaml ✅ Kubernetes 清单文件
|
||
│ │ ├── Secret: jwt-secret (JWT 秘钥数据)
|
||
│ │ ├── ServiceAccount: user-rpc
|
||
│ │ ├── ServiceAccount: envoy-gateway
|
||
│ │ ├── Role: jwt-secret-reader
|
||
│ │ ├── RoleBinding: jwt-secret-reader-user-rpc
|
||
│ │ └── RoleBinding: jwt-secret-reader-envoy-gateway
|
||
│ │
|
||
│ ├── README.md 📖 快速参考指南(5分钟入门)
|
||
│ ├── SUMMARY.md 📊 系统概览(10分钟了解全貌)
|
||
│ ├── QUICK_REFERENCE.md ⚡ 速查表(查找命令和参数)
|
||
│ ├── DEPLOYMENT.md 📦 详细部署指南(60分钟完整部署)
|
||
│ ├── ENCRYPTION.md 🔐 ETCD 加密指南(Control Plane 配置)
|
||
│ ├── VERIFICATION.md ✅ 验证清单(部署后验证)
|
||
│ └── INDEX.md 🗺️ 本文件(文档导航)
|
||
│
|
||
└── envoy/
|
||
│ └── envoy.yaml ✅ Envoy 网关配置
|
||
│ └── 已更新: serviceAccountName: envoy-gateway
|
||
│
|
||
service/user/
|
||
├── user-api.yaml ✅ user-api Service
|
||
├── user-rpc.yaml ✅ user-rpc Deployment(已更新)
|
||
│ ├── serviceAccountName: user-rpc (已更新)
|
||
│ ├── JWT_SECRET_KEY env var (已更新)
|
||
│ └── Redis Cluster configuration
|
||
└── ...
|
||
|
||
app/users/
|
||
├── api/
|
||
│ └── INTEGRATION.md 📝 REST/gRPC 集成指南
|
||
│
|
||
└── rpc/
|
||
├── internal/utils/jwt.go ✅ JwtManager 实现(已存在)
|
||
├── internal/config/config.go ✅ JWT 配置(已存在)
|
||
├── internal/svc/
|
||
│ └── serviceContext.go ✅ 依赖注入(已存在)
|
||
└── etc/pb.yaml ✅ 运行时配置(已存在)
|
||
```
|
||
|
||
---
|
||
|
||
## 🎯 按场景查找文档
|
||
|
||
### 场景 1:我想快速了解这个系统是什么
|
||
|
||
**推荐阅读顺序:**
|
||
1. [SUMMARY.md](./SUMMARY.md) - 项目概览(5分钟)
|
||
2. [SUMMARY.md](./SUMMARY.md) 中的架构图和特性说明
|
||
|
||
**关键信息:**
|
||
- JWT 令牌系统 + Redis 存储 + RBAC 权限 + ETCD 加密
|
||
- 支持 7 天有效期、30 天可刷新
|
||
- Envoy 网关 CSRF 防护
|
||
|
||
---
|
||
|
||
### 场景 2:我想立即部署到 Kubernetes
|
||
|
||
**推荐阅读顺序:**
|
||
1. [README.md](./README.md) - 快速参考(2分钟)
|
||
2. [QUICK_REFERENCE.md](./QUICK_REFERENCE.md) - 复制粘贴命令(3分钟)
|
||
3. 运行部署命令(5分钟)
|
||
4. [VERIFICATION.md](./VERIFICATION.md) 第1-7部分 - 验证(10分钟)
|
||
|
||
**快速命令:**
|
||
```bash
|
||
# Copy from QUICK_REFERENCE.md "部署命令" 部分
|
||
kubectl apply -f deploy/k8s/secrets/jwt-secret.yaml
|
||
kubectl apply -f deploy/k8s/service/user/user-rpc.yaml
|
||
kubectl apply -f deploy/k8s/envoy/envoy.yaml
|
||
```
|
||
|
||
---
|
||
|
||
### 场景 3:部署后验证一切正常
|
||
|
||
**推荐阅读:**
|
||
- [VERIFICATION.md](./VERIFICATION.md) - 12部分完整验证清单
|
||
- 逐部分执行验证命令
|
||
|
||
**预计时间:** 30-40分钟
|
||
|
||
**验证触发点:**
|
||
- ✅ Secrets 和 RBAC 已创建
|
||
- ✅ Pods 已启动运行
|
||
- ✅ 权限验证通过
|
||
- ✅ Redis 连接成功
|
||
|
||
---
|
||
|
||
### 场景 4:启用 ETCD 加密(生产推荐)
|
||
|
||
**推荐阅读顺序:**
|
||
1. [ENCRYPTION.md](./ENCRYPTION.md) - 完整加密指南
|
||
2. 按照 8 个步骤逐一执行
|
||
3. [VERIFICATION.md](./VERIFICATION.md) 第9部分 - 加密验证
|
||
|
||
**需要的权限:**
|
||
- Control Plane 节点的 root/sudo 权限
|
||
- Kubernetes 集群管理员权限
|
||
|
||
**预计时间:** 15-20分钟
|
||
|
||
---
|
||
|
||
### 场景 5:集成 JWT 到我的应用代码中
|
||
|
||
**推荐阅读顺序:**
|
||
1. [INTEGRATION.md](../api/INTEGRATION.md) 第1-2部分 - gRPC 拦截器
|
||
2. 第3-4部分 - 登录和受保护 Handlers
|
||
3. 第7-8部分 - REST API 中间件
|
||
4. 第9部分 - 单元测试
|
||
|
||
**需要实现:**
|
||
- ✅ gRPC Unary/Stream Interceptors
|
||
- ✅ 登录/登出端点
|
||
- ✅ JWT Middleware for REST
|
||
- ✅ 错误处理
|
||
|
||
**预计时间:** 2-3 小时
|
||
|
||
---
|
||
|
||
### 场景 6:部署后遇到问题
|
||
|
||
**根据错误类型选择:**
|
||
|
||
| 错误类型 | 查看文档 |
|
||
|---------|--------|
|
||
| Pod 无法启动 | [VERIFICATION.md](./VERIFICATION.md) 第11部分 |
|
||
| 权限被拒绝 | [VERIFICATION.md](./VERIFICATION.md) 第2部分 + [README.md](./README.md) 故障排查 |
|
||
| Redis 连接失败 | [VERIFICATION.md](./VERIFICATION.md) 第4部分 |
|
||
| ETCD 加密失败 | [ENCRYPTION.md](./ENCRYPTION.md) 第5-6部分 |
|
||
| 配置不清楚 | [QUICK_REFERENCE.md](./QUICK_REFERENCE.md) 配置文件位置 |
|
||
|
||
---
|
||
|
||
### 场景 7:定期维护任务
|
||
|
||
#### 任务:轮换 JWT 秘钥
|
||
|
||
**阅读:** [DEPLOYMENT.md](./DEPLOYMENT.md) 安全最佳实践 > 密钥轮换
|
||
**或:** [QUICK_REFERENCE.md](./QUICK_REFERENCE.md) 密钥轮换步骤
|
||
|
||
**频率:** 季度(3个月)
|
||
|
||
#### 任务:轮换 ETCD 加密密钥
|
||
|
||
**阅读:** [ENCRYPTION.md](./ENCRYPTION.md) 第5部分
|
||
**或:** [QUICK_REFERENCE.md](./QUICK_REFERENCE.md) ETCD 加密系统
|
||
|
||
**频率:** 年度(12个月)
|
||
|
||
#### 任务:备份密钥
|
||
|
||
**阅读:** [DEPLOYMENT.md](./DEPLOYMENT.md) 灾难恢复
|
||
**或:** [ENCRYPTION.md](./ENCRYPTION.md) 关键警告
|
||
|
||
**频率:** 立即 + 每次轮换后
|
||
|
||
---
|
||
|
||
## 📊 文档深度对比
|
||
|
||
| 文档 | 深度 | 丰富度 | 代码 | 适合角色 |
|
||
|-----|------|--------|------|---------|
|
||
| README | 浅 | 概览 | - | PM/初学者 |
|
||
| SUMMARY | 浅 | 概览 | - | 决策者 |
|
||
| QUICK_REFERENCE | 中 | 速查 | 命令 | DevOps/SRE |
|
||
| DEPLOYMENT | 深 | 详细 | 示例 | DevOps/运维 |
|
||
| VERIFICATION | 深 | 详细 | 脚本 | QA/DevOps |
|
||
| ENCRYPTION | 非常深 | 极详细 | YAML | 安全/运维 |
|
||
| INTEGRATION | 非常深 | 代码级 | 完整 | 开发者 |
|
||
|
||
---
|
||
|
||
## 🔄 学习路径建议
|
||
|
||
### 对于 DevOps/SRE
|
||
|
||
1. SUMMARY.md (5 分钟)
|
||
2. DEPLOYMENT.md (30 分钟)
|
||
3. VERIFICATION.md (30 分钟)
|
||
4. ENCRYPTION.md (20 分钟)
|
||
5. 实践部署 (60 分钟)
|
||
|
||
**总计:** ~3 小时
|
||
|
||
### 对于应用开发者
|
||
|
||
1. SUMMARY.md > "集成点" 部分 (5 分钟)
|
||
2. INTEGRATION.md (60 分钟)
|
||
3. QUICK_REFERENCE.md > "JWT Manager API" (10 分钟)
|
||
4. 代码实现 (2-3 小时)
|
||
5. 单元测试 (INTEGRATION.md 第9部分)
|
||
|
||
**总计:** ~4 小时
|
||
|
||
### 对于安全/合规人员
|
||
|
||
1. SUMMARY.md (5 分钟)
|
||
2. ENCRYPTION.md (30 分钟)
|
||
3. DEPLOYMENT.md > 安全最佳实践 (15 分钟)
|
||
4. VERIFICATION.md 第9部分 (10 分钟)
|
||
|
||
**总计:** ~1 小时
|
||
|
||
### 对于项目经理
|
||
|
||
1. SUMMARY.md (5 分钟)
|
||
2. DEPLOYMENT.md > "部署状态示意图" (5 分钟)
|
||
3. DEPLOYMENT.md > "快速部署" (2 分钟)
|
||
|
||
**总计:** ~15 分钟
|
||
|
||
---
|
||
|
||
## 🎓 学习成果预期
|
||
|
||
### 完成后,您将能够:
|
||
|
||
✅ 在 Kubernetes 中部署 JWT 认证系统
|
||
✅ 配置 RBAC 权限控制
|
||
✅ 启用 ETCD 加密保护敏感数据
|
||
✅ 在 Go-zero 应用中集成 JWT
|
||
✅ 实现令牌刷新和撤销
|
||
✅ 诊断和排查常见问题
|
||
✅ 执行密钥轮换和灾难恢复
|
||
|
||
---
|
||
|
||
## 🆘 求助指南
|
||
|
||
### 第一步:找到相关文档
|
||
- 浏览本索引找到相关章节
|
||
- 或用 Ctrl+F 搜索关键词
|
||
|
||
### 第二步:查看文档中的相关部分
|
||
- DEPLOYMENT.md 的相关章节
|
||
- 或 VERIFICATION.md 的故障排查部分
|
||
|
||
### 第三步:运行诊断命令
|
||
- QUICK_REFERENCE.md 的 "故障排查" 部分
|
||
- 或 VERIFICATION.md 的 "故障排查" 部分
|
||
|
||
### 第四步:检查日志
|
||
```bash
|
||
kubectl logs -n juwan -l app=user-rpc -f
|
||
kubectl logs -n juwan -l app=envoy-gateway -f
|
||
```
|
||
|
||
### 第五步:查看详细文档
|
||
如果上述步骤未能解决,查看对应的详细文档:
|
||
- 配置问题 → DEPLOYMENT.md
|
||
- 权限问题 → VERIFICATION.md 第2/11部分
|
||
- 集成问题 → INTEGRATION.md
|
||
- 加密问题 → ENCRYPTION.md
|
||
|
||
---
|
||
|
||
## 📞 文档反馈
|
||
|
||
如果您发现:
|
||
- ❌ 文档不清楚
|
||
- ❌ 命令不工作
|
||
- ❌ 信息缺失或过时
|
||
- ❌ 错别字或格式问题
|
||
|
||
请在相应的 `.md` 文件中标记,或提交更新建议。
|
||
|
||
---
|
||
|
||
## 📌 关键概念快速链接
|
||
|
||
| 概念 | 详见 |
|
||
|-----|------|
|
||
| JWT 令牌生命周期 | SUMMARY.md "关键特性" |
|
||
| Redis 双键结构 | SUMMARY.md "关键特性" |
|
||
| RBAC 权限隔离 | SUMMARY.md "关键特性" |
|
||
| CSRF 防护 | SUMMARY.md "关键特性" |
|
||
| ETCD 加密 | ENCRYPTION.md |
|
||
| 错误处理 | INTEGRATION.md 第8部分 |
|
||
| 密钥轮换 | DEPLOYMENT.md "安全最佳实践" |
|
||
| 灾难恢复 | DEPLOYMENT.md "灾难恢复" |
|
||
|
||
---
|
||
|
||
## ✨ 文档特性
|
||
|
||
✅ **模块化** - 每个文档独立,但相互链接
|
||
✅ **分层** - 从快速概览到深度细节
|
||
✅ **实践导向** - 包含实际命令和代码示例
|
||
✅ **完整性** - 覆盖部署、验证、维护、故障排查
|
||
✅ **易查找** - 目录、索引、速查表
|
||
|
||
---
|
||
|
||
**开始阅读:** 👉 [SUMMARY.md](./SUMMARY.md)
|
||
|
||
或根据您的角色选择:
|
||
|
||
| 角色 | 开始文档 | 预计时间 |
|
||
|-----|--------|--------|
|
||
| DevOps/运维 | [DEPLOYMENT.md](./DEPLOYMENT.md) | 1-2 小时 |
|
||
| 应用开发 | [INTEGRATION.md](../api/INTEGRATION.md) | 2-3 小时 |
|
||
| 安全审查 | [ENCRYPTION.md](./ENCRYPTION.md) | 30 分钟 |
|
||
| 项目经理 | [SUMMARY.md](./SUMMARY.md) | 15 分钟 |
|
||
| 新手 | [README.md](./README.md) → [SUMMARY.md](./SUMMARY.md) | 15-20 分钟 |
|