NAC_Blockchain/docs_center/nac-admin/ops/secrets.md

55 lines
2.1 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 密钥管理说明
**密钥文件路径**`/opt/nac/services/nac-admin/.env`
## 必要密钥列表
| 环境变量 | 说明 | 示例值 |
|----------|------|--------|
| `NAC_MYSQL_URL` | MySQL 连接字符串nac_id 数据库)| `mysql://root:password@localhost:3306/nac_id` |
| `NAC_MONGO_URL` | MongoDB 连接字符串(知识引擎数据库)| `mongodb://root:password@localhost:27017/nac_knowledge_engine?authSource=admin` |
| `NAC_JWT_SECRET` | JWT 签名密钥至少32位随机字符串| `<随机生成>` |
## .env 文件格式
```bash
NAC_MYSQL_URL=mysql://root:vaingkvf@localhost:3306/nac_id
NAC_MONGO_URL=mongodb://root:idP0ZaRGyLsTUA3a@localhost:27017/nac_knowledge_engine?authSource=admin
NAC_JWT_SECRET=<生产环境随机密钥>
```
## 密钥管理最佳实践
1. **不要将密钥写入 systemd 服务文件的 `Environment=` 行**,应使用 `EnvironmentFile=` 指向 `.env` 文件
2. **`.env` 文件权限**应设置为 `600`(仅 root 可读):`chmod 600 /opt/nac/services/nac-admin/.env`
3. **定期轮换 JWT_SECRET**每90天更换一次更换后需要重启服务所有用户需重新登录
4. **MongoDB 密码**:使用宝塔面板数据库管理界面修改,修改后同步更新 `.env` 文件
5. **MySQL 密码**:使用宝塔面板数据库管理界面修改,修改后同步更新 `.env` 文件
## 密钥迁移步骤(从 systemd 内联迁移到 .env 文件)
```bash
# 1. 创建 .env 文件
cat > /opt/nac/services/nac-admin/.env << 'EOF'
NAC_MYSQL_URL=mysql://root:vaingkvf@localhost:3306/nac_id
NAC_MONGO_URL=mongodb://root:idP0ZaRGyLsTUA3a@localhost:27017/nac_knowledge_engine?authSource=admin
NAC_JWT_SECRET=<生产环境随机密钥>
EOF
# 2. 设置文件权限
chmod 600 /opt/nac/services/nac-admin/.env
chown root:root /opt/nac/services/nac-admin/.env
# 3. 修改 systemd 服务文件,移除内联密钥,添加 EnvironmentFile
# 编辑 /etc/systemd/system/nac-admin.service
# 删除所有 Environment=NAC_* 行
# 添加 EnvironmentFile=/opt/nac/services/nac-admin/.env
# 4. 重载并重启
systemctl daemon-reload
systemctl restart nac-admin
# 5. 验证服务正常
systemctl status nac-admin
```