feat: 重构基础设施配置与安全凭证管理
- 新增多个云服务商配置文件(OCI、阿里云) - 重构Vault、Consul、Nomad等服务的部署配置 - 新增备份与恢复完美状态的脚本 - 更新安全凭证管理文档 - 优化Traefik动态配置 - 删除过时的脚本和配置文件 重构后的配置支持多区域部署,优化了服务发现和负载均衡机制,并完善了安全凭证的备份与恢复流程。
This commit is contained in:
91
backup/20251012_100706/security/README.md
Normal file
91
backup/20251012_100706/security/README.md
Normal file
@@ -0,0 +1,91 @@
|
||||
# Security 目录说明
|
||||
|
||||
## 目录结构
|
||||
```
|
||||
security/
|
||||
├── secrets/ # 敏感配置文件
|
||||
│ ├── vault-unseal-keys.txt # Vault解封密钥
|
||||
│ ├── vault-root-token.txt # Vault根令牌
|
||||
│ ├── vault-cluster-info.txt # Vault集群信息
|
||||
│ └── *.hcl # 其他配置文件
|
||||
├── scripts/ # 批量部署脚本
|
||||
├── templates/ # 配置模板
|
||||
└── README.md # 本文件
|
||||
```
|
||||
|
||||
## Vault密钥管理
|
||||
|
||||
### 密钥文件说明
|
||||
- `vault-unseal-keys.txt`: 包含5个Vault解封密钥,需要至少3个才能解封Vault
|
||||
- `vault-root-token.txt`: Vault根令牌,拥有完全管理权限
|
||||
- `vault-cluster-info.txt`: Vault集群的基本信息和配置
|
||||
|
||||
### 使用Vault密钥
|
||||
```bash
|
||||
# 解封Vault(需要3个密钥)
|
||||
vault operator unseal -address=http://warden.tailnet-68f9.ts.net:8200 <key1>
|
||||
vault operator unseal -address=http://warden.tailnet-68f9.ts.net:8200 <key2>
|
||||
vault operator unseal -address=http://warden.tailnet-68f9.ts.net:8200 <key3>
|
||||
|
||||
# 使用根令牌认证
|
||||
export VAULT_TOKEN=hvs.TftK5zfANuPWOc7EQEvjipCE
|
||||
vault auth -address=http://warden.tailnet-68f9.ts.net:8200
|
||||
```
|
||||
|
||||
### 安全注意事项
|
||||
1. **密钥保护**: 所有Vault密钥文件权限设置为600,仅所有者可读写
|
||||
2. **备份策略**: 定期备份密钥文件到安全位置
|
||||
3. **访问控制**: 限制对security目录的访问权限
|
||||
4. **版本控制**: 不要将密钥文件提交到Git仓库
|
||||
|
||||
## 使用说明
|
||||
|
||||
### 1. 配置文件管理
|
||||
- 将需要上传的敏感配置文件放在 `secrets/` 目录下
|
||||
- 文件名格式:`{节点名}-{配置类型}.{扩展名}`
|
||||
- 例如:`ch4-nomad.hcl`、`ash3c-consul.json`
|
||||
|
||||
### 2. 批量部署脚本
|
||||
使用 `scripts/deploy-security-configs.sh` 脚本批量部署:
|
||||
|
||||
```bash
|
||||
# 部署所有配置
|
||||
./scripts/deploy-security-configs.sh
|
||||
|
||||
# 部署特定节点
|
||||
./scripts/deploy-security-configs.sh ch4
|
||||
|
||||
# 部署特定类型
|
||||
./scripts/deploy-security-configs.sh all nomad
|
||||
```
|
||||
|
||||
### 3. 配置模板
|
||||
- `templates/` 目录存放配置模板
|
||||
- 支持变量替换
|
||||
- 使用 Jinja2 语法
|
||||
|
||||
## 安全注意事项
|
||||
|
||||
1. **本地备份**:所有配置文件在上传前都会在本地保存备份
|
||||
2. **权限控制**:确保配置文件权限正确(600 或 644)
|
||||
3. **敏感信息**:不要在配置文件中硬编码密码或密钥
|
||||
4. **版本控制**:使用 Git 跟踪配置变更,但排除密钥文件
|
||||
|
||||
## 部署流程
|
||||
|
||||
1. 将配置文件放入 `secrets/` 目录
|
||||
2. 检查配置文件格式和内容
|
||||
3. 运行批量部署脚本
|
||||
4. 验证部署结果
|
||||
5. 清理临时文件
|
||||
|
||||
## 故障恢复
|
||||
|
||||
如果部署失败:
|
||||
1. 检查 `logs/` 目录下的错误日志
|
||||
2. 使用备份文件恢复
|
||||
3. 重新运行部署脚本
|
||||
|
||||
## 联系方式
|
||||
|
||||
如有问题,请联系系统管理员。
|
||||
1
backup/20251012_100706/security/cf-tokens.txt
Normal file
1
backup/20251012_100706/security/cf-tokens.txt
Normal file
@@ -0,0 +1 @@
|
||||
CF Token: 0aPWoLaQ59l0nyL1jIVzZaEx2e41Gjgcfhn3ztJr
|
||||
69
backup/20251012_100706/security/grafana-api-credentials.md
Normal file
69
backup/20251012_100706/security/grafana-api-credentials.md
Normal file
@@ -0,0 +1,69 @@
|
||||
# Grafana API 凭证备忘录
|
||||
|
||||
## 基本信息
|
||||
- **Grafana URL**: http://influxdb.tailnet-68f9.ts.net:3000
|
||||
- **用户名**: admin
|
||||
- **密码**: admin123
|
||||
- **认证方式**: Basic Auth
|
||||
|
||||
## API 使用示例
|
||||
|
||||
### 1. 使用 API Token (推荐)
|
||||
```bash
|
||||
# 创建 Dashboard
|
||||
curl -X POST "http://influxdb.tailnet-68f9.ts.net:3000/api/dashboards/db" \
|
||||
-H "Content-Type: application/json" \
|
||||
-H "Authorization: Bearer glsa_Lu2RW7yPMmCtYrvbZLNJyOI3yE1LOH5S_629de57b" \
|
||||
-d @dashboard.json
|
||||
|
||||
# 获取组织信息
|
||||
curl -X GET "http://influxdb.tailnet-68f9.ts.net:3000/api/org" \
|
||||
-H "Authorization: Bearer glsa_Lu2RW7yPMmCtYrvbZLNJyOI3yE1LOH5S_629de57b"
|
||||
```
|
||||
|
||||
### 2. 使用 Basic Auth (备用)
|
||||
```bash
|
||||
# 创建 Dashboard
|
||||
curl -X POST "http://influxdb.tailnet-68f9.ts.net:3000/api/dashboards/db" \
|
||||
-H "Content-Type: application/json" \
|
||||
-u "admin:admin" \
|
||||
-d @dashboard.json
|
||||
|
||||
# 获取组织信息
|
||||
curl -X GET "http://influxdb.tailnet-68f9.ts.net:3000/api/org" \
|
||||
-u "admin:admin"
|
||||
```
|
||||
|
||||
### 3. 健康检查 (无需认证)
|
||||
```bash
|
||||
curl -X GET "http://influxdb.tailnet-68f9.ts.net:3000/api/health"
|
||||
```
|
||||
|
||||
## 已创建的 Dashboard
|
||||
|
||||
### Loki 热点图 Demo
|
||||
- **Dashboard ID**: 18
|
||||
- **UID**: 5e81473e-f8e0-4f1e-a0c6-bbcc5c4b87f0
|
||||
- **URL**: http://influxdb.tailnet-68f9.ts.net:3000/d/5e81473e-f8e0-4f1e-a0c6-bbcc5c4b87f0/loki-e697a5-e5bf97-e783ad-e782b9-e59bbe-demo
|
||||
- **功能**: 4个热点图面板,类似GitHub贡献图效果
|
||||
|
||||
## API Token (推荐使用)
|
||||
- **Service Account ID**: 2
|
||||
- **Service Account UID**: df0t9r2rzqygwf
|
||||
- **Token Name**: mgmt-api-token
|
||||
- **API Token**: `glsa_Lu2RW7yPMmCtYrvbZLNJyOI3yE1LOH5S_629de57b`
|
||||
- **权限**: Admin
|
||||
|
||||
## API Keys 状态
|
||||
- **当前状态**: 传统API keys功能不可用 (返回404 Not Found)
|
||||
- **原因**: Grafana 12.2.0使用Service Accounts替代传统API keys
|
||||
- **解决方案**: 使用Service Account Token (推荐)
|
||||
|
||||
## 注意事项
|
||||
- 此版本Grafana (12.2.0) 理论上支持API keys,但当前实例不可用
|
||||
- 密码已从默认admin改为admin123
|
||||
- 所有API调用都需要Basic Auth认证
|
||||
- 建议后续检查Grafana配置,启用API keys功能
|
||||
|
||||
## 创建时间
|
||||
2025-10-12 08:56 UTC
|
||||
89
backup/20251012_100706/security/vault/oracle-cloud-config.md
Normal file
89
backup/20251012_100706/security/vault/oracle-cloud-config.md
Normal file
@@ -0,0 +1,89 @@
|
||||
# Oracle Cloud Configuration
|
||||
|
||||
## 🔑 配置信息
|
||||
|
||||
### 存储在Consul KV中
|
||||
```bash
|
||||
# 查看所有Oracle Cloud配置
|
||||
consul kv get -recurse config/oracle-cloud/
|
||||
consul kv get -recurse config/oracle-cloud-kr-chuncheon/
|
||||
|
||||
# 获取美国节点配置
|
||||
consul kv get config/oracle-cloud/user
|
||||
consul kv get config/oracle-cloud/fingerprint
|
||||
consul kv get config/oracle-cloud/tenancy
|
||||
consul kv get config/oracle-cloud/region
|
||||
consul kv get config/oracle-cloud/key_file
|
||||
|
||||
# 获取韩国节点配置
|
||||
consul kv get config/oracle-cloud-kr-chuncheon/user
|
||||
consul kv get config/oracle-cloud-kr-chuncheon/fingerprint
|
||||
consul kv get config/oracle-cloud-kr-chuncheon/tenancy
|
||||
consul kv get config/oracle-cloud-kr-chuncheon/region
|
||||
consul kv get config/oracle-cloud-kr-chuncheon/key_file
|
||||
```
|
||||
|
||||
### 存储在Vault中 (更安全)
|
||||
```bash
|
||||
# 查看美国节点配置
|
||||
vault kv get secret/oracle-cloud
|
||||
vault kv get secret/oracle-cloud/private-key
|
||||
|
||||
# 查看韩国节点配置
|
||||
vault kv get secret/oracle-cloud-kr-chuncheon
|
||||
vault kv get secret/oracle-cloud-kr-chuncheon/private-key
|
||||
```
|
||||
|
||||
## 📝 配置内容
|
||||
|
||||
### 美国节点 (us-ashburn-1)
|
||||
- **User OCID**: `ocid1.user.oc1..aaaaaaaappc7zxue4dlrsjljg4fwl6wcc5smetreuvpqn72heiyvjeeqanqq`
|
||||
- **Fingerprint**: `73:80:50:35:b6:1d:e3:fc:68:f8:e3:e8:0b:df:79:e3`
|
||||
- **Tenancy OCID**: `ocid1.tenancy.oc1..aaaaaaaayyhuf6swf2ho4s5acdpee6zssst6j7nkiri4kyfdusxzn3e7p32q`
|
||||
- **Region**: `us-ashburn-1`
|
||||
|
||||
### 韩国节点 (ap-chuncheon-1)
|
||||
- **User OCID**: `ocid1.user.oc1..aaaaaaaaqoa2my3fwh3jbayachyylqyneiveydrjliu2qz65ijlc57ehplha`
|
||||
- **Fingerprint**: `b1:6e:4e:5a:b6:1c:34:bf:b1:73:76:f6:9f:27:6d:99`
|
||||
- **Tenancy OCID**: `ocid1.tenancy.oc1..aaaaaaaawfv2wd54ly75ppfjgdgap7rtd3vhtziz25dwx23xo4rbkxnxlapq`
|
||||
- **Region**: `ap-chuncheon-1`
|
||||
|
||||
### 私钥
|
||||
- **美国节点**: Vault `secret/oracle-cloud/private-key`
|
||||
- **韩国节点**: Vault `secret/oracle-cloud-kr-chuncheon/private-key`
|
||||
- **格式**: PEM格式私钥
|
||||
- **用途**: Oracle Cloud API认证
|
||||
|
||||
## 🚀 使用方式
|
||||
|
||||
### 从Consul读取配置
|
||||
```bash
|
||||
# 在Nomad job中使用模板
|
||||
template {
|
||||
data = <<EOF
|
||||
[DEFAULT]
|
||||
user={{ key "config/oracle-cloud/user" }}
|
||||
fingerprint={{ key "config/oracle-cloud/fingerprint" }}
|
||||
tenancy={{ key "config/oracle-cloud/tenancy" }}
|
||||
region={{ key "config/oracle-cloud/region" }}
|
||||
key_file=/local/oci_api_key.pem
|
||||
EOF
|
||||
destination = "local/oci_config"
|
||||
}
|
||||
```
|
||||
|
||||
### 从Vault读取配置
|
||||
```bash
|
||||
# 在应用中使用Vault API
|
||||
curl -H "X-Vault-Token: $VAULT_TOKEN" \
|
||||
https://vault.git-4ta.live/v1/secret/data/oracle-cloud
|
||||
```
|
||||
|
||||
## 📅 创建时间
|
||||
2025-10-12 09:25 UTC
|
||||
|
||||
## 🏷️ 标签
|
||||
- 云提供商: Oracle Cloud Infrastructure
|
||||
- 区域: us-ashburn-1, ap-chuncheon-1
|
||||
- 存储方式: Consul KV + Vault
|
||||
- 节点数量: 2个区域
|
||||
56
backup/20251012_100706/security/vault/vault-config.md
Normal file
56
backup/20251012_100706/security/vault/vault-config.md
Normal file
@@ -0,0 +1,56 @@
|
||||
# Vault Configuration
|
||||
|
||||
## 🌐 访问信息
|
||||
|
||||
### Vault地址
|
||||
- **Web UI**: https://vault.git-4ta.live/ui/
|
||||
- **API**: https://vault.git-4ta.live/v1/
|
||||
- **CLI**: `export VAULT_ADDR="https://vault.git-4ta.live"`
|
||||
|
||||
### 集群信息
|
||||
- **集群名称**: vault-cluster
|
||||
- **存储后端**: Consul
|
||||
- **HA模式**: 启用
|
||||
- **版本**: 1.20.4
|
||||
|
||||
## 🔧 已配置的存储
|
||||
|
||||
### KV存储引擎
|
||||
- **路径**: `secret/`
|
||||
- **类型**: kv-v2
|
||||
- **状态**: 已启用
|
||||
|
||||
### 已存储的配置
|
||||
- **Grafana API Token**: `secret/grafana`
|
||||
- **Cloudflare Tokens**: `secret/cloudflare`
|
||||
|
||||
## 📋 常用命令
|
||||
|
||||
### 查看存储的配置
|
||||
```bash
|
||||
vault kv get secret/grafana
|
||||
vault kv get secret/cloudflare
|
||||
```
|
||||
|
||||
### 列出所有存储
|
||||
```bash
|
||||
vault kv list secret/
|
||||
```
|
||||
|
||||
### 添加新配置
|
||||
```bash
|
||||
vault kv put secret/new-config key="value"
|
||||
```
|
||||
|
||||
## 🚀 部署信息
|
||||
|
||||
### Nomad Job
|
||||
- **Job名称**: vault-single-nomad
|
||||
- **部署节点**: warden, ch4, ash3c
|
||||
- **端口**: 8200
|
||||
- **自动解封**: 已配置
|
||||
|
||||
### 健康检查
|
||||
```bash
|
||||
curl -k -s https://vault.git-4ta.live/v1/sys/health | jq
|
||||
```
|
||||
Reference in New Issue
Block a user