通过 REST API 将证书从 Azure Key Vault 添加到 Azure 应用服务

Ron*_*erg 1 rest azure azure-app-service-plans azure-keyvault azure-web-app-service

我正在尝试通过 REST API(在 PowerShell 中)将私有自签名证书添加到 Azure 应用服务(如底部的屏幕截图所示)。我调用API的方式如下:

$certBody = @{
  name = "InfoServiceTAKeyVaultDev"
  location = "West Europe"
  properties = @{
    keyVaultId = "/subscriptions/<subscriptionId>/resourceGroups/BzInfoServiceTADEV/providers/Microsoft.KeyVault/vaults/BzKVInfoServiceTADev"
    keyVaultSecretName = "InfoServiceTAKeyVaultCert"
  }
}
Invoke-RestMethod `
  -Method Put `
  -Uri ("https://management.azure.com/subscriptions/<subscriptionId>" +
        "/resourceGroups/BzInformatieServiceResourceGroupDEV" +
        "/providers/Microsoft.Web/certificates" +
        "/InfoServiceTAKeyVaultDev" +
        "?api-version=2016-03-01") `
  -Headers @{ Authorization = ("Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJSU...")
              "Content-Type" = "application/json" } `
  -Body ($certBody | ConvertTo-Json -Compress -Depth 3)
Run Code Online (Sandbox Code Playgroud)

结果是一条错误消息:The service does not have access to '/subscriptions/<subscriptionId>/resourcegroups/bzinfoservicetadev/providers/microsoft.keyvault/vaults/bzkvinfoservicetadev' Key Vault. Please make sure that you have granted necessary permissions to the service to perform the request operation.

在这种情况下,谁是无权访问此 Key Vault 的“服务”?我已经发现一些 帖子声称我应该将服务主体添加abfa0a7c-a6b6-4736-8310-5855508787cd到我的 Key Vault 访问策略中,但这没有任何效果。

所需最终结果的屏幕截图:

期望的最终结果

更新:我已经启用了高级访问策略“启用对 Azure 资源管理器的访问以进行模板部署”。这也不起作用。

Ron*_*erg 5

@tim-scriv 的评论被证明非常有帮助。我必须将以下主体添加到 Key Vault 访问策略中:(Microsoft Azure App Service对象 ID 3ed082e0-d6c4-4071-ac9e-61363535a0a3:)。获得秘密的许可就足够了。