如何解决如何使用自动化帐户 PowerShell Runbook 重置 Azure 服务主体的凭据?
我正在尝试通过以下 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 很容易做到。
任何关于如何做到这一点的意见将不胜感激。
解决方法
如果您想使用一个服务主体为另一个服务主体添加/删除凭据,这与使用用户帐户不同。
我也通过命令 Add-AzureADServicePrincipalOwner
将 SP1 的所有权分配给了 SP2,并通过 Get-AzureADServicePrincipalOwner
确认。
这种方式是正确的,但不仅是Owner
,您还需要在Application.ReadWrite.OwnedBy
(不是Azure Active Directory Graph
})API 之后。
在门户中导航到您的自动化帐户对应的 AD App 的 Microsoft Graph
-> 添加如下权限,最后不要忘记单击 API permissions
按钮。
然后在运行手册中测试它,它工作正常。
Grant admin consent for xxx
New-AzADSpCredential -ObjectId xxxxxxxxxxxxx
和Owner
的组合是这种情况下的最低权限,还有其他的方式,你也可以给Application.ReadWrite.OwnedBy
目录角色如你所见{{3} } 或 Application Administrator
应用权限在Application.ReadWrite.All
中,两者都可以使用。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。