Azure密钥保管库。如何设置哪个Web应用使用哪个密钥库?

时间:2019-08-29 20:02:42

标签: azure azure-keyvault azure-webapps

我在相同的订阅服务上运行同一Web应用程序的多个版本。

我有2个逻辑环境。开发人员和UAT。 我有WebAppDev和WebAppUAT。

我有两个关键保险库KVDev和KVUAT。 如何配置正确的Web应用程序以使用正确的密钥库?

什么过程将Web应用分配给关键文件库?

编辑: 我以为密钥库在开发时会像秘密一样。

Tutorial

似乎建议将密钥保管库用作配置提供程序。但是,该Web应用程序无法访问关键文件库值。

3 个答案:

答案 0 :(得分:3)

从另一个角度来看,当前的问题和评论将解决对KeyVault的身份验证。

但是,这听起来像是一个更基本的问题,您需要根据环境更改配置。

即需要将WebAppDev配置为使用KVDev URL,而WebAppUAT需要使用KVUAT URL。

假设您正在使用应用服务计划;该文档提供了一种存储特定于环境的配置的机制,以及有关如何将其用于所选编程语言的指南,您将需要参考“特定于应用程序的配置”部分。

https://docs.microsoft.com/en-us/azure/app-service/configure-common

在门户中进行配置可以帮助您解决问题,但是随着时间的流逝,您可能希望将配置包含在发布管理管道中,因此您无需手动配置。 Azure DevOps Pipeline就是这样一种工具:

https://docs.microsoft.com/en-us/azure/devops/pipelines/get-started/?toc=%2Fazure%2Fdevops%2Fpipelines%2Ftoc.json&bc=%2Fazure%2Fdevops%2Fboards%2Fpipelines%2Fbreadcrumb%2Ftoc.json&view=azure-devops

要开始使用,有一项特定的部署任务可以帮助设置App Service计划的配置:https://docs.microsoft.com/en-us/azure/devops/pipelines/tasks/deploy/azure-rm-web-app-deployment?view=azure-devops

随着时间的流逝,我建议不要在发布管道和源代码控制之间拆分配置,而应该进行不需要修改部署时间的配置,而是将源代码控制在ARM模板中,但这是一个答案。这样我就不会把事情弄得太多细节。

答案 1 :(得分:3)

  1. 从Web应用程序的标识刀片中获取对象ID。

  2. 使用Web应用程序的对象ID查找天蓝色的密钥保管库并创建新的访问策略。

    或者在powershell cli中使用以下内容。

  

Set-AzKeyVaultAccessPolicy –VaultName -ObjectId“” -PermissionsToKeys备份,创建,删除,获取,导入,列表,还原-PermissionsToSecrets获取,列表,备份,还原,恢复

  1. 遵循本教程,并在示例代码中从Program.cs复制上下文。

Tutorial

答案 2 :(得分:2)

如果要通过使用SDK或REST API进行编程来访问Azure密钥保管库,则不会有问题。因为不同的密钥保管库具有不同的DNS名称。当您尝试在代码中检索密钥或密钥时,需要使用其标识URL,其中包含其密钥库DNS名称。它将最终找到目标密钥库。

如果要在具有托管身份的Web应用程序中使用密钥仓库,请参考以下教程:Use Azure Key Vault with an Azure web app in .NET

在该教程中,您将启用Web应用程序的身份。然后,您可以为该身份分配访问策略。这样,Web应用程序将能够使用托管身份访问密钥库。