问题描述
我正在尝试通过以下 PowerShell 命令重置服务主体(我们称之为 SP1)的密码凭据:
Remove-AzADSpCredential -ObjectId <SP1_objectId> -Force
$Password = New-AzADSpCredential -ObjectId <SP1_objectId>
当我使用自己的用户帐户通过 PowerShell 运行它时,这很有效,该用户帐户具有分配给 SP1 的所有者角色。
我还在自动化帐户的 Runbook 中使用了此代码,该帐户具有“以帐户身份运行”服务主体(我们称之为 SP2)。
我也通过命令 Add-AzureADServicePrincipalOwner
将 SP1 的所有权分配给了 SP2,并通过 Get-AzureADServicePrincipalOwner
确认。
我希望 Runbook 在使其服务主体成为 SP1 的所有者后能够在 SP1 上运行 Remove-AzADSpCredential
命令。但我收到以下错误:
Remove-AzADSpCredential:权限不足,无法完成操作。在第 43 行 char:9 + Remove-AzADSpCredential -ObjectId $key.Name -Force + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : InvalidOperation: (:) [Remove-AzADSpCredential],Exception +fullyQualifiedErrorId : Microsoft.Azure.Commands.ActiveDirectory.RemoveAzureADSpCredentialCommand>
New-AzADSpCredential
命令也有同样的错误。
我想也许应该将 SP1 的所有权分配给作为帐户运行的应用程序,而不是其服务主体。
所以我还运行了以下内容:
Add-AzureADServicePrincipalOwner -ObjectId <SP1_ObjectId> -RefObjectId <runasaccount_app_ObjectId>
但这是不可能的,因为我收到了错误:
代码:Request_BadRequest 消息:“Application”类型的引用目标“Application_xxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxx”对于“owners”引用无效。
所以我认为所有权应该只分配给 SP2,而不是分配给应用程序。
我看了here,但接受的答案说
如果您的用户帐户是服务主体(企业应用程序)的所有者,则 New-AzADSpCredential 命令将起作用。
这对我来说是正确的,但在运行 Runbook 时它不起作用。
我还查看了 here,看来我需要做 OP 描述的 #1 很容易做到。
任何关于如何做到这一点的意见将不胜感激。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)