共用方式為

管理Azure Container Apps中的机密

Azure Container Apps允许应用程序安全地存储敏感配置值。 一旦在应用程序级别定义了机密,加密值即可在您的容器应用中供版本使用。 此外,可以在缩放规则中引用安全值。 有关使用 Dapr 处理机密信息的指南,请参阅 Dapr 集成

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

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

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

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

定义机密

机密定义为一组键/值对。 每个机密的值可以直接指定,也可以指定为对存储在 Azure Key Vault 中的机密的引用。

注意

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

在容器应用中存储机密值

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

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

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

  3. 选择 添加

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

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

从密钥保管库引用机密

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

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

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

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

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

  2. 在“设置”部分下,选择“身份”。

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

注意

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

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

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

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

  4. 选择 添加

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

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

注意

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

Key Vault机密 URI 和机密轮换

Key Vault机密 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. 输入以下信息:

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

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

在存储卷中挂载机密

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

示例

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

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

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

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

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

  5. 选择 编辑

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

  7. 选择“创建新卷”

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

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

    注意

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

  9. 选择 添加

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

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

  12. 选择“保存”。

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

后续步骤