微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何使用自动化帐户 PowerShell Runbook 重置 Azure 服务主体的凭据?

如何解决如何使用自动化帐户 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 按钮。

enter image description here

enter image description here

enter image description here

然后在运行手册中测试它,它工作正常。

Grant admin consent for xxx

enter image description here

New-AzADSpCredential -ObjectId xxxxxxxxxxxxx Owner的组合是这种情况下的最低权限,还有其他的方式,你也可以给Application.ReadWrite.OwnedBy目录角色如你所见{{3} } 或 Application Administrator 应用权限Application.ReadWrite.All中,两者都可以使用。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。