如何使用从链接的ARM模板返回的securestring
或secureObject
的值?
例如,一个名为CreateStorage
的子链接模板
outputs
部分中的SAS密钥。例如在模板输出中返回SAS:
"outputs": {
"createdContainerSas": {
"type": "string",
"value": "[concat('https://', variables('storageAccountName'), '.blob.core.windows.net/', variables('containerName'), '?', listServiceSas(variables('storageAccountName'), '2018-07-01', variables('importSasInputs')).serviceSasToken)]"
}
}
然后,主模板会将SAS密钥添加到KeyVault,以便其他应用程序可以使用它。主模板的值如下:
"value": "[reference('CreateStorage').outputs.createdContainerSas.value]"
问题是,当前SAS密钥以string
的形式返回,这意味着它以纯文本形式出现在Azure部署用户界面中。
但是,当我将返回对象的类型更改为securestring
或secureObject
时,则在调用createdContainerSas.value
时会遇到跟随错误:
{\r\n \"code\": \"InvalidTemplate\",\r\n \"message\": \"Unable to process template language expressions for resource '/subscriptions/<my-subscription-id>/resourceGroups/<my-resource-group>/providers/Microsoft.Resources/deployments/CreateKeyVault' at line '310' and column '9'. 'The language expression property 'value' doesn't exist, available properties are 'type'.'\"\r\n }
因此,从子链接的ARM模板返回.value
或securestring
时,secureObject
属性似乎不存在。
位于https://docs.microsoft.com/en-us/azure/azure-resource-manager/resource-manager-templates-outputs的Microsoft文档说
输出值支持与模板输入参数相同的类型。
并且securestring
和secureObject
都可以作为模板输入参数正常工作,所以我必须做错了事。
如何使用从链接的ARM模板返回的securestring
或secureObject
的值?
答案 0 :(得分:2)
secureString \ secureObject类型从输入\输出中省略。您无法“获得”它们。他们只是被通过,就是这样。这就是为什么将其称为secure
的原因。它们没有在任何地方记录。没有实际的解决方法。
在这种情况下,您只需在需要的地方拉键,就不必将它们拉到嵌套模板中并将其传递给父模板。