Azure service fabric 在另一个区域中使用keyvault的比例集

Azure service fabric 在另一个区域中使用keyvault的比例集,azure-service-fabric,azure-keyvault,azure-vm-scale-set,Azure Service Fabric,Azure Keyvault,Azure Vm Scale Set,我正在使用一个ARM模板,该模板为服务结构集群创建一个VM规模集,并将一些秘密与来自keyvault的VM相关联。今天早上我发现VMs和keyvault似乎必须存在于同一个区域,否则我会得到如下错误: New-AzureRmResourceGroupDeployment : 9:24:55 AM - Resource Microsoft.Compute/virtualMachineScaleSets 'StdNode' failed with message '{ "status": "Fa

我正在使用一个ARM模板,该模板为服务结构集群创建一个VM规模集,并将一些秘密与来自keyvault的VM相关联。今天早上我发现VMs和keyvault似乎必须存在于同一个区域,否则我会得到如下错误:

New-AzureRmResourceGroupDeployment : 9:24:55 AM - Resource Microsoft.Compute/virtualMachineScaleSets 'StdNode' failed with message '{   "status": "Failed",   "error": {
    "code": "ResourceDeploymentFailure",
    "message": "The resource operation completed with terminal provisioning state 'Failed'.",
    "details": [
      {
        "code": "KeyVaultAndVMInDifferentRegions",
        "message": "The Key Vault https://obscured.vault.azure.net/secrets/secretname/1112222aa31c4dcca4363bb0013e9999 is located in location West US, which is different from the  location of the VM, northcentralus. "
      }
    ]   } }'
这感觉像是人为的限制,对我来说是个大问题。我希望有一个集中的密钥库,在这里我可以部署我所有的秘密,并从我所有的部署中利用它们。不得不在世界各地复制我的秘密似乎很可笑,而且很容易出错。在跨地区获取机密方面,这里不应该存在重大的性能问题。那么这背后的原因是什么,它会改变吗


Azure Scale Sets团队中的任何人都想为此提供一些颜色?

我们强制执行区域边界的原因是为了防止用户创建具有跨区域依赖关系的体系结构

对于这样设计的应用程序,japaneast数据中心的中断将导致JapanWest中的虚拟机无法成功扩展

区域隔离是基于云的应用程序的关键设计原则,我们希望尽可能避免用户做出错误的选择

我们不允许交叉订阅引用的原因是,这是防止恶意用户将CRP用作访问其他用户机密的权限提升机制的最后一个重要步骤。
在ARM中还有其他机制也可以防止这种情况发生,但它们是基于配置的。

要解决此问题,您可能只需要应用一个简单的修复程序

Get-AzVM -ResourceGroupName "rg1" -Name "vm1" | Remove-AzVMSecret | Update-AzVM

这将删除以前的机密并重新发布一个新的机密,以便您的vm恢复到设置状态。

您可以使用您访问的中心密钥库的体系结构作为模板参数,并将这些机密存储在区域密钥库中。然后链接到比例集的区域关键点vault。如果机密是证书,则可以使用ARM函数将证书(作为机密)正确格式化,以便作为VM/VMS上OSImage属性的一部分导入


更深入的观察可以在这里找到:

虽然我确实理解你在这里的意图,但我觉得这对我来说过于严格了。以通常正确的方向指导体系结构是令人钦佩的,阻止开发人员以您可能无法预见的方式设计解决方案不是我希望看到Azure的方向。在我的情况下,我同意通过一个keyvault实现单点故障是一个糟糕的设计,但由于这一限制,我甚至不能决定让两个或三个Vault在我的部署中使用。我不得不在我们所有的区域部署中复制这些敏感数据。我不喜欢这个。我同意@BrettRobi的观点,消费者应该决定是否拥有单个或特定于区域的密钥库。这种限制最终迫使消费者创建不必要的逻辑,从而增加复杂性和潜在的安全漏洞。为什么这不适用于Azure资源,如存储帐户?请在此处与Brett达成一致。希望看到取消限制。在某些情况下,跟踪/管理分散在多个密钥保管库中的机密的复杂性会变得太高,开发人员希望不要求每个区域都有密钥保管库。但根据此链接:“密钥保管库的内容在该区域内复制,并复制到至少150英里以外但位于同一地理区域内的辅助区域…在罕见的情况下,整个Azure区域不可用,您在该区域对Azure密钥保管库的请求会自动路由(故障转移)到辅助区域…再次,您不需要采取任何行动,因为这是自动发生的”。因此,这似乎是一个毫无意义的限制。请在此处投票-谢谢!这是一种享受,唯一需要记住的是使用
Set-AzContext-SubscriptionId“xx xx xx xx”