无法在VSTS版本中通过服务端点访问密钥仓库机密

时间:2018-06-21 12:29:15

标签: azure azure-devops azure-pipelines-release-pipeline azure-keyvault arm-template

我们正在尝试使用VSTS中的下载密钥库机密发布任务来下载机密。

将服务主体添加到密钥库的访问策略中,检查所有权限,包括获取,列出机密。

我使用此服务主体创建了一个服务终结点,并将其用于部署到Azure,但是在尝试检索密钥库机密时遇到以下错误

  

2018-05-21T12:18:53.9240364Z ## [错误]获取机密失败。错误:   拒绝访问。指定的Azure终结点需要具有获取,列出机密   所选密钥库的管理权限。设置这些   权限,请从以下位置下载ProvisionKeyVaultPermissions.ps1脚本   构建/发布日志并执行它,或者从Azure门户进行设置。

3 个答案:

答案 0 :(得分:6)

0)转到您的变量库

1)勾选Link secrets from an Azure key vault as variables

2)选择订阅

3)选择密钥库

4)单击Authorize

ACL将由MS完成,您将能够使用密钥库任务。

我确定在任务中选择键保险库时曾经有一个Authorize按钮,但是我可能记错了。只需下沉2小时即可解决这个问题。...

enter image description here

问题已跟踪here

答案 1 :(得分:1)

您需要为所选的正确主体设置权限。 并且主格式为:

account-<VSTS project name you are build/deploy>-ID

Deatil设置权限的步骤如下:

在Azure属性中->转到Azure密钥库->访问策略->添加新内容->选择模板并区分权限(必须设置Get和Listpermission)->选择主体->搜索主体以{ {1}}(例如,在下面的示例中,我的VSTS项目名称为account-VSTSProjectName)->选择->确定。

enter image description here

然后再次在VSTS版本中进行部署,它可以成功下载Azure密钥保管库。

答案 2 :(得分:1)

如果打开了防火墙,则Dev Ops服务器还需要能够通过防火墙访问密钥库(“防火墙和虚拟网络”页面上的“允许从...访问”)。

我相信可以通过AzDevOps的非代理部分来对变量的密钥库进行网络访问,但是我还没有弄清楚如何将这些服务器列入白名单。

打开“允许受信任的Microsoft服务通过此防火墙” 不起作用

作为最简单的解决方案,我现在必须允许“所有网络”访问此问题。

使用代理任务而不是变量组的另一个更安全选项是。

  1. 在Azure VM中拥有自己的代理池
  2. ..
    1. 将此连接到专用vnet,该vnet也连接到KeyVault或...
    2. 将密钥库中代理的公共端点列入白名单
  3. 在代理程序使用KayVault任务的过程中,从密钥库密钥中读取变量(即,将密钥作为管道的一部分读取)。

希望这会有所帮助。 马克。