Azure自动化帐户管理的身份和新的MgServicePrincipalAppRoleAssignment

lh80um4z  于 2023-10-22  发布在  其他
关注(0)|答案(1)|浏览(89)

我目前正在Azure中准备自动化帐户Runbook。Runbook类型是Powershell 5.1,我也使用Microsoft.Graph模块,如下所示:

我已在我的自动化帐户上启用了系统身份管理标识。我将使用自动化帐户运行手册筛选出在我的Entra ID租户中注册的一些SPN,然后为这些SPN/注册的应用程序分配指定的API权限。要将API权限分配给已注册的应用程序,我使用以下命令:

New-MgServicePrincipalAppRoleAssignment `
            -ServicePrincipalId $spn.Id `
            -BodyParameter $AppRoleAssignment `
            -Verbose -ErrorAction SilentlyContinue

一旦我将托管身份添加到内置Entra ID角色Global Administrator,所有工作正常,脚本将所有必需的API权限添加到注册的应用程序/SPN,但这不是将托管身份对象添加到Global Administrator角色的最佳实践。我测试了其他内置角色,例如:应用程序管理员、云应用程序管理员、目录编写者已将托管身份对象添加为上述角色的成员,但效果相同,权限不足,无法完成操作。我不确定我应该考虑什么内置Entra ID角色。

mcvgt66p

mcvgt66p1#

我使用下面的代码为我的托管身份对象添加所需的权限。

# Provide required System Assigned Managed Identity Entra ID permissions
$managedIdentityId = (Get-MgServicePrincipal -Filter "displayName eq 'dev-automation-account'").id

$graphApp = Get-MgServicePrincipal -Filter "AppId eq '00000003-0000-0000-c000-000000000000'"

$graphScopes = @(
  'Application.ReadWrite.All'
)

ForEach($scope in $graphScopes){
  $appRole = $graphApp.AppRoles | Where-Object {$_.Value -eq $scope}
  New-MgServicePrincipalAppRoleAssignment -PrincipalId $managedIdentityId -ServicePrincipalId $managedIdentityId -ResourceId $graphApp.Id -AppRoleId $appRole.Id

}

相关问题