Clean repository: organized structure and GitOps setup

- Organized root directory structure
- Moved orphan files to proper locations
- Updated .gitignore to ignore temporary files
- Set up Gitea Runner for GitOps automation
- Fixed Tailscale access issues
- Added workflow for automated Nomad deployment
This commit is contained in:
2025-10-09 06:13:45 +00:00
commit 89ee6f7967
306 changed files with 30781 additions and 0 deletions

View File

@@ -0,0 +1,169 @@
# HashiCorp Vault 实施方案论证
## 1. 项目现状分析
### 1.1 现有基础设施
- **多云环境**: Oracle Cloud, 华为云, Google Cloud, AWS, DigitalOcean
- **基础设施管理**: OpenTofu (Terraform)
- **配置管理**: Ansible
- **容器编排**: Nomad + Podman
- **服务发现**: Consul (部署在warden、ash3c、master三个节点上)
- **CI/CD**: Gitea Actions
### 1.2 当前密钥管理现状
- 部分使用Ansible Vault管理敏感信息
- 存在明文密钥存储在代码库中(如`security/secrets/key.md`)
- 缺乏统一的密钥管理和轮换机制
- 没有集中的访问控制和审计机制
### 1.3 安全风险
- 明文密钥存储导致潜在的安全漏洞
- 缺乏密钥轮换机制增加了长期凭据泄露的风险
- 分散的密钥管理增加了维护难度和安全风险
- 缺乏审计机制,难以追踪谁在何时访问了敏感信息
## 2. HashiCorp Vault 解决方案
### 2.1 Vault 简介
HashiCorp Vault是一个密钥管理和数据保护工具专为现代云环境设计提供以下核心功能
- 密钥和敏感数据的安全存储
- 动态生成临时凭据
- 数据加密服务
- 详细的审计日志
- 精细的访问控制
### 2.2 Vault 如何解决当前问题
- **集中式密钥管理**: 所有密钥和敏感信息统一存储和管理
- **动态密钥生成**: 为数据库、云服务等生成临时凭据,减少长期凭据泄露风险
- **自动密钥轮换**: 定期自动轮换密钥,提高安全性
- **访问控制**: 基于角色的访问控制,确保只有授权用户能访问特定密钥
- **审计日志**: 详细记录所有密钥访问操作,便于安全审计
- **与现有基础设施集成**: 与Nomad和Consul无缝集成
## 3. 部署方案
### 3.1 部署架构
建议在现有的Consul集群节点(warden、ash3c、master)上部署Vault形成高可用的Vault集群
```
+-------------------+ +-------------------+ +-------------------+
| warden | | ash3c | | master |
| | | | | |
| +-------------+ | | +-------------+ | | +-------------+ |
| | Consul | | | | Consul | | | | Consul | |
| +-------------+ | | +-------------+ | | +-------------+ |
| | | | | |
| +-------------+ | | +-------------+ | | +-------------+ |
| | Vault | | | | Vault | | | | Vault | |
| +-------------+ | | +-------------+ | | +-------------+ |
+-------------------+ +-------------------+ +-------------------+
```
### 3.2 存储后端
使用现有的Consul集群作为Vault的存储后端利用Consul的高可用性和一致性特性
- Vault数据加密存储在Consul中
- 利用Consul的分布式特性确保数据的高可用性
- Vault服务器本身无状态便于扩展和维护
### 3.3 资源需求
每个节点上的Vault服务建议配置
- CPU: 2-4核
- 内存: 4-8GB
- 存储: 20GB (用于日志和临时数据)
### 3.4 网络配置
- Vault API端口: 8200
- Vault集群通信端口: 8201
- 配置TLS加密所有通信
- 设置适当的防火墙规则限制对Vault API的访问
## 4. 实施计划
### 4.1 准备阶段
1. **环境准备**
- 在目标节点上安装必要的依赖
- 生成TLS证书用于Vault通信加密
- 配置防火墙规则
2. **配置文件准备**
- 创建Vault配置文件
- 配置Consul存储后端
- 设置TLS和加密参数
### 4.2 部署阶段
1. **初始部署**
- 在三个节点上安装Vault
- 配置为使用Consul作为存储后端
- 初始化Vault并生成解封密钥
2. **高可用性配置**
- 配置Vault集群
- 设置自动解封机制
- 配置负载均衡
### 4.3 集成阶段
1. **与现有系统集成**
- 配置Nomad使用Vault获取密钥
- 更新Ansible脚本使用Vault API获取敏感信息
- 集成到CI/CD流程中
2. **密钥迁移**
- 将现有密钥迁移到Vault
- 设置密钥轮换策略
- 移除代码库中的明文密钥
### 4.4 验证和测试
1. **功能测试**
- 验证Vault的基本功能
- 测试密钥访问和管理
- 验证高可用性和故障转移
2. **安全测试**
- 进行渗透测试
- 验证访问控制策略
- 测试审计日志功能
## 5. 运维和管理
### 5.1 日常运维
- 定期备份Vault数据
- 监控Vault服务状态
- 审查审计日志
### 5.2 灾难恢复
- 制定详细的灾难恢复计划
- 定期进行恢复演练
- 确保解封密钥的安全存储
### 5.3 安全最佳实践
- 实施最小权限原则
- 定期轮换根密钥
- 使用多因素认证
- 定期审查访问策略
## 6. 实施时间表
| 阶段 | 任务 | 时间估计 |
|------|------|----------|
| 准备 | 环境准备 | 1天 |
| 准备 | 配置文件准备 | 1天 |
| 部署 | 初始部署 | 1天 |
| 部署 | 高可用性配置 | 1天 |
| 集成 | 与现有系统集成 | 3天 |
| 集成 | 密钥迁移 | 2天 |
| 测试 | 功能和安全测试 | 2天 |
| 文档 | 编写运维文档 | 1天 |
| **总计** | | **12天** |
## 7. 结论和建议
基于对当前基础设施和安全需求的分析我们强烈建议在现有的Consul集群节点上部署HashiCorp Vault以提升项目的安全性和密钥管理能力。
主要优势包括:
- 消除明文密钥存储的安全风险
- 提供集中式的密钥管理和访问控制
- 支持动态密钥生成和自动轮换
- 与现有的HashiCorp生态系统(Nomad、Consul)无缝集成
- 提供详细的审计日志,满足合规要求
通过在现有节点上部署Vault我们可以充分利用现有资源同时显著提升项目的安全性为多云环境提供统一的密钥管理解决方案。