Files
Nexus/.cursor/rules/nexus-security.mdc
T

45 lines
1.5 KiB
Plaintext
Raw Normal View History

---
description: Nexus 安全规范 — JWT/TOTP/API Key/Fernet/CORSMCP MySQL 只读
globs: server/api/**,server/application/**,server/infrastructure/database/**,web/app/**
alwaysApply: false
---
# Nexus 安全
## 认证矩阵
| 调用方 | 机制 |
|--------|------|
| 管理端 API | JWT Bearer + 可选 TOTP |
| Agent | `X-API-Key`(仅 per-server `agent_api_key`;经 `POST /api/servers/{id}/agent-key` 生成,BL-06 起无 global 回退) |
| WebSocket | JWT query param |
| 安装向导 | 无 JWT(仅安装模式可用) |
## 登录防暴破
- `auth_service.py`:失败计数 → 15min 锁定 → HTTP 429
- 刷新令牌重用检测:旧 refresh 作废、`token_version` 递增
## 密钥(禁改 / 禁提交)
- `.env` 永不入 git`SECRET_KEY` / `API_KEY` / `ENCRYPTION_KEY` / `DATABASE_URL` 不可从 settings 表覆盖
- UI 不展示可改的 `API_KEY`
## 运维信任模型
- 鉴权管理员即信任用户,不做 RBAC
- 必须防御:SQL/命令注入、XSS、凭据泄露
- Shell`shlex.quote()`DELETE/UPDATE 须有 WHEREMCP 同样)
## Cursor MySQL MCP
- 使用 `@yclenove/mysql-mcp-server`**默认 `MYSQL_READONLY=true`**
- `MYSQL_DATABASE_ALLOWLIST=nexus`(或实际库名)
- 禁止在 MCP `env` 或 git 中提交生产密码;连接信息仅写在本地 `.env`
- 查库优先 MCP `query` / `describe_table`,避免手写破坏性 SQL
## 审计
- 所有 CUD 写 `audit_logs`(含 `ip_address`
- WebSSH 会话与 `command_logs` 可追溯