Azure devops Set-AzKeyVaultAccessPolicy的服务主体需要Azure AD权限
Azure DevOps(ADO)服务主体中使用的“应用程序注册”需要哪些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“读取
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感谢您在这里分享您的解决方案,您是否愿意接受您的解决方案作为答案?因此,它将有助于其他成员谁得到同样的问题,找到解决办法容易。祝你有愉快的一天:)对这个问题进行了深入研究。