在Azure 容器应用上运行Azure Functions时,可以使用两类机密:
| 类别 | Description | 使用者 |
|---|---|---|
| 应用级机密 | 函数代码在运行时读取的配置值,例如数据库连接字符串、API 密钥和触发器/绑定凭据。 | 代码和函数运行时绑定。 |
| 函数访问密钥 | 保护 HTTP 触发的函数终结点(包括主密钥、主机、函数和系统密钥)的身份验证令牌(访问密钥)。 | HTTP 函数的外部调用方(服务、Webhook、开发人员)。 |
这两个类别在方向上不同:
| 应用级机密 | 函数访问密钥 | |
|---|---|---|
| 方向 | 出站 - 您的函数对其他服务进行身份验证 | 入站 - 调用方对函数进行身份验证 |
| 谁持有机密 | 你的函数应用 | 调用方(webhook 提供程序、服务、开发人员) |
| 它保护的内容 | 函数连接到的内容 | 谁可以调用 HTTP 终结点 |
| 已验证 | 目标服务 | Functions 运行时环境 |
应用级机密
应用级机密是函数代码和绑定连接到外部服务时所需的凭据。 可以通过两种方式存储它们:
| Option | 最适用于 | 旋转 | Audit | 指南 |
|---|---|---|---|---|
| 容器应用机密 | 开发/测试、简单的单应用工作负载 | 手动 | 仅活动日志 | 存储应用级机密 |
| 密钥保管库引用 | 生产、多应用、合规性 | 自动化(无版本 URI) | 完整 密钥保管库诊断 | 存储应用级机密 |
小窍门
请从容器应用的密钥开始,以简化流程。 当您需要集中管理、自动密钥轮换或合规审计时,请使用 密钥保管库 引用。
函数访问密钥
访问密钥为 HTTP 终结点提供轻型共享机密身份验证。 当调用方无法提供 Microsoft Entra ID 令牌(例如第三方 Webhook、服务到服务调用或开发期间)时,使用访问密钥。
设置 AzureWebJobsSecretStorageType 环境变量以选择存储后端:
| Backend | 设置值 | 最适用于 | 指南 |
|---|---|---|---|
| 容器应用密钥存储 | containerapps |
大多数工作负荷 - 无外部依赖项(建议) | 配置主机密钥 |
| Azure 密钥保管库 | keyvault |
集中式治理、合规性审核 | 配置主机密钥 |
| Azure Blob 存储 | blob |
旧版应用或现有 AzureWebJobsStorage 依赖项 |
配置主机密钥 |
| 本地文件系统 | files |
不建议在容器应用上使用 - 请参阅警告 | 不适用 |
请牢记以下后端注意事项:
- 运行时不会自动选择容器应用的秘密存储。 如果你没有设置
AzureWebJobsSecretStorageType,或者将其设置为无法识别的值,则当AzureWebJobsStorage可用时,Functions 主机会使用 Blob 存储。 - 保持
AzureWebJobsStorage处于已配置状态,以便进行存储运行状况检查并支持依赖存储的功能。 - 不要将
AzureWebJobsSecretStorageType设置为files. 容器应用文件系统是短暂的,因此当应用扩展到零、重启或部署新版本时,存储在该后端的密钥会丢失。
后续步骤
选择与需要管理的机密类型匹配的指南: