【发布时间】:2019-10-13 09:03:09
【问题描述】:
因此,我正在尝试使用 Azure Devops Pipelines 和 ARM 模板对我的所有 Azure 基础架构进行编码。这很困难,但我可以看到部署在 5 分钟内为我提供 20 个资源的好处,这些资源都很好!
但是,我遇到了一个问题。我想部署一个新的 Keyvault。打勾,轻松!我想存储一个 x509 证书,它是我的 Web 应用程序使用的通配符证书。打勾轻松搞定。现在我想创建一个“Microsoft.Web/Certificates”证书资源,然后我可以使用它来为我的 Web 应用程序创建 SSL 自定义绑定。这失败了:
"The service does not have access to '...microsoft.keyvault/vaults/gs-prd1-kv-apps' Key Vault.
这在此处的示例模板中合理地有详细记录:https://github.com/Azure/azure-quickstart-templates/tree/master/201-web-app-certificate-from-key-vault。事实证明,**Microsoft.Azure.Websites”资源提供者无权访问 Keyvault。要解决此问题,指导是运行 powershell 或 az cli 命令将 RP 添加到我的新 Keyvault
Set-AzureRmKeyVaultAccessPolicy -VaultName KEY_VAULT_NAME -ServicePrincipalName abfa0a7c-a6b6-4736-8310-5855508787cd -PermissionsToSecrets get
问题是,我需要在 Devops 管道或 ARM 模板中执行此操作,但我完全不知道该怎么做。
我尝试将 az 命令添加到新的构建任务中,但是运行管道的服务原则 ALSO 没有正确的权限来添加它。
有人可以帮忙吗?必须有一种方法可以使用 x509 证书部署 Keyvault 并将此资源分配给 Web 应用程序?
【问题讨论】:
-
你可以看看这个:Using Az powershell modules with Azure Devops, medium.com/@harioverhere/…
-
谢谢南希。是的,它确实突出了创建和使用服务主体来启用要创建的资源。但是,我想为我在 ARM 模板本身中创建的 Keyvault 添加一个服务主体的访问策略。我可以看到如何执行此操作,但我需要服务主体的 ObjectId。
标签: azure azure-devops azure-keyvault