你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
在Azure 容器应用上运行Azure Functions时,可以使用两类机密:
| 类别 | 说明 | 使用者 |
|---|---|---|
| 应用级机密 | 函数代码在运行时读取的配置值,例如数据库连接字符串、API 密钥和触发器/绑定凭据。 | 代码和 Functions 运行时绑定。 |
| 函数访问密钥 | 保护 HTTP 触发的函数终结点的身份验证令牌(访问密钥),包括主密钥、主机密钥、函数密钥和系统密钥。 | HTTP 函数的外部调用方(服务、Webhook、开发人员)。 |
这两个类别在方向上不同:
| 应用级机密 | 函数访问密钥 | |
|---|---|---|
| 方向 | 出站 - 函数向其他服务进行身份验证 | 入站 - 调用方向函数进行身份验证 |
| 谁持有机密 | 你的函数应用 | 调用方(webhook 提供程序、服务、开发人员) |
| 它保护的内容 | 函数连接到的内容 | 谁可以调用 HTTP 终结点 |
| 已验证 | 目标服务 | Functions 运行时环境 |
应用级机密
应用级机密是函数代码和绑定连接到外部服务时所需的凭据。 可以通过两种方式存储它们:
| 选项 | 最适用于 | 旋转 | 审计 | 指南 |
|---|---|---|---|---|
| 容器应用机密 | 开发/测试、简单的单应用工作负载 | 手动 | 仅活动日志 | 存储应用级机密 |
| 密钥保管库 引用 | 生产、多应用、合规性 | 自动化(无版本 URI) | 完整密钥保管库诊断 | 存储应用级机密 |
小窍门
为简单起见,请从容器应用机密开始。 需要集中管理、自动轮换或合规性等级审核时,请改用密钥保管库引用。
函数访问密钥
访问密钥为 HTTP 终结点提供轻型共享机密身份验证。 当调用方无法提供 Microsoft Entra ID 令牌(例如第三方 Webhook、服务到服务调用或开发期间)时,使用访问密钥。
设置 AzureWebJobsSecretStorageType 环境变量以选择存储后端:
| 后端 | 设置值 | 最适用于 | 指南 |
|---|---|---|---|
| 容器应用密钥存储 | containerapp |
大多数工作负荷 - 无外部依赖项(建议) | 配置主机密钥 |
| Azure 密钥保管库 | keyvault |
集中式治理、合规性审核 | 配置主机密钥 |
| Azure Blob 存储 | blob |
旧版应用或现有 AzureWebJobsStorage 依赖项 |
配置主机密钥 |
| 本地文件系统 | files |
不建议在容器应用上使用 - 请参阅警告 | N/A |
注释
对于 Azure 容器应用上的 Functions,当未显式设置 AzureWebJobsSecretStorageType 时,平台默认使用 containerapp(容器应用机密存储)。 这意味着访问密钥由容器应用平台的本机机密存储默认管理。 如果您的工作负载需要不同的后端,可以通过将 AzureWebJobsSecretStorageType 设置为 keyvault 或 blob 来覆盖此默认设置。
警告
不要将 AzureWebJobsSecretStorageType 设置为 files. 在 Azure 容器应用中,文件系统是临时的。 使用 files 后端存储的主机密钥会在每次重启、缩减为零事件或修订版本部署时丢失。
后续步骤
选择与需要管理的机密类型匹配的指南: