正在学习
在另一个终端中:
示例:评估 Claude 生成的代码
generated_code = """ def process_user_input(data): password = data.get('password') print(f"Processing user_data: {password}") eval(data['command']) """ report = run_claude_check(generated_code) print(json.dumps(report, indent=4))
本示例演示的内容:
- 每个 Claude 输出都会自动通过一个轻量级的静态分析层(run_claude_check()),其设计参考了 NIST 的风险识别阶段。
- 不安全的代码结构(如 eval)或敏感数据处理会触发告警。
- 结果可以被记录或反馈到治理仪表板中,以便在代码合并之前进行进一步审查。
这种嵌入式"AI 风险扫描"模拟了大型治理系统在大规模场景下的运行方式——轻量化、自动化且非侵入式,同时能有效强化问责机制。
澄清表:Claude 代码的 AI 风险框架映射
| 框架 | 核心关注点 | 在 Claude 工作流中的实际应用 | 开发人员要点 |
| --- | --- | --- | --- |
| NIST AI RMF | 信任、问责与透明度 | 建立代码审查检查点和提示透明度日志 | 为每一次 AI 辅助的代码变更维护文档记录 |
| ISO/IEC 23894 | 全生命周期风险管理 | 为 Claude 生成组件的部署定义审批关口 | 将 AI 检查集成到 CI/CD 中 |
| OECD AI 原则 | 安全性、公平性与监督 | 将模型访问限制在非敏感环境中 | 推广负责任的 AI 实践 |
| Anthropic 宪法式 AI | 道德模型对齐与危害减少 | 确保 Claude 的使用遵守内部关于安全与隐私的政策 | 鼓励人机协作而非盲目自动化 |
AI 风险框架将 Claude 代码的使用从一种临时性的实践转变为结构化、合规且可审计的流程。它们为开发者和组织提供了信心,确保自动化和创造力不会损害安全性或完整性。
通过将这些框架集成到您的编码流程中,您可以为 AI 的可靠性、透明度和治理建立可衡量的标准。
在下一节中,我们将探讨安全提示工程与数据保护,展示如何设计 Claude 提示,在最大化效用的同时防范数据泄露、提示注入以及敏感信息的滥用。
## 11.2 防止敏感数据泄露
在实际项目中使用 Claude Code 时,数据隐私和保密性必须被视为头等要务。开发人员经常使用真实的代码片段、API 密钥、数据库凭证或内部数据模型来提示 Claude——如果没有适当的保障措施,这可能导致意外的数据泄露。防止此类暴露不仅是一项技术最佳实践,更是负责任地使用 AI 的核心要求,特别是在金融、医疗或政府等受监管行业中。
本节将解释如何设计 Claude 工作流,主动防止敏感数据在提示、记录或存储过程中泄露。您将学习如何识别有风险的输入、在发送给 Claude 之前对数据进行清理,以及如何实施严格的边界以确保符合内部政策和隐私法规。
概念阐述
敏感数据泄露可能通过以下几种途径发生:
1. 提示注入:用户或代码片段意外嵌入了密钥或凭证,并将其发送给模型。
2. 日志暴露:系统日志、模型跟踪或调试输出以明文形式存储敏感字符串。
3. 上下文污染:当对话中先前的消息包含私人数据,而这些数据随后在补全或摘要中再次出现时。
为防止这种情况,Claude 用户必须结合安全提示工程、自动脱敏和受治理的会话管理。核心原则是:绝不发送您不会通过电子邮件发送给第三方系统的内容。
Anthropic 的 Claude 模型在构建时遵循严格的隐私原则,设计上不会保留或基于用户输入进行训练,但数据治理的责任仍在于开发人员。这意味着在任何请求到达 Claude 之前,您必须在自己的环境中实施数据过滤器、验证层和上下文控制。
动手实践示例:在发送给 Claude 之前对提示进行清理
让我们实现一个轻量级的 Python 工具,它能在将提示传递给 Claude 之前自动脱敏敏感令牌——如密码、API 密钥和个人身份信息(PII)。此模式可适配于后端服务、CI/CD 自动化或开发人员工具。
```python
import re
SENSITIVE_PATTERNS = [
r"(?i)api[_-]?key\s*=\s*['\"][A-Za-z0-9_\-]{10,}['\"]", # API 密钥
r"(?i)password\s*=\s*['\"][^'\"]+['\"]", # 密码
r"(?i)secret\s*=\s*['\"][^'\"]+['\"]", # 秘密
r"\b\d{3}-\d{2}-\d{4}\b", # 社会安全号(美国格式)
r"(?i)bearer\s+[A-Za-z0-9\.\-_]+" # Bearer 令牌
]
REDACTION_LABEL = "[REDACTED]"
def sanitize_prompt(prompt: str) -> str:
"""在发送给 Claude 之前对敏感模式进行脱敏处理。"""
for pattern in SENSITIVE_PATTERNS:
prompt = re.sub(pattern, REDACTION_LABEL, prompt)
return prompt
练习题
根据 NIST AI RMF 框架,开发人员应为每一次 AI 辅助的代码更改维护什么?
A. 性能指标
B. 文档
C. 用户反馈
D. 代码复杂度分析
以下哪一项不是文中提到的敏感数据泄露途径?
A. 提示注入
B. 日志暴露
C. 上下文污染
D. 数据库加密
以下哪些方法可以防止在使用 Claude Code 时发生敏感数据泄露?
A. 安全提示工程
B. 自动数据脱敏
C. 受控的会话管理
D. 增加模型训练数据
E. 使用较弱的加密方法
下列哪些是 sanitize_prompt 实用程序会清除的敏感模式?
A. API 密钥
B. 密码
C. 社会安全号码 (SSN)
D. 用户名
E. 持有者令牌
Anthropic 的 Claude 模型被设计为保留用户输入并基于其进行训练。
经合组织(OECD)人工智能原则聚焦于人工智能系统的安全性、公平性和监督。
防止敏感数据泄露的关键原则是,永远不要发送你不会通过电子邮件发送给___的内容。
该 ___ 实用程序会在将提示传递给 Claude 之前自动脱敏敏感令牌(如密码和 API 密钥)。
解释为什么防止敏感数据泄露是负责任地使用人工智能的核心要求,尤其是在受监管的行业中。
sanitize_prompt 实用程序是如何工作的,它会编辑哪些类型的敏感信息?
在评估 Claude 生成的任务管理 API 端点代码时,根据 AI 风险框架映射和敏感数据泄露预防原则,以下哪项是一个关键的安全问题?
A. 端点按标题的字母顺序返回任务
B. 端点在响应中包含任务描述
C. 端点记录请求头中使用的原始 API 密钥
D. 端点将任务标题限制为 120 个字符
在审查 Claude 为任务创建端点生成的代码时,以下哪些实现会同时违反敏感数据泄漏防护原则和 FastAPI 最佳实践?(选择所有适用的)
A. 代码直接使用用户输入进行 SQL 查询,没有使用参数化
B. 代码记录了完整的请求体,包括可能的凭证信息
C. 代码验证任务标题长度在 1-120 个字符之间
D. 代码在响应中返回原始的数据库 ID
E. 代码在处理用户输入之前使用 sanitize_prompt 工具进行清理
根据 AI 风险框架映射和敏感数据泄漏预防原则,如果模型承诺不保留数据,那么向 Claude 发送包含 API 密钥的未脱敏用户输入以用于代码生成是可以接受的。
在使用 Claude 进行代码建议的 FastAPI 端点实现中,应先对任何包含潜在凭据的用户输入应用 ___ 实用工具,然后再将其发送给模型。
登录后解锁笔记、知识点解析、AI 问答
立即登录