【问题标题】:Azure Keyvault get values based on environmentAzure Keyvault 根据环境获取值
【发布时间】:2021-03-17 06:49:01
【问题描述】:

我正在使用 Azure Keyvault 获取应用程序配置值。我能够读取应用程序中的值和视图。

代码:

<add key="ClientId"          value="="************************" />
<add key="ClientSecret"      value="************************" />
<add key="AddressURI"        value="https://Example-keyvault.vault.azure.net/secrets/Address1"/>
<add key="SupportEmailURI"   value="https://Example-keyvault.vault.azure.net/secrets/SupportEmail1"/>
<add key="MarketingEmailURI" value="https://Example-keyvault.vault.azure.net/secrets/MarketingEmail1"/>

我有 3 个环境:开发、阶段和生产。

现在在web.config,如果我要移动应用程序以部署在不同的环境中,我需要手动更改 Azure Keyvault 的端点,因为我为每个环境使用不同的订阅。

有没有一种方法可以让我们在 C# 中动态设置环境端点?

端点 = "https://Example-keyvault.vault.azure.net/secrets/MarketingEmail1"

这个值需要根据环境改变吗?

Example-keyvault.vault.azure.net

任何关于如何完成这项工作的见解都会很棒!

提前致谢。

【问题讨论】:

    标签: c# azure


    【解决方案1】:

    您可以使用应用服务的应用程序设置,而不是在 web.config 中使用密钥保管库 URL。这样您就不必根据环境管理密钥保管库 URI,您只需在每个环境的应用程序设置中设置一次,如下所示。您可以找到更多详细信息here

    我还建议您考虑使用Managed Identities(如果您还没有这样做的话)您可以启用系统分配的托管标识或为您的应用服务选择用户分配的托管标识,并为应用服务对密钥保管库的标识。您可以从 Azure 门户中的应用服务启用托管标识,如下所示

    拥有托管标识的优势在于,您可以解决与 Azure Key Vault 相关的引导问题。您可能会发现 this 文章很有帮助。

    【讨论】:

    • 应用服务的应用设置问题是任何可以访问应用服务的人都可以直接查看到值。
    • 嗨@KumarRaj,是的,任何对您的应用服务具有适当权限的人都可以看到该设置,但您将只有 KeyVault 的 URL,而没有任何秘密。使用托管身份,您无需在设置中的任何位置使用 KeyVault 的访问密钥。
    猜你喜欢
    • 2022-06-21
    • 1970-01-01
    • 2023-02-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-30
    • 1970-01-01
    • 2018-12-17
    相关资源
    最近更新 更多