SRE 知识库敏感信息治理:在向量切片前用纯正则与本地小模型剔除生产私钥与 IP

发布时间:2026/10/4 22:26:07
SRE 知识库敏感信息治理:在向量切片前用纯正则与本地小模型剔除生产私钥与 IP
SRE 知识库敏感信息治理在向量切片前用纯正则与本地小模型剔除生产私钥与 IP在企业全面推进“AI 运维”的浪潮中搭建一个能够解答生产故障、指引排障命令的 SRE 智能问答库RAG几乎成了每个技术团队标配的重点工程。然而很多团队在欢天喜地把历年积累的 Wiki、复盘报告、排障 SOP 和架构配置导入向量数据库之后却被安全合规团队的一纸紧急安全审计报告直接叫停整改——某位普通测试人员在内部问答助手的聊天框里随口输入了一句“请帮我查一下生产环境订单数据库的连接方式和主库地址。”大模型由于从某份未加脱敏的历史应急文档中检索到了相关切片毫无防备地将一段包含了内网物理 IP、特权账号root以及明文数据库密码的 JDBC 连接串完整吐了出来不仅如此只要有人故意使用提示词注入Prompt Injection套话大模型甚至能一五一十地把文档里记录的云厂商 AccessKey/SecretKey、甚至是 SSH 生产私钥证书全盘托出。这绝不是危言耸听。在早期的运维文档管理中工程师在深夜救火时随手把生产配置、密钥凭证贴在文档里是极普遍的陋习。如果不在文档进入向量化切片的最前置关卡筑牢防线智能知识库就会瞬间沦为黑客与内部违规者刺探生产机密的最强提款机。为什么脱敏必须在“向量切片前”彻底完成有些团队抱有一种侥幸心理“我们能不能在最后大模型输出答案的时候再搞一层敏感词过滤”这种“后置脱敏”在工程上是极其危险且无能的向量索引本身就是信息泄露的温床未经脱敏的文本一旦被转化为高维稠密向量Dense Embeddings存入数据库具备特定特征的向量本身就可以通过逆向重构算法反推原始文本信息。大模型的注意力极易被敏感数据带偏如果 Prompt 里包含了真实的生产 IP 和密码大模型在生成排障命令时可能会下意识地将这些敏感凭据拼接入示例命令中后置正则很难穷举复杂的动态变形。安全合规的零容忍原则金融与企业级合规规范明确要求生产高危资产凭据严禁在任何 AI 知识库存储介质中落盘Zero-Knowledge at Rest。脱敏动作必须是一个不可逆的物理级前置清洗过程。双层治理防线高速确定性正则 本地 SLM 语义兜底单一的技术手段无法兼顾效率与识别率。针对 SRE 文档的特殊性我们构建了“确定性正则流水线 本地小模型语义识别”的双层脱敏治理架构第一道防线高性能预编译正则引擎Fast Regex Pipeline负责拦截 95% 以上具备固定语法模式的高危特征。例如标准 PEM 格式的私钥头部、云厂商标准的 AK/SK 前缀、IPv4 内网保留网段10.0.0.0/8、172.16.0.0/12、192.168.0.0/16、以及包含password的数据库连接串。由于正则执行耗时在微秒级即使处理上万份大文档也能在数分钟内完成。第二道防线本地轻量小模型SLM Semantic Fallback负责捕获那些隐藏在非结构化自然语言中的“幽灵密码”。例如工程师在文档中写着“昨晚临时把主库认证改成了大写的公司名加当年年份”、“堡垒机跳板机临时动态验证码为 8848”。这类口语化描述正则完全无法捕捉我们通过本地私有化部署的 1.5B/3B 级别的轻量小模型如 Qwen2.5-Coder-1.5B 本地量化版专门做命名实体识别NER与高危意图分类彻底堵死规则死角。生产级敏感信息清洗管道的 Python 实现以下是该双层清洗过滤引擎的核心实现代码import re from typing import Tuple, Dict, Any class SRESensitiveDataScrubber: def __init__(self): # 预编译核心高危正则规则集 self.rules [ # 1. 拦截 RSA / ECDSA / OPENSSH 私钥证书 (re.compile(r-----BEGIN (?:RSA |EC |DSA |OPENSSH )?PRIVATE KEY-----[\s\S]*?-----END (?:RSA |EC |DSA |OPENSSH )?PRIVATE KEY-----), [PROTECTED_PRIVATE_KEY_MASKED]), # 2. 拦截云厂商 AccessKey / SecretKey (如阿里云 LTAI 开头AWS AKIA 开头) (re.compile(r\b(?:LTAI[a-zA-Z0-9]{16,24}|AKIA[a-zA-Z0-9]{16})\b), [CLOUD_ACCESS_KEY_MASKED]), # 3. 拦截内网 IPv4 私有地址严格限定在 A/B/C 类内网网段 (re.compile(r\b(?:10\.\d{1,3}\.\d{1,3}\.\d{1,3}|172\.(?:1[6-9]|2[0-9]|3[0-1])\.\d{1,3}\.\d{1,3}|192\.168\.\d{1,3}\.\d{1,3})\b), 10.x.x.x[MASKED_IP]), # 4. 拦截数据库 JDBC / Redis 连接串中明文密码 (re.compile(r(?i)(jdbc:[a-zA-Z0-9]://[^:]:)([^])()), r\1[MASKED_DB_PASSWORD]\3), # 5. 拦截常规键值对形式的密钥与密码 (re.compile(r(?i)\b(password|passwd|secret_key|api_key|token)\s*[:]\s*[\]?([a-zA-Z0-9_\-\.!#$%^*]{6,64})[\]?), r\1[MASKED_CREDENTIAL]), # 6. 拦截 Bearer Token 与 JWT 令牌 (re.compile(r\bBearer\seyJ[a-zA-Z0-9_\-\]\.[a-zA-Z0-9_\-\]\.[a-zA-Z0-9_\-\]), Bearer [JWT_TOKEN_MASKED]) ] def scrub_text_deterministically(self, content: str) - Tuple[str, int]: 第一阶段确定性正则流水线快速抹除 total_replacements 0 cleaned_content content for pattern, replacement in self.rules: cleaned_content, count pattern.subn(replacement, cleaned_content) total_replacements count return cleaned_content, total_replacements def semantic_slm_audit(self, text_snippet: str) - str: 第二阶段本地轻量小模型语义辅助审查 在生产环境下调用本地 llama.cpp 暴露的 1.5B 模型进行命名实体检测 此处使用确定性逻辑桩展示核心思想 # 针对零散自然语言中的账号密码进行模式兜底 informal_patterns [ (re.compile(r(?i)(账号|用户名)[:]\s*([a-zA-Z0-9_-])\s*[,]\s*(密码|口令)[:]\s*([^\s,])), r\1: \2, \3: [HIDDEN_PASSWORD]) ] audited_text text_snippet for p, rep in informal_patterns: audited_text p.sub(rep, audited_text) return audited_text def process_document(self, raw_markdown: str) - Dict[str, Any]: 全流程文档脱敏主入口 # 1. 第一阶段正则脱敏 step1_text, count self.scrub_text_deterministically(raw_markdown) # 2. 第二阶段小模型语义增强审计 final_text self.semantic_slm_audit(step1_text) return { sanitized_content: final_text, masked_items_count: count, passed_compliance: True }生产脱敏的三大黄金工程准则在将脱敏流水线投入生产处理时必须注意以下关键工程细节防止“脱敏把代码格式搞烂”绝对保持 Markdown 代码块语法高亮有效替换敏感信息时严禁粗暴地把原代码删掉或者破坏缩进。如果一条 YAML 配置被脱敏后缩进全乱了大模型在生成时就会输出非法的 YAML 语法。占位符应当保持与原字段相同的语法结构如password: [MASKED_PWD]。禁止破坏 IP 拓扑的相对因果关系如果一条运维复盘中记录了“主库 IP 发生切换从机器 A 漂移到机器 B”如果把它们无差别全替换为同一个[IP]字符串大模型在阅读时就会产生逻辑混乱。聪明的做法是生成一致性的混淆代号如10.x.x.101[NodeA]与10.x.x.102[NodeB]既隐藏了物理真实 IP又完整保留了拓扑实体之间的相对差异。脱敏管道与 CI/CD 自动化集成每当有工程师向运维手册 Git 仓库提交新的 Markdown 文档时通过 Git Pre-commit 钩子或 GitLab CI 自动触发脱敏扫描直接拦截包含未脱敏凭据的提交将安全隐患扼杀在代码编写的最源头。守住数据安全与隐私合规的红线是在大促和日常保障中推广 AI 生产力的前置通行证。只有让知识库干干净净地运转技术团队才能心无旁骛地依靠它打赢一场场高压的排障硬仗。