Azure 正在ARM模板中检索机密的当前版本

Azure 正在ARM模板中检索机密的当前版本,azure,azure-functions,azure-keyvault,Azure,Azure Functions,Azure Keyvault,我从ARM获得了一个名为“StorageConnectionString”的秘密,它被插入到我的密钥库中: { "type": "Microsoft.KeyVault/vaults/secrets", "name": "[concat(variables('keyVaultName-v'),'/','StorageConnectionString')]", "apiVersion": "2018-02-14", "properties": { "contentType":

我从ARM获得了一个名为“StorageConnectionString”的秘密,它被插入到我的密钥库中:

{
  "type": "Microsoft.KeyVault/vaults/secrets",
  "name": "[concat(variables('keyVaultName-v'),'/','StorageConnectionString')]",
  "apiVersion": "2018-02-14",
  "properties": {
    "contentType": "text/plain",
    "value": "OmittedStorageConntionString"
  },
  "dependsOn": [
    "[resourceId('Microsoft.KeyVault/vaults', variables('keyVaultName-v'))]"
  ]
}
是否有任何方法可以从ARM中引用并获取插入的机密的当前版本(或版本id)的url?我想从一个环境变量中引用它,就像这里提到的:“从密钥库中获取应用程序设置”一节中提到的那样。我想在my Azure函数中设置环境设置
@Microsoft.KeyVault(SecretUri=SecretUri\u uri\u with\u version)


如果不可能,是否有其他方法设置connectionstring

这个问题是我最后的选择,在我发布这个问题之后,我在这里找到了答案:(在文档中)
“[concat('@Microsoft.KeyVault(SecretUri=',reference(variables('storageConnectionStringResourceId')).secretUriWithVersion')]”

编辑 通过遵循我前面提到的方法,您实际上可以引用ARM模板中的机密,并获得包含版本的机密的url

创建一个秘密:

{
  "type": "Microsoft.KeyVault/vaults/secrets",
  "name": "[concat(variables('keyVaultName-v'),'/', variables('queueStorageConnectionStringSecretName-v'))]",
  "apiVersion": "2018-02-14",
  "properties": {
    "value": "[concat('DefaultEndpointsProtocol=https;AccountName=', variables('queueStorageName-v'), ';AccountKey=', listKeys(variables('storageAccountResourceId'),'2015-05-01-preview').key1)]"
  }
然后你可以在你的功能应用程序中引用它

    {
      "name": "StorageQueueConnectionString",
      "value": "[concat('@Microsoft.KeyVault(SecretUri=', reference(variables('queueStorageConnectionStringSecretNameResourceId-v')).secretUriWithVersion, ')')]"
    }
然后,在函数中,可以在绑定中引用
StorageQueueConnectionString

[Queue("queueName", Connection ="StorageQueueConnectionString")]
            ICollector<string> outputQueueItem
[Queue(“queueName”,Connection=“StorageQueueConnectionString”)]
ICollector outputQueueItem

这样,您就不必在环境变量(或代码)中引用connectionstring,从而使您的应用程序更加安全。此示例要求应用程序和vault之间具有系统指定(或用户指定)的标识。我目前正在尝试使用vault,我制作了一些代码,可以在此处找到:。代码不漂亮!我正在尝试许多与密钥保管库和不同Azure实体之间绑定相关的内容。

您在这里写的内容与您链接的内容有什么关系?我目前正在尝试,不久将链接到github上的一个示例。@4c74356b41我添加了一个小的伪示例。