Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Azure devops Set-AzKeyVaultAccessPolicy的服务主体需要Azure AD权限_Azure Devops_Azure Active Directory_Azure Keyvault - Fatal编程技术网

Azure devops Set-AzKeyVaultAccessPolicy的服务主体需要Azure AD权限

Azure devops Set-AzKeyVaultAccessPolicy的服务主体需要Azure AD权限,azure-devops,azure-active-directory,azure-keyvault,Azure Devops,Azure Active Directory,Azure Keyvault,Azure DevOps(ADO)服务主体中使用的“应用程序注册”需要哪些Azure AD权限来执行调用Set-AzKeyVaultAccessPolicy的IaC发布管道 我正在尝试为Microsoft.ManagedIdentity/UserAssignedIdentity添加对密钥库的访问权限 我看到的错误是: “警告:请确保您在AD Graph中有足够的权限获取并列出要进行验证的图形对象。否则,请跳过witch-BypassObjectIdValidation” 我尝试了多种AAD“读取

Azure DevOps(ADO)服务主体中使用的“应用程序注册”需要哪些Azure AD权限来执行调用
Set-AzKeyVaultAccessPolicy
的IaC发布管道

我正在尝试为Microsoft.ManagedIdentity/UserAssignedIdentity添加对密钥库的访问权限

我看到的错误是: “警告:请确保您在AD Graph中有足够的权限获取并列出要进行验证的图形对象。否则,请跳过witch
-BypassObjectIdValidation

我尝试了多种AAD“读取”权限的组合。我已还原到的当前权限为:

当我使用我的个人登录进行本地测试时,脚本工作正常,添加了访问策略,“托管身份”能够访问密钥库机密。我已经能够使用
-BypassObjectiveValidation
作为ADO中的一种变通方法,但这似乎是一种黑客行为。所有Azure资源都在同一个订阅中,所有对象都在同一个Azure租户中,因此我不认为我需要使用旁路开关

其他信息:

深入微软的消息来源,我进一步确信问题出在服务负责人的AAD权限范围内。例如,以下代码正在调用
Graph

if (!this.BypassObjectIdValidation.IsPresent && ActiveDirectoryClient != null)
{
    objId = GetObjectId(this.ObjectId, this.UserPrincipalName, this.EmailAddress, this.ServicePrincipalName);
}
else if (ActiveDirectoryClient == null && objId == null)
{
    throw new Exception(Resources.ActiveDirectoryClientNull);
}
资料来源:

继续深入:

adObjects = GraphClient.Objects.GetObjectsByObjectIds(new GetObjectsParameters { ObjectIds = objectIdBatch, IncludeDirectoryObjectReferences = true });

来源:

这是RBAC角色对密钥库的访问控制权限

我们的设置为订阅提供了Azure DevOps服务连接主体
Contributor
,这就足够了。文档验证,事实上,您应该小心谁在您的Vault上有
贡献者
,因为他们可以为自己提供访问策略(在Azure中通常不能)


如果您想要更少的权限,我会尝试
用户访问管理员
密钥库管理员。

显然问题在于“已知产品限制”。

在帮助文档中大约有三分之一的地方:

资料来源:


因此,似乎没有权限组合可以设置为使commandlet在没有开关的情况下工作。

服务主体是订阅上的
参与者。我还尝试添加了三种不同的角色分配
所有者
密钥库管理员
,以及
用户访问管理员
,但都没有成功。遗憾的是,我同意这样做。遗憾的是,他们真的应该相信实现者知道他们在处理什么(当然,只要文档清楚且是最新的)@Stringfellow感谢您在这里分享您的解决方案,您是否愿意接受您的解决方案作为答案?因此,它将有助于其他成员谁得到同样的问题,找到解决办法容易。祝你有愉快的一天:)对这个问题进行了深入研究。