azure - 将 Azure Key Vault 中的 secret 作为环境变量配置到 Azure 应用服务

标签 azure azure-pipelines azure-keyvault azure-appservice

我有:

  • Azure App Service其中运行着一个 Docker 容器。 Docker 容器内部有一个 Python FastAPI Web 应用程序。
  • Azure Key Vault其中包含一些特定于应用程序的 secret (例如用于向侧服务发送请求的公共(public) API 客户端 secret )

我正在尝试为应用程序设置 secret 。

有几个例子表明应用程序直接从 Key Vault 读取 secret (例如 official MS documentation ),但我认为配置不应该是应用程序的责任。 也许, secret 应该设置为 CD 管道的环境变量(如果这是一个坏主意,请纠正我)。否则,应用程序知道有关其运行的基础设施的详细信息,我想这不是最佳实践。

是否有适当的方法向应用程序环境提供 Key Vault secret ?

最佳答案

我尝试在我的环境中重现相同的问题并得到以下结果

我已经创建了应用服务

enter image description here

azure key 保管库提供了一种在应用程序外部存储 key 和 secret 的方法,使用访问策略,我们可以允许应用程序访问 key 保管库中的 key

要在 azure 应用服务中将 keyvault 作为环境变量进行访问,我们必须设置如下所述的策略

在应用服务中 => 身份 => 点击状态为 开启

enter image description here

转到 keystore 和策略设置,然后单击“添加策略” 访问策略页面设置 key 和 secret 的任何权限

在选择主页面中搜索应用服务名称并选择然后应用服务可以作为环境变量访问

enter image description here

之后,我们必须在应用服务中添加特定的 secret ,并按照以下格式复制其 secret 标识符

@microsoft.keyvault(secretUri={secret url from the keyvault})

enter image description here

添加 secret 后,它将如下所示

enter image description here

通过执行上述步骤,我们可以将 secret 作为环境变量进行访问

关于azure - 将 Azure Key Vault 中的 secret 作为环境变量配置到 Azure 应用服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74125280/

相关文章:

azure - 如何从 Azure DevOps 导出管道列表?

azure - 如何在 ADF 版本 2 中为 azure key Vault 创建链接服务?

azure - 将事件从 Azure 服务总线主题发送到事件中心

java - 无法将 Spring Boot 应用程序部署到 Azure

azure - 在 Azure 管道中运行 Import-AzApiManagementApi

azure - 如何从 azure 发布管道查询当前部署到应用程序服务的 docker 镜像?

json - 在 Azure Functions 中将 F# 记录类型返回为 JSON

azure - 将文件复制到任务无法找到 **/*.ipa 文件

c# - KeyVaultClient 在调试时随机抛出 FatalExecutionEngineError

azure - 使用 ARM 模板创建时如何为 Azure Key Vault 设置 "selected networks"