如何从Azure Key Vault中读取和更新Azure Logic App的parameters.json文件中的机密信息

问题描述

我有一个Azure Logic应用程序,该应用程序使用以下命令处理来自基于Service Bus会话的队列中的消息:当一个或多个消息到达队列(窥视锁)连接器,然后插入sql数据库中。

注意:在Azure Logic应用中,这是一个或多个消息到达队列(监视锁定)的第一个触发器时。

我想保护Azure Service Bus和Azure sql数据库的连接字符串。为此,我使用了Azure Key Vault来存储Azure Service Bus和Azure sql数据库的连接字符串信息。

我已遵循此documentation来读取Azure Key Vault的机密。

但是我想使用 parameters.json 文件中的机密信息。因为当前我已经在 parameters.json 文件中将Azure Service Bus和Azure sql数据库的连接字符串硬编码。

因此,有人可以建议我从Azure Key Vault中获取并更新Azure Logic App的 parameters.json 文件中的机密信息。

解决方法

Azure资源管理器模板允许将参数与KeyVault集成以从中获取秘密。

https://docs.microsoft.com/en-us/azure/azure-resource-manager/templates/key-vault-parameter?tabs=azure-cli

应该看起来像这样

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentParameters.json#","contentVersion": "1.0.0.0","parameters": {
      "adminLogin": {
        "value": "exampleadmin"
      },"adminPassword": {
        "reference": {
          "keyVault": {
          "id": "/subscriptions/<subscription-id>/resourceGroups/<rg-name>/providers/Microsoft.KeyVault/vaults/<vault-name>"
          },"secretName": "ExamplePassword"
        }
      },"sqlServerName": {
        "value": "<your-server-name>"
      }
  }
}

记住要添加Logic Apps秘密混淆

https://docs.microsoft.com/en-us/azure/logic-apps/logic-apps-securing-a-logic-app#secure-data-in-run-history-by-using-obfuscation