【问题标题】:How to reset credentials of an Azure service principal using an automation account PowerShell runbook?如何使用自动化帐户 PowerShell Runbook 重置 Azure 服务主体的凭据?
【发布时间】: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


【解决方案1】:

如果您想使用服务主体添加/删除另一个服务主体的凭据,这与使用用户帐户执行此操作不同。

我也通过命令Add-AzureADServicePrincipalOwner 将SP1 的所有权分配给了SP2,并通过Get-AzureADServicePrincipalOwner 确认。

这种方式是正确的,但不只是Owner,之后你还需要在Azure Active Directory Graph(不是Microsoft Graph)API中给予Application.ReadWrite.OwnedBy应用权限。 p>

在门户中导航到您的自动化帐户对应的AD App的API permissions -> 添加如下权限,最后不要忘记点击Grant admin consent for xxx按钮。

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

New-AzADSpCredential -ObjectId xxxxxxxxxxxxx

OwnerApplication.ReadWrite.OwnedBy的组合是这种情况下的最低权限,还有其他方法,你也可以给Application Administrator目录角色,就像你看到的hereApplication.ReadWrite.All Azure Active Directory Graph 中的应用权限,两者都可以。

【讨论】:

    猜你喜欢
    • 2020-04-21
    • 2018-11-04
    • 2020-12-09
    • 2020-07-24
    • 1970-01-01
    • 1970-01-01
    • 2021-07-17
    • 2022-11-11
    • 2018-02-03
    相关资源
    最近更新 更多