我们的 KeyVault 在订阅 1 中,我们有多个云服务用于我们需要部署在不同订阅中的多个区域。在 Azdo 工作时,我发现我无法将 CSES 部署到与 keyVault 不同的订阅,因为用于部署的 ARM 模板正在尝试从 keyvault 访问机密。
然后,当我阅读此文档https://learn.microsoft.com/en-us/azure/cloud-services-extended-support/deploy-prerequisite时,它指出“必须创建密钥保管库在与云服务相同的区域和订阅中”.
有人知道解决这个问题的方法吗?我们必须能够在不同的订阅中部署多个云服务(针对不同的区域),并且我们只有一个密钥库来存储云服务使用的所有值。
Microsoft Documentation
中所述,在与云服务相同的订阅中创建 Key vault 是不可能的先决条件。
Github Issue
中,可以在另一个订阅中使用来自一个订阅的秘密,但是使用证书是 ARM 模板中的一个限制。
Azure推荐使用不同环境的不同Key vault来使用证书。
Secrets 可以作为 ARM 模板中的参数被引用以供 Azure 服务使用,但不能从其他订阅中引用证书,否则您将收到以下错误:
{
"status": "Failed",
"error": {
"code": "InvalidParameter",
"target": "sourceVault.id",
"message": "The SubscriptionId:\"<id>\" of the request must match the SubscriptionId \"<sharedId>\" contained in the Key Vault Id."
}
}
你是对的,云服务(扩展支持)没有原生支持跨区域或跨订阅密钥库秘密检索。
不过,您可以使用 官方 Key Vault 扩展 来实现大部分请求的功能!该扩展允许指定您要从中刷新本地证书的秘密 uris。
(请记住,跨多个服务和区域共享单个密钥保管库会为您的服务套件引入单点架构故障:如果区域 A 遇到导致您的密钥保管库不可用的问题,您在许多不同区域的服务和订阅可能会受到负面影响,即使他们的地区非常健康。)