Kode-cli/docs/develop-zh/security-model.md
CrazyBoyM d8f0a22233 feat: Implement intelligent completion system with advanced fuzzy matching
- Add advanced fuzzy matching with 7+ strategies (exact, prefix, substring, acronym, initials, fuzzy, Levenshtein)
- Create comprehensive database of 500+ common Unix commands for smart autocompletion
- Implement intelligent Tab completion with @ prefix injection for agents and files
- Add sophisticated input pattern recognition for commands like "dao", "gp5", "py3"
- Enhance mention system with TaskProgressMessage component for better user feedback
- Update documentation with comprehensive intelligent completion guide
- Clean up 21 temporary markdown files to maintain repository cleanliness
- Improve project structure and configuration documentation
- Optimize completion system performance with advanced caching and scoring
2025-08-22 13:07:48 +08:00

436 lines
9.9 KiB
Markdown

# 安全模型
## 概述
Kode 实现了全面的安全模型,在可用性和安全性之间取得平衡。系统提供多层保护,防止潜在有害的操作,同时允许高级用户高效工作。
## 安全原则
### 1. 最小权限原则
操作被授予最小必要权限。工具只请求它们需要的特定权限。
### 2. 明确的用户同意
潜在危险的操作需要明确的用户批准,并清楚地解释风险。
### 3. 纵深防御
多个安全层确保单一故障不会危及系统。
### 4. 透明度
所有操作都被记录并可审计。用户可以看到 AI 正在做什么。
### 5. 安全默认值
系统默认为更安全的选项,更宽松的模式需要明确选择加入。
## 安全模式
### 宽松模式(默认)
平衡安全性和可用性:
- 自动批准安全的读取操作
- 提示文件写入和系统命令
- 为会话缓存批准
- 适用于受信任的环境
### 安全模式(--safe 标志)
对敏感环境的最大安全性:
- 所有操作都需要批准
- 无自动批准
- 无缓存权限
- 详细的操作描述
- 适用于生产系统
```bash
# 启用安全模式
kode --safe
# 特定操作的安全模式
kode --safe -p "更新生产配置"
```
## 权限系统架构
```
┌─────────────────────────────────────────┐
│ 权限请求 │
└─────────────────────────────────────────┘
┌─────────────────────────────────────────┐
│ 检查权限类型 │
├─────────────────────────────────────────┤
│ • 无需权限(只读) │
│ • 会话权限(临时) │
│ • 持久权限(保存) │
│ • 始终询问(关键) │
└─────────────────────────────────────────┘
┌─────────────────────────────────────────┐
│ 权限解析 │
├─────────────────────────────────────────┤
│ 1. 检查缓存权限 │
│ 2. 检查会话权限 │
│ 3. 检查持久权限 │
│ 4. 如需要则提示用户 │
└─────────────────────────────────────────┘
┌─────────────────────────────────────────┐
│ 执行或拒绝 │
└─────────────────────────────────────────┘
```
## 权限类型
### 1. 文件系统权限
#### 读取权限
- 自动授予项目目录
- 限制系统目录
- 隐藏文件需要明确权限
```typescript
interface FileReadPermission {
path: string
recursive: boolean
includeHidden: boolean
maxDepth?: number
}
```
#### 写入权限
- 始终需要明确批准
- 路径验证以防止遍历
- 为现有文件创建备份
```typescript
interface FileWritePermission {
path: string
operation: 'create' | 'modify' | 'delete'
createBackup: boolean
}
```
### 2. 命令执行权限
#### 命令批准模式
命令与批准模式匹配:
```json
{
"allowedCommands": [
"git *", // 所有 git 命令
"npm test", // 特定命令
"bun run *", // 模式匹配
"echo *" // 安全命令
]
}
```
#### 受限命令
永不允许,即使有权限:
```typescript
const RESTRICTED_COMMANDS = [
'rm -rf /',
'format',
'fdisk',
'dd',
'mkfs',
':(){:|:&};:', // Fork 炸弹
]
```
### 3. 网络权限
#### API 访问
- API 密钥安全存储
- 强制执行速率限制
- 用于审计的请求日志
#### 网页获取
- URL 验证
- 带限制的重定向跟随
- 内容大小限制
### 4. MCP 服务器权限
#### 服务器批准
- 项目范围的服务器批准
- 基于功能的权限
- 运行时沙箱
```typescript
interface MCPServerPermission {
serverName: string
capabilities: string[]
scope: 'project' | 'global'
autoApprove: boolean
}
```
## 安全功能
### 1. 路径遍历防护
```typescript
function validatePath(requestedPath: string, allowedBase: string): boolean {
const resolved = path.resolve(requestedPath)
const base = path.resolve(allowedBase)
// 防止在允许的目录外遍历
if (!resolved.startsWith(base)) {
throw new SecurityError('检测到路径遍历')
}
// 检查符号链接
const realPath = fs.realpathSync(resolved)
if (!realPath.startsWith(base)) {
throw new SecurityError('检测到符号链接逃逸')
}
return true
}
```
### 2. 命令注入防护
```typescript
function sanitizeCommand(command: string): string {
// 拒绝带有危险字符的命令
const dangerous = /[;&|<>$`]/
if (dangerous.test(command)) {
throw new SecurityError('检测到危险的命令字符')
}
// 使用数组执行以防止注入
const [cmd, ...args] = shellQuote.parse(command)
return { cmd, args }
}
```
### 3. 资源限制
```typescript
interface ResourceLimits {
maxFileSize: number // 默认 10MB
maxOutputSize: number // 默认 1MB
maxExecutionTime: number // 默认 2 分钟
maxConcurrentOps: number // 默认 10
maxMemoryUsage: number // 默认 500MB
}
```
### 4. 审计日志
```typescript
interface AuditLog {
timestamp: Date
operation: string
tool: string
input: any
result: 'approved' | 'denied' | 'error'
user: string
sessionId: string
}
function logSecurityEvent(event: AuditLog) {
// 写入安全审计日志
appendToAuditLog(event)
// 检测可疑模式时发出警报
if (detectSuspiciousPattern(event)) {
alertSecurity(event)
}
}
```
## 权限 UI 组件
### 权限请求对话框
```typescript
interface PermissionRequest {
title: string
description: string
risks: string[]
operation: {
tool: string
action: string
target: string
}
options: {
approve: boolean
deny: boolean
alwaysAllow: boolean
saveForSession: boolean
}
}
```
### 视觉指示器
- 🔒 **锁定**:需要权限
-**批准**:权限已授予
-**拒绝**:权限被拒绝
- ⚠️ **警告**:潜在危险
- 🛡️ **安全模式**:增强安全激活
## 安全最佳实践
### 对于用户
1. **为生产系统使用安全模式**
2. **批准前审查命令**
3. **将权限限制为必要的操作**
4. **定期审计权限授予**
5. **使用环境变量保护 API 密钥**
### 对于开发者
1. **使用 Zod 模式验证所有输入**
2. **在工具设计中使用最小权限**
3. **在权限请求中清晰的风险沟通**
4. **使用安全默认值安全失败**
5. **记录安全事件以供审计跟踪**
## 威胁模型
### 潜在威胁
1. **恶意提示**
- **威胁**:用户欺骗 AI 进行有害操作
- **缓解**:权限系统、命令验证
2. **路径遍历**
- **威胁**:访问项目外的文件
- **缓解**:路径验证、符号链接检查
3. **命令注入**
- **威胁**:执行非预期的命令
- **缓解**:命令清理、数组执行
4. **资源耗尽**
- **威胁**:消耗过多资源
- **缓解**:资源限制、超时
5. **数据泄露**
- **威胁**:泄露敏感信息
- **缓解**:网络限制、审计日志
## 安全配置
### 全局安全设置
```json
{
"security": {
"mode": "permissive",
"maxFileSize": 10485760,
"maxExecutionTime": 120000,
"auditLogging": true,
"restrictedPaths": [
"/etc",
"/sys",
"/proc",
"~/.ssh"
]
}
}
```
### 项目安全策略
```json
{
"security": {
"allowedCommands": [
"git *",
"npm test",
"npm run build"
],
"allowedPaths": [
"./src",
"./tests",
"./docs"
],
"deniedTools": [
"bash"
],
"requireApproval": [
"file_write",
"file_delete"
]
}
}
```
## 紧急程序
### 安全事件响应
1. **立即行动**
```bash
# 终止所有 Kode 进程
pkill -f kode
# 撤销 API 密钥
kode config remove -g apiKey
# 全局启用安全模式
kode config set -g security.mode safe
```
2. **调查**
```bash
# 检查修改的文件
git status
git diff
# 审查权限授予
kode security permissions list
```
3. **恢复**
```bash
# 重置权限
kode security reset
# 从备份恢复
git restore .
# 更新安全设置
kode config set security.mode safe
```
## 安全监控
### 指标和警报
```typescript
interface SecurityMetrics {
permissionRequests: number
deniedOperations: number
suspiciousPatterns: number
resourceViolations: number
auditLogSize: number
}
function monitorSecurity() {
// 检查异常
if (metrics.deniedOperations > threshold) {
alert('拒绝操作数量过多')
}
// 模式检测
if (detectAttackPattern(auditLog)) {
alert('检测到潜在的安全威胁')
}
}
```
### 合规性
- **审计跟踪**:所有操作都被记录
- **访问控制**:基于角色的权限
- **数据保护**:敏感数据加密
- **事件响应**:记录的程序
- **定期审查**:安全审计和更新
安全模型确保 Kode 提供强大的功能,同时保持对意外和恶意伤害的强大保护。分层方法允许用户为其环境选择适当的安全级别,同时保持可用性。