【发布时间】:2021-05-25 04:36:04
【问题描述】:
我正在尝试通过以下 PowerShell 命令重置服务主体(我们称之为 SP1)的密码凭据:
Remove-AzADSpCredential -ObjectId <SP1_objectId> -Force
$Password = New-AzADSpCredential -ObjectId <SP1_objectId>
当我使用自己的用户帐户通过 PowerShell 运行它时效果很好,该帐户的所有者角色分配给 SP1。
我还在一个带有“以帐户方式运行”服务主体(我们称之为 SP2)的自动化帐户中的运行手册中有此代码。
我也通过命令Add-AzureADServicePrincipalOwner 将SP1 的所有权分配给SP2,并通过Get-AzureADServicePrincipalOwner 确认。
我希望 Runbook 在使其服务主体成为 SP1 的所有者后能够在 SP1 上运行 Remove-AzADSpCredential 命令。但我收到以下错误:
Remove-AzADSpCredential :权限不足,无法完成操作。在 line:43 char:9 + Remove-AzADSpCredential -ObjectId $key.Name -Force + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : InvalidOperation: (:) [Remove-AzADSpCredential], 异常 + 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”对于“所有者”引用无效。
所以我假设所有权应该只分配给 SP2,而不是应用程序。
我查看了here,但接受的答案是
如果您的用户帐户是服务主体(企业应用程序)的所有者,则 New-AzADSpCredential 命令将起作用。
在我的情况下确实如此,但是在运行 Runbook 时它不起作用。
我还查看了here,看来我需要做 OP 描述为容易做到的 #1。
任何关于如何做到这一点的意见将不胜感激。
【问题讨论】:
-
这个问题有更新吗?
-
嗨乔伊,非常感谢您的回复。不幸的是,我自己没有设置 AAD 应用程序权限的访问权限。等待负责的团队在我的组织中这样做。我会在获得许可并验证应用程序正常运行后立即接受您的回答。感谢您的耐心等待。
标签: azure powershell credentials azure-automation service-principal