当前位置:网站首页 > 更多 > 玩电脑 > 正文

[玩转系统] 使用 Graph PowerShell 向托管身份分配权限

作者:精品下载站 日期:2024-12-14 06:52:52 浏览:15 分类:玩电脑

使用 Graph PowerShell 向托管身份分配权限


在 Microsoft Entra 中向托管身份分配权限可能有点棘手。不幸的是,没有使用 Entra 管理门户分配权限的选项,相反,使用 Microsoft Graph PowerShell 是首选方法。

要求

要运行本教程中的脚本,请确保满足以下要求:

  • 安装最新版本的Microsoft Graph PowerShell SDK
  • 具有全局管理员角色以同意权限。
  • 确保您可以连接到内置 Microsoft Graph 命令行工具企业应用

分配权限

要使用 Microsoft Graph PowerShell 向托管标识分配权限,请首先使用以下权限连接到 Microsoft Graph:

  • 应用程序.读取.全部
  • AppRoleAssignment.ReadWrite.All
Connect-MgGraph -Scopes Application.Read.All, AppRoleAssignment.ReadWrite.All

您需要知道目标托管标识的 ID,可以从 Microsoft Entra 管理门户获取此信息,也可以使用 PowerShell 找到此信息。将以下示例与 PowerShell 结合使用,修改 $MIName 变量的值以匹配您的托管身份的名称:

$MIName = "Managed Identity Name"

$ManagedIdentity = (Get-MgServicePrincipal -Filter "DisplayName eq '$MIName'")

现在您已经存储了托管身份,您需要存储有关希望分配给托管身份的权限的信息。在下面代码的第一行,将每个权限条目替换为您需要的权限列表。第二行将从 Microsoft Graph 资源收集权限对象,允许我们在分配给托管标识时重用它们,第三行存储 Microsoft Graph 资源的 ID。

$permissions = "permission1", "permission2", "permission3"

$getPerms = (Get-MgServicePrincipal -Filter "AppId eq '00000003-0000-0000-c000-000000000000'").approles | Where {$_.Value -in $permissions}

$GraphID = (Get-MgServicePrincipal -Filter "AppId eq '00000003-0000-0000-c000-000000000000'").id

现在,使用 foreach 循环和 New-MgServicePrincipalAppRoleAssignment cmdlet 将它们分配给您的托管标识。

foreach ($perm in $getPerms){
    New-MgServicePrincipalAppRoleAssignment -ServicePrincipalId $ManagedIdentity.Id `
    -PrincipalId $ManagedIdentity.Id -ResourceId $GraphID -AppRoleId $perm.id
}

完整脚本示例

Connect-MgGraph -Scopes Application.Read.All, AppRoleAssignment.ReadWrite.All

$ManagedIdentityName = "My Managed Identity"
$permissions = "Mail.send", "AuditLog.Read.All"

$getPerms = (Get-MgServicePrincipal -Filter "AppId eq '00000003-0000-0000-c000-000000000000'").approles | Where {$_.Value -in $permissions}
$ManagedIdentity = (Get-MgServicePrincipal -Filter "DisplayName eq '$ManagedIdentityName'")
$GraphID = (Get-MgServicePrincipal -Filter "AppId eq '00000003-0000-0000-c000-000000000000'").id

foreach ($perm in $getPerms){
    New-MgServicePrincipalAppRoleAssignment -ServicePrincipalId $ManagedIdentity.Id `
    -PrincipalId $ManagedIdentity.Id -ResourceId $GraphID -AppRoleId $perm.id
}

您需要 登录账户 后才能发表评论

取消回复欢迎 发表评论:

关灯