在 Azure 容器应用中管理机密

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

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

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

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

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

定义机密

机密定义为一组键/值对。 每个机密的值是直接指定的,或指定为对 Azure 密钥保管库中存储的机密的引用。

备注

请不要直接在生产环境中指定机密值。 而是使用对存储在 Azure Key Vault 中的机密的引用,如在容器应用程序中存储机密值部分中所述。

在容器应用中存储机密值

当你通过门户或不同的命令行选项定义机密时。

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

  2. 在“设置”部分下,选择“机密”。

  3. 选择 添加

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

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

引用密钥保管库中的机密

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

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

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

若要授予对密钥保管库机密的访问权限,请在密钥保管库中为创建的托管标识创建访问策略。 在此策略上启用“获取”机密权限。

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

  2. 在“设置”部分下,选择“标识”。

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

备注

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

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

  2. 出现弹出项,确认要启用系统分配的托管身份,并使用 Microsoft Entra ID 注册容器应用。 选择 “是”

  3. 在“设置”部分下,选择“机密”。

  4. 选择 添加

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

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

备注

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

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

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

  • https://myvault.vault.azure.cn/secrets/mysecret/ec96f02080254f109c51a1f14cdb1931:引用特定版本的机密。
  • https://myvault.vault.azure.cn/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. 在“创建和部署新修订”页面中,选择“创建”以创建具有卷装载的新修订。

后续步骤