Agent Skills安全实践清单:DefaultAzureCredential认证、防密钥泄露与智能体安全配置
【免费下载链接】skillsSkills, MCP servers, Custom Agents, Agents.md for SDKs to ground Coding Agents项目地址: https://gitcode.com/gh_mirrors/agent/skills
Agent Skills 是微软开源的 AI 编码智能体(Coding Agent)技能库,为 Azure SDK 和 Microsoft AI Foundry 开发提供 175+ 个领域技能、自定义 Agent、MCP 服务器与 AGENTS.md 模板。对于刚接触 AI 智能体开发的读者,本清单聚焦三件事:用 DefaultAzureCredential 做身份认证、防密钥泄露、做好智能体安全配置,帮你从零建立起一套可落地的 Agent 安全实践。
为什么 Agent 技能开发必须重视安全?
AI 编码智能体正在替我们直接操作 Azure 资源、读写密钥、生成生产代码。它一旦"学坏",风险会被自动放大:
- 凭证暴露面大:智能体会读取环境变量、连接字符串,任何硬编码都可能被复制进生成代码
- 模式污染:加载过多技能会导致"上下文腐烂"(context rot),错误的安全模式会被混淆复制
- 不可逆操作:错误的智能体身份配置可能直接操作生产 Graph API 资源
本仓库的思路很务实:把安全规范固化成技能(Skill)和自动化评分器,让智能体"天生就会"写安全的代码。
一、DefaultAzureCredential:Azure 身份认证的首选姿势
Agents.md 明确规定:生产环境一律使用DefaultAzureCredential认证。它是一条"凭据链",会按顺序自动尝试多种认证方式(环境变量、托管标识、Azure CLI 等),无需在代码里写死任何密钥。
新手记住三个关键规则即可(详见 azure-identity-py 验收标准):
| 规则 | 说明 |
|---|---|
✅ 从azure-identity导入 | 生产代码统一使用DefaultAzureCredential,密钥全部走环境变量 |
✅ 异步代码用azure.identity.aio | 同步凭据配异步客户端是典型错误,会静默失败 |
| ❌ 绝不硬编码令牌 | 写死token = "eyJ0eXAi..."这类值属于安全红线 |
另外注意一个容易踩的坑:并非所有场景都适合它。例如创建 Entra Agent ID 时,entra-agent-id 验收标准 明确禁用DefaultAzureCredential——因为 Azure CLI 令牌携带Directory.AccessAsUser.All权限,会被 Graph API 直接 403 拒绝。安全配置的核心是"按需选择最小权限凭据",而不是一刀切。
二、防密钥泄露:4 类必须拒绝的硬编码模式
本仓库内置了一个自动化"无密钥检查器" check-no-secrets.rs,它会扫描源码并拦截 4 类高危模式,这正是新手应自查的清单:
- 硬编码 AccountKey—— 存储账户密钥直接写在代码里
- 共享访问签名(SAS)——
sig=...这类临时令牌被固化进字符串 - 完整连接字符串——
DefaultEndpointsProtocol=...AccountKey=...出现在源码 - 可疑的长 Base64 字符串—— 40 位以上的编码串,极可能是密钥
Rust 生态还有更严格的规定:check-token-credential.rs 直接把连接字符串认证和 SAS 认证列为"禁用语"(banned patterns),只允许TokenCredential系列凭据。翻译成人话:能用令牌凭据,就永远不要用连接字符串。
密钥放哪里?Key Vault
正确的做法是把密码、API Key、连接串全部放进 Key Vault,代码里只保留"取密钥"的动作。参考 azure-keyvault-py 验收标准 的标准做法:
- 密钥库 URL 通过环境变量
AZURE_KEYVAULT_URL注入 - 客户端使用
DefaultAzureCredential认证 - 通过
SecretClient动态读取密钥,而非把值写死
三、智能体安全配置:从 AGENTS.md 到技能选择
智能体的"行为安全"同样有章可循,本仓库提供了三层防线:
1. 用 AGENTS.md 约束行为边界
Agents.md 是智能体行为的"宪法",其中"做与不做"清单包含明确的安全红线:
- ✅ 使用
DefaultAzureCredential认证、显式处理异常 - ❌ 硬编码凭证或端点、空
except块、吞掉认证错误
2. 技能按需加载,拒绝"全量装载"
README.md 特别提醒:只复制当前项目真正需要的技能。加载全部技能不仅浪费 token,还会让不安全模式与正确模式相互混淆——这本身就是一种安全隐患。
3. 让智能体"记得"安全教训
continual-learning Hook 通过 hooks.json 在会话开始、工具调用后、会话结束三个节点自动记录"踩坑经验",让智能体下次主动避开已知的错误做法——安全规范也能"越用越牢"。
四、让测试框架替你把关
本仓库的测试框架(Test Harness)把上述安全规则变成了可执行的验收标准:每个技能目录下都有 acceptance-criteria.md 定义"正确/错误模式",评分器自动判定生成代码是否触碰红线。你可以从 tests/README.md 学习如何为自己的技能添加安全场景。
安全实践速查清单 ✅
把这份清单贴在工位上,覆盖 90% 的常见风险:
- 生产代码使用
DefaultAzureCredential,无硬编码凭证 - 异步场景使用
azure.identity.aio凭据 - 源码中无 AccountKey、SAS、连接字符串、长 Base64
- 敏感值统一存放 Key Vault,URL 走环境变量
- 按最小权限选择凭据(特殊 API 场景禁用默认链)
- 显式捕获认证异常,不用空
except吞错 - 智能体只加载必要技能,AGENTS.md 已部署
- 用测试框架跑一遍技能场景,确认评分达标
掌握以上清单,你的 AI 智能体就能在 Azure 上既"聪明"又"守规矩"地干活了。
【免费下载链接】skillsSkills, MCP servers, Custom Agents, Agents.md for SDKs to ground Coding Agents项目地址: https://gitcode.com/gh_mirrors/agent/skills
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考