如果模板中未引用现有密钥,则ARM模板会重新生成密钥



我发现这有点违背直觉,最近发现这一点很糟糕。

如果您在ARM模板中定义基础设施,并在模板中添加共享访问密钥,它将使用所需密钥创建所有基础设施。但稍后会更新该模板的某个部分,并再次针对您的基础架构运行该模板。现在,定义的共享访问密钥部分将重新生成密钥,因为它不会直接引用模板中的现有密钥。

本质上,这意味着我们的Create模板与Update模板不同,这感觉有点恶心。

目前唯一能做到这一点的方法是在保险库或类似的地方使用自行管理的密钥。不幸的是,对于我正在使用的资源来说,这只在某些地区可用:https://learn.microsoft.com/en-us/azure/iot-hub/iot-hub-customer-managed-keys

我更希望能够将密钥标记为immutable,这样它将被创建,但在随后的更新中永远不会重新生成。这意味着我们不必为同一基础设施维护两个模板。

我是错过了一些基本的东西,还是有更好的方法来处理我没有看到的问题?

编辑:
为了清晰起见,这里有一个模板示例:

{
"type": "Microsoft.Devices/IotHubs",
"apiVersion": "2018-04-01",
"name": "[variables('iotHubName')]",
"location": "[parameters('location')]",
"dependsOn": [
"[variables('telemetryEventHubName')]"
],
"properties": {
"authorizationPolicies": [
{
"keyName": "[variables('mobileDeviceAccessPolicyName')]",
"rights": "deviceconnect, serviceconnect, registryread, registrywrite"
}
]
},
"sku": {
"name": "[parameters('iotHubSkuName')]",
"capacity": "[parameters('iotHubCapacityUnits')]"
}
}

这种行为是经过设计的。如果ARM模板没有明确指定"PrimaryKey":"…."或"SecondaryKey":"..",则我们将重新生成密钥。我们理解您不需要重新生成密钥并将其锁定。我们已经在我们的工作积压中添加了这个新的问题,并将研究设计这个问题。

最新更新