如何使用自动化帐户 PowerShell 运行手册重置 Azure 服务主体的凭据?
How to reset credentials of an Azure service principal using an automation account PowerShell runbook?
我正在尝试通过以下 PowerShell 命令重置服务主体(我们称之为 SP1)的密码凭据:
Remove-AzADSpCredential -ObjectId <SP1_objectId> -Force
$Password = New-AzADSpCredential -ObjectId <SP1_objectId>
当我使用我自己的用户帐户通过 PowerShell 运行 它时,这很有效,该帐户具有分配给 SP1 的所有者角色。
我在自动化帐户的 运行 书中也有此代码,该帐户具有“运行 作为帐户”服务主体(我们称之为 SP2)。
我也通过命令Add-AzureADServicePrincipalOwner
将SP1的所有权分配给了SP2,并通过Get-AzureADServicePrincipalOwner
确认了。
我希望 运行 这本书能够在将其服务主体设为 SP1 的所有者后 运行 在 SP1 上执行 Remove-AzADSpCredential
命令。但是我收到以下错误:
Remove-AzADSpCredential : Insufficient privileges to complete the operation. At line: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>
但这是不可能的,因为我得到了错误:
Code: Request_BadRequest
Message: The reference target 'Application_xxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxx' of type 'Application' is invalid for the 'owners' reference.
所以我认为所有权应该只分配给 SP2,而不是应用程序。
我查看了 ,但接受的答案是
If your user accounts are the Owner of the service principal(Enterprise application), the command New-AzADSpCredential will work.
这对我来说是正确的,但是,当 运行阅读 运行这本书时,它不起作用。
我也查看了 ,看来我需要做 OP 描述的容易做到的 #1。
任何有关如何执行此操作的意见将不胜感激。
如果您想使用一个服务主体 add/remove 另一个服务主体的凭据,这与使用用户帐户执行此操作不同。
I assigned the ownership of SP1 to SP2 as well through the command Add-AzureADServicePrincipalOwner
and confirmed it through Get-AzureADServicePrincipalOwner
.
这种方式是正确的,但不仅是Owner
,还需要在Azure Active Directory Graph
中给予Application.ReadWrite.OwnedBy
申请权限(之后不是Microsoft Graph
)API。
在门户中导航到您的自动化帐户对应的 AD 应用程序的 API permissions
-> 添加如下权限,不要忘记最后单击 Grant admin consent for xxx
按钮。
然后在runbook中测试一下,没问题。
New-AzADSpCredential -ObjectId xxxxxxxxxxxxx
Owner
和Application.ReadWrite.OwnedBy
的组合是本例中的最小权限,也有其他的方式,你也可以给Application Administrator
目录角色,如你所见 或 Application.ReadWrite.All
Azure Active Directory Graph
中的应用程序权限 ,两者都可以。
我正在尝试通过以下 PowerShell 命令重置服务主体(我们称之为 SP1)的密码凭据:
Remove-AzADSpCredential -ObjectId <SP1_objectId> -Force
$Password = New-AzADSpCredential -ObjectId <SP1_objectId>
当我使用我自己的用户帐户通过 PowerShell 运行 它时,这很有效,该帐户具有分配给 SP1 的所有者角色。
我在自动化帐户的 运行 书中也有此代码,该帐户具有“运行 作为帐户”服务主体(我们称之为 SP2)。
我也通过命令Add-AzureADServicePrincipalOwner
将SP1的所有权分配给了SP2,并通过Get-AzureADServicePrincipalOwner
确认了。
我希望 运行 这本书能够在将其服务主体设为 SP1 的所有者后 运行 在 SP1 上执行 Remove-AzADSpCredential
命令。但是我收到以下错误:
Remove-AzADSpCredential : Insufficient privileges to complete the operation. At line: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>
但这是不可能的,因为我得到了错误:
Code: Request_BadRequest Message: The reference target 'Application_xxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxx' of type 'Application' is invalid for the 'owners' reference.
所以我认为所有权应该只分配给 SP2,而不是应用程序。
我查看了
If your user accounts are the Owner of the service principal(Enterprise application), the command New-AzADSpCredential will work.
这对我来说是正确的,但是,当 运行阅读 运行这本书时,它不起作用。
我也查看了
任何有关如何执行此操作的意见将不胜感激。
如果您想使用一个服务主体 add/remove 另一个服务主体的凭据,这与使用用户帐户执行此操作不同。
I assigned the ownership of SP1 to SP2 as well through the command
Add-AzureADServicePrincipalOwner
and confirmed it throughGet-AzureADServicePrincipalOwner
.
这种方式是正确的,但不仅是Owner
,还需要在Azure Active Directory Graph
中给予Application.ReadWrite.OwnedBy
申请权限(之后不是Microsoft Graph
)API。
在门户中导航到您的自动化帐户对应的 AD 应用程序的 API permissions
-> 添加如下权限,不要忘记最后单击 Grant admin consent for xxx
按钮。
然后在runbook中测试一下,没问题。
New-AzADSpCredential -ObjectId xxxxxxxxxxxxx
Owner
和Application.ReadWrite.OwnedBy
的组合是本例中的最小权限,也有其他的方式,你也可以给Application Administrator
目录角色,如你所见Application.ReadWrite.All
Azure Active Directory Graph
中的应用程序权限 ,两者都可以。