- 添加项目规则文档(开发规范、安全规则、配置管理) - 实现数据模块核心功能(API 客户端、限流器、存储管理、配置加载) - 添加 .gitignore 和 .kilocodeignore 配置 - 配置环境变量模板 - 编写 daily 模块单元测试
8.6 KiB
8.6 KiB
安全与访问控制规则
本文件定义了项目的安全约束和访问控制规则。
🔒 禁止访问配置文件
核心约束
严禁在编码过程中访问根目录下的 config 目录下的任何文件。这包括:
- 禁止读取 - 不得使用任何方式读取
config/目录下的文件 - 禁止编辑 - 不得修改
config/目录下的配置文件 - 禁止查看 - 不得阅读
config/目录下的文件内容 - 禁止搜索 - 不得在
config/目录下进行任何搜索操作 - 禁止执行 - 不得在
config/目录下执行任何命令
所有配置读取必须通过集中管理的配置模块(src/config/)进行。config/ 与 src/config/ 是完全不同的目录,前者受保护,后者是配置模块代码目录。
目录结构说明
ProStock/
├── config/ # 受保护的配置文件目录(禁止任何访问)
│ ├── .env.example # 环境变量模板
│ ├── .env.local # 本地环境配置(敏感)
│ ├── config.yaml # 通用配置
│ └── ...
├── src/config/ # 配置模块代码目录(仅限模块内部访问)
│ ├── __init__.py
│ ├── settings.py # 配置加载逻辑
│ └── ...
└── ...
受限制工具完整列表
所有以下工具均严格禁止访问 config/ 目录:
| 工具类别 | 受限制工具 | 禁止操作 |
|---|---|---|
| 文件读取 | read_file |
读取 config/ 目录下任何文件 |
| 文件读取 | list_files |
列出 config/ 目录内容 |
| 文件编辑 | edit_file |
编辑 config/ 目录下任何文件 |
| 文件编辑 | search_and_replace |
替换 config/ 目录下文件内容 |
| 文件编辑 | write_to_file |
写入 config/ 目录(新建或覆盖) |
| 文件编辑 | delete_file |
删除 config/ 目录下任何文件 |
| 搜索工具 | search_files |
在 config/ 目录下进行正则搜索 |
| 命令执行 | execute_command |
执行任何涉及 config/ 目录的命令 |
| 代码模式 | 所有代码写入操作 | 向 config/ 目录写入代码或配置 |
违禁行为完整列表 ❌
# 禁止:直接读取 .env 文件
import dotenv
dotenv.load_dotenv('config/.env') # 禁止!
# 禁止:直接读取配置文件
with open('config/settings.json', 'r') as f: # 禁止!
config = json.load(f)
# 禁止:硬编码配置路径
config_path = os.path.join('config', 'database.yml') # 禁止!
# 禁止:使用 read_file 工具查看 config 文件
read_file(path='config/.env') # 禁止!
# 禁止:使用 edit_file/search_and_replace 编辑 config 文件
edit_file(path='config/settings.py', ...) # 禁止!
# 禁止:使用 search_files 搜索 config 目录
search_files(path='config', regex='.*') # 禁止!
# 禁止:使用 list_files 列出 config 目录
list_files(path='config', recursive=True) # 禁止!
# 禁止:使用 write_to_file 创建或修改 config 文件
write_to_file(path='config/custom.py', ...) # 禁止!
# 禁止:使用 delete_file 删除 config 文件
delete_file(path='config/old.env') # 禁止!
# 禁止:Python 文件系统操作
import os
os.listdir('config') # 禁止!
os.path.exists('config/.env') # 禁止!
os.path.isfile('config/settings.yaml') # 禁止!
os.walk('config') # 禁止!
# 禁止:pathlib 操作
from pathlib import Path
Path('config/.env').read_text() # 禁止!
Path('config').iterdir() # 禁止!
# 禁止:glob 模式匹配
import glob
glob.glob('config/**/*') # 禁止!
glob.iglob('config/*.yaml') # 禁止!
# 禁止:shutil 操作
import shutil
shutil.copy('config/.env', 'backup/') # 禁止!
违禁命令执行 ❌
# 禁止:进入 config 目录
cd config # 禁止!
# 禁止:列出 config 目录
ls config/ # 禁止!
dir config # 禁止!
# 禁止:读取 config 文件
cat config/.env # 禁止!
type config\.env # 禁止!
# 禁止:搜索 config 目录
grep -r "SECRET" config/ # 禁止!
# 禁止:任何 config 目录相关命令
find config -name "*.py" # 禁止!
合规行为 ✅
# 正确:使用配置管理模块
from src.config.settings import Settings
settings = Settings()
db_config = settings.database
# 正确:配置模块内部处理
from src.config import get_config
config = get_config()
配置文件保护规则
config目录:根目录下的config/目录完全受保护,禁止任何工具访问src/config目录:配置模块代码目录,仅限src/config/内部代码访问- 敏感文件:
.env文件必须添加到.gitignore - 配置加载:必须在应用启动时一次性加载,而非在运行时多次读取
- 工具调用限制:所有工具调用必须验证目标路径不包含
config/前缀
🔐 敏感信息处理
禁止的行为
# 禁止:在代码中硬编码密钥
API_KEY = "sk-1234567890abcdef" # 禁止!
# 禁止:打印敏感信息
print(f"Password: {password}") # 禁止!
# 禁止:将密钥写入日志
logger.debug(f"API Key: {api_key}") # 禁止!
合规做法
# 正确:从环境变量获取
import os
API_KEY = os.environ.get('API_KEY')
# 正确:使用配置管理
from src.config.settings import Settings
settings = Settings()
api_key = settings.api_key
🛡️ 安全最佳实践
输入验证
- 所有外部输入必须经过验证和清理
- 使用参数化查询防止 SQL 注入
- 对用户输入进行适当的转义和过滤
依赖安全
- 定期更新依赖包以修复安全漏洞
- 使用
pip audit或safety检查依赖 - 避免使用已知存在安全问题的包
日志规范
- 禁止 记录敏感信息(密码、密钥、令牌等)
- 禁止 记录完整的用户数据(考虑脱敏)
- 建议 记录操作类型、用户ID(不含敏感字段)、时间戳
错误处理
- 禁止向用户暴露详细的错误堆栈
- 敏感错误应记录到安全日志,而非返回给客户端
- 使用通用的错误消息对外展示
⚠️ 违规处理
自动检测机制
- 提交前扫描:使用 Git hooks 自动扫描提交内容
- CI/CD 流水线检测:在持续集成流程中运行安全扫描
- 静态代码分析:集成静态分析工具检测违规模式
- 工具调用监控:监控所有工具调用是否涉及
config/目录
惩罚机制
违反上述规则将导致:
- 代码审查不通过:提交将被自动拒绝
- 安全扫描工具报警:触发安全警报通知
- 安全漏洞评级:标记为高优先级安全漏洞
- 构建阻断:CI/CD 流水线自动失败
- 审计日志记录:记录违规行为用于审计追踪
违规严重程度分类
| 等级 | 违规类型 | 处罚措施 |
|---|---|---|
| 严重 | 故意读取敏感配置文件(如 .env) |
代码审查拒绝、团队通知 |
| 高 | 使用工具访问 config/ 目录 |
代码审查拒绝、要求整改 |
| 中 | 在代码中硬编码配置路径 | 要求修改、代码审查标记 |
| 低 | 潜在风险操作(需人工审核) | 代码审查提醒 |
📋 规则检查清单
提交前检查
- 没有使用任何工具访问
config/目录 - 没有硬编码的
config/目录路径 - 配置文件仅通过配置模块访问
- 没有硬编码的敏感信息
- 敏感信息从环境变量或安全存储获取
- 日志不包含敏感数据
- 错误处理不暴露敏感信息
工具调用检查
read_file未调用config/目录edit_file未指向config/目录write_to_file未写入config/目录delete_file未删除config/目录search_files未搜索config/目录list_files未列出config/目录execute_command未涉及config/路径
🔧 合规验证脚本
为确保规则得到遵守,可使用以下验证方法:
# 检查是否有访问 config 目录的代码
grep -r "config/\." --include="*.py" src/ tests/ docs/
# 检查工具调用中的 config 路径
grep -rn "path='config" --include="*.py"
# 检查是否有 .env 文件被提交
git ls-files | grep "^config/.env"
📝 培训与文档
- 新成员培训:入职时必须学习本安全规则
- 定期审计:每月进行一次安全规则执行情况审计
- 规则更新:安全规则随项目演进定期更新
- 违规通报:定期通报违规案例以提高安全意识