我们正在尝试使用VSTS中的下载密钥库机密发布任务来下载机密。
将服务主体添加到密钥库的访问策略中,检查所有权限,包括获取,列出机密。
我使用此服务主体创建了一个服务终结点,并将其用于部署到Azure,但是在尝试检索密钥库机密时遇到以下错误:
2018-05-21T12:18:53.9240364Z ## [错误]获取机密失败。错误: 拒绝访问。指定的Azure终结点需要具有获取,列出机密 所选密钥库的管理权限。设置这些 权限,请从以下位置下载ProvisionKeyVaultPermissions.ps1脚本 构建/发布日志并执行它,或者从Azure门户进行设置。
答案 0 :(得分:6)
0)转到您的变量库
1)勾选Link secrets from an Azure key vault as variables
2)选择订阅
3)选择密钥库
4)单击Authorize
ACL将由MS完成,您将能够使用密钥库任务。
我确定在任务中选择键保险库时曾经有一个Authorize
按钮,但是我可能记错了。只需下沉2小时即可解决这个问题。...
问题已跟踪here
答案 1 :(得分:1)
您需要为所选的正确主体设置权限。 并且主格式为:
account-<VSTS project name you are build/deploy>-ID
Deatil设置权限的步骤如下:
在Azure属性中->转到Azure密钥库->访问策略->添加新内容->选择模板并区分权限(必须设置Get和Listpermission)->选择主体->搜索主体以{ {1}}(例如,在下面的示例中,我的VSTS项目名称为account-VSTSProjectName
)->选择->确定。
然后再次在VSTS版本中进行部署,它可以成功下载Azure密钥保管库。
答案 2 :(得分:1)
如果打开了防火墙,则Dev Ops服务器还需要能够通过防火墙访问密钥库(“防火墙和虚拟网络”页面上的“允许从...访问”)。
我相信可以通过AzDevOps的非代理部分来对变量的密钥库进行网络访问,但是我还没有弄清楚如何将这些服务器列入白名单。
打开“允许受信任的Microsoft服务通过此防火墙” 不起作用。
作为最简单的解决方案,我现在必须允许“所有网络”访问此问题。
使用代理任务而不是变量组的另一个更安全选项是。
希望这会有所帮助。 马克。