访问被拒绝将变量组链接到VSTS中的密钥保管库

时间:2018-04-20 00:09:06

标签: azure azure-devops permission-denied access-denied azure-keyvault

当我尝试将变量组链接到VSTS中的密钥保管库时,每次选择我的端点时,它都会告诉我:

“指定的Azure端点需要对所选密钥保管库具有”获取,列出“秘密管理权限。单击”授权“以启用VSTS以设置这些权限或管理Azure门户中的秘密权限。”

没有意义。该特定端点具有秘密,密钥和证书的Get和List。端点使用正确的服务主体客户端ID - 我知道,因为我通过使用该ID进行搜索,在Azure中提取了相应的应用程序注册。应用程序注册专门列在密钥保管库的访问策略中,具有正确的权限。

尝试点击VSTS中的“授权”,然后给我

“找不到段'DirectoryDataService.getServicePrincipalsByAppIds'的资源。有关疑难解答,请参阅https://go.microsoft.com/fwlink/?linkid=835898

并且端点被破坏,直到我重新验证它。

我在这里结束了一切 - 所有内容都完全按照https://docs.microsoft.com/en-us/vsts/build-release/concepts/library/variable-groups?view=vsts所说的那样设置。

编辑当我通过对象ID将其列在ARM模板中时,Azure尝试将应用注册表添加为人而不是应用(应用ID 绝对是在那里不起作用)。所以现在我只需要弄清楚如何将它作为一个应用程序添加到ARM模板中......

编辑编辑: Soooo ... Azure门户为应用注册显示的对象ID?这不是ARM模板想要的对象ID。它想要......我不确定你叫什么。在Powershell中,您将它与-Object ID一起使用,但是当您列出属性时,它位于“Id”下。随你。为了得到它,你运行

Get-AzureRmADServicePrincipal -SearchString "[your-app-reg-name]"

它显示在 Id 下。这就是您希望在ARM模板中用作对象ID的内容。

1 个答案:

答案 0 :(得分:1)

根据错误Resource not found for the segment 'DirectoryDataService.getServicePrincipalsByAppIds,问题似乎与Azure方面有关。

要访问azure-keyvault,您需要做四件事:

 - clientId = "<client id of your application registed on Azure AD>";
 - domain = "<your talnet id>";
 - secret = "<client key of your application registed on Azure AD>";
 - subscription = "<your subscription id>";

然后这些将结合ApplicationTokenCredentials,最后授权给KeyVaultClient。建议你看一下这个问题:Azure keyvault client 1.0.0 initiate client

enter image description here

此外还要仔细检查/确认特定端点是否有秘密,密钥和证书的Get和List。