通过


你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

管理Azure 容器应用中的机密

Azure 容器应用允许应用程序安全地存储敏感配置值。 在应用程序级别定义机密后,安全值可用于容器应用中的修订版。 此外,可以在缩放规则中引用安全值。 有关通过 Dapr 使用机密的信息,请参阅 Dapr 集成

  • 机密的范围仅限于某一应用程序,在应用程序的任何特定修订之外。
  • 添加、移除或更改机密不会生成新修订。
  • 每种应用程序修订都可以引用一个或多个机密。
  • 多个修订可以引用相同的机密。

已更新或删除的机密不会自动影响应用中的现有修订。 如果更新或删除了机密,可以通过以下两种方式之一对更改进行响应:

  1. 部署新修订。
  2. 重启现有修订。

删除机密之前,请部署不再引用旧密码的新修订。 然后停用引用机密的所有修订。

定义机密

机密定义为一组名称/值对。 每个机密的值可以直接指定,也可以指定为对存储在 Azure 密钥保管库 中的机密的引用。

注意

请不要直接在生产环境中指定机密值。 请改用对存储在Azure 密钥保管库中的机密的引用,如容器应用部分中的 存储机密值中所述。

在容器应用中存储机密值

在通过门户或不同的命令行选项定义机密时,将使用以下内容。

  1. Azure 门户 中转到你的容器应用。

  2. 在“ 安全 ”部分下,选择“ 机密”。

  3. 选择“添加”。

  4. 在“添加机密”上下文窗格中输入以下信息

    • 名称:机密的名称
    • 类型:选择“容器应用机密”
    • 值:机密的值
  5. 选择“添加”。

引用密钥保管库中的机密

定义机密时,将创建对存储在Azure 密钥保管库中的机密的引用。 容器应用会自动从密钥保管库检索机密值,并使它可用作容器应用中的机密。

若要从密钥保管库引用机密,必须先在容器应用中启用托管标识,并授予对密钥保管库机密的标识访问权限。

若要在容器应用中启用托管标识,请参阅托管标识

若要授予对密钥保管库机密的访问权限,请向托管标识授予 Azure RBAC 角色密钥保管库机密用户

  1. Azure 门户 中转到你的容器应用。

  2. 在“ 安全 ”部分下,选择“ 标识”。

  3. 在“系统分配”选项卡中,将“状态”设置为“开”。

注意

还可以使用用户分配的托管标识,该标识可跨多个资源重复使用,并且独立于应用生命周期保留。 若要使用它,请选择“用户分配”选项卡并选择现有标识。

  1. 选择“保存”以启用系统分配的托管标识。

  2. 此时会显示一个弹出窗口,确认要启用系统分配的托管标识,并将容器应用注册到Microsoft Entra ID。 请选择“是”。

  3. 在“ 安全 ”部分下,选择“ 机密”。

  4. 选择“添加”。

  5. 在“添加机密”上下文窗格中输入以下信息

    • 名称:机密的名称
    • Type:选择密钥保管库引用值
    • 密钥保管库机密 URL:密钥保管库中机密的 URI。 此 URI 具有以下形式:https://<YOUR_KEY_VAULT_NAME>.vault.azure.net/secrets/<YOUR_SECRET_NAME>/<32_DIGIT_HEX_ID>
    • 标识:选择“系统分配”。
  6. 选择“添加”。

注意

如果使用 UDR With Azure 防火墙,则需要将 AzureKeyVault 服务标记和 login.microsoft.com FQDN 添加到防火墙的允许列表。 请参阅 使用 Azure 防火墙 配置 UDR 以确定所需的其他服务标记。

密钥保管库机密 URI 和机密轮换

密钥保管库机密 URI 必须具有以下格式之一:

  • https://myvault.vault.azure.net/secrets/mysecret/ec96f02080254f109c51a1f14cdb1931:引用特定版本的机密。
  • https://myvault.vault.azure.net/secrets/mysecret:引用最新版本的机密。

如果 URI 中未指定版本,则应用将使用密钥保管库中存在的最新版本。 有更新的版本可用时,应用会在 30 分钟内自动检索最新版本。 在环境变量中引用机密的任何活动修订版都会自动重启,以选取新值。

若要完全控制使用哪个机密版本,请在 URI 中指定版本。

在环境变量中引用机密

定义机密部分中所述,在应用程序级别声明机密后,可以在容器应用中创建新修订时在环境变量中引用这些机密。 当环境变量引用机密时,将使用机密中定义的值进行填充。

示例

以下示例展示一个在应用程序级别声明连接字符串的应用程序。 此连接在容器环境变量和缩放规则中引用。

在容器应用中定义机密后,可以在创建新修订版时在环境变量中引用该机密。

  1. Azure 门户 中转到你的容器应用。

  2. 在“应用”部分下,选择“修订和副本”。

  3. 在“修订和副本”页面中,选择“创建新修订”

  4. 在“创建和部署新修订”页面的“容器”选项卡的“容器映像”部分下,选择一个容器。

  5. 选择“编辑”。

  6. 在“编辑容器”上下文窗格中,选择“环境变量”选项卡。

  7. 选择“添加”。

  8. 输入以下信息:

    • 名称:环境变量的名称
    • 源:选择“引用机密”。
    • 值:选择之前定义的机密。
  9. 选择“保存”。

  10. 在“创建和部署新修订”页面中,选择“创建”以创建新修订。

在卷中装载机密

定义机密部分中所述,在应用程序级别声明机密后,可以在容器应用中创建新修订版时在卷装载中引用这些机密。 在卷中装载机密时,每个机密都将作为文件装载到卷中。 文件名是机密的名称,文件内容则是机密的值。 在卷装载中可以加载所有机密,也可以加载特定机密。

示例

在容器应用中定义机密后,可以在创建新修订版时在卷装载中引用该机密。

  1. Azure 门户 中转到你的容器应用。

  2. 在“应用”部分下,选择“修订和副本”。

  3. 在“修订和副本”页面中,选择“创建新修订”

  4. 在“创建和部署新修订”页面的“容器”选项卡的“容器映像”部分下,选择一个容器。

  5. 选择“编辑”。

  6. 在“编辑容器”上下文窗格中,选择“卷装载”选项卡。

  7. 选择“创建新卷”。

  8. 在“添加卷”上下文窗格中输入以下信息:

    • 卷类型:选择 Secret
    • 名称:mysecrets
    • 装载所有机密:已启用

    注意

    如果要加载特定机密,请禁用“装载所有机密”,然后选择要加载的机密。

  9. 选择“添加”。

  10. 在“编辑容器”上下文窗格的“卷名称”下,选择“mysecrets”。

  11. 在“装载路径”下,输入 /mnt/secrets

  12. 选择“保存”。

  13. 在“创建和部署新修订”页面中,选择“创建”以创建具有卷装载的新修订。

排查 密钥保管库 引用问题

从Azure 密钥保管库引用机密时,在机密检索或同步过程中可能会遇到问题。 下面是常见错误和解决方法:

Error 原因 解决方案
未启用托管身份 容器应用未分配托管标识。 在容器应用中启用系统分配或用户分配的托管标识。 请参阅托管标识
找不到身份 指定的托管标识不存在或未分配给容器应用。 请验证身份是否已在标识部分中为容器应用创建并分配。
密钥保管库中的机密已禁用 机密在密钥保管库资源中处于禁用状态。 在Azure门户中转到密钥保管库并启用机密。
身份验证失败 托管标识缺少读取机密所需的权限。 向密钥保管库上的托管标识授予密钥保管库机密用户角色。 请参阅 密钥保管库机密使用者
RBAC 权限被拒绝 托管标识没有足够的权限访问密钥保管库。 验证 密钥保管库 上的 RBAC 角色分配,并确保它包括对机密的读取权限。

后续步骤