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

[玩转系统] Microsoft Graph PowerShell 管理员同意

作者:精品下载站 日期:2024-12-14 13:36:35 浏览:18 分类:玩电脑

Microsoft Graph PowerShell 管理员同意


[玩转系统] Microsoft Graph PowerShell 管理员同意

管理员同意的概念可能有点令人困惑,微软官方文档对它的解释也很糟糕。

本文将回答以下问题:

  • 管理员同意书的目的是什么?
  • 管理员同意如何运作?
  • 您如何查看当前的管理员同意设置?
  • 如何配置管理员同意?

我们将使用 Easy365Manager 作为用例来回答这些问题。

Easy365Manager 是一个适用于 Active Directory 用户和计算机的插件(版本 1.5 及更高版本),它使用 Microsoft Graph PowerShell 直接从 AD 启用 Office 365 管理。

管理员同意的目的是什么

管理员同意的目的是严格控制 Azure 应用程序(例如 Microsoft Graph PowerShell 或其他 Microsoft 或第三方应用程序)可以执行的操作。

通过委派访问权限,Microsoft Graph PowerShell 应用程序可以在安全上下文中运行 PowerShell 命令。这有两个主要优点:

  • 您只能执行您有权执行的操作
  • 所采取的任何操作都会使用您的 ID 记录在统一审核日志中

但是,让第三方(或 Microsoft)应用程序在您的安全上下文中运行命令并不是一件容易的事 - 这就是为什么有一个额外的控制层:同意。

同意就像一个白名单,允许身份(例如[email protected])在上行使权限(例如User.ReadWrite.All)资源(例如 Microsoft Graph)。

同意并不授予任何权限。它只允许您使用现有的权限。

同意可以是授予单个用户的用户同意,也可以是管理员授予所有用户的管理员同意。

管理员同意如何运作?

每当你使用 Azure 应用程序(例如 Microsoft Graph PowerShell)时,都需要有人同意该应用程序使用你的权限代表你行事。

该同意可以作为用户同意(您自己同意,假设您有权这样做),也可以作为管理员同意(管理员代表您同意)。

以 Microsoft Graph PowerShell 为例,其完成方式如下:

[玩转系统] Microsoft Graph PowerShell 管理员同意

您可能会注意到这里有一个大问题:

如果管理员已经做出用户同意,则她将不再看到授予管理员同意的选项。

为什么这是个问题?

假设管理员已授予自己管理 Office 365 用户的用户同意书。后来她决定实施管理员同意,让她的全体员工运行一些 PowerShell 脚本来修改用户属性。

由于用户同意阻止了她授予管理员同意的途径 - 并且由于 Azure 门户不包含用于同意管理的 GUI - 她现在不得不使用一些非常讨厌的 PowerShell 来解决这个问题!

继续阅读有关此的更多信息...

您如何查看管理员同意设置?

您当前的应用程序同意设置可通过 Azure 门户和 PowerShell 查看

要使用 Azure 门户查看同意设置,请转到企业应用程序。

然后选择 Microsoft Graph PowerShell 并单击“安全”部分中的“权限”。

(如果您找不到 Microsoft Graph PowerShell,请阅读本文。)

[玩转系统] Microsoft Graph PowerShell 管理员同意

管理员同意将向您显示管理员同意(管理员向所有用户授予的同意)。

用户同意将向您显示授予个人用户的个人同意。

权限列表是只读列表,无法进行修改!

使用 PowerShell 查看当前应用程序同意设置有点乏味:

您需要识别 Microsoft Graph PowerShell 的服务主体 ID,并且需要识别 Microsoft Graph 的服务主体 ID(因为理论上可以将权限分配给其他资源)。

您还需要知道提取信息需要哪些权限,以便您可以连接到适当的范围(阅读本文以获取更多信息。)

这是一个示例脚本,用于获取 Microsoft Graph PowerShell 应用程序的同意设置(在 Microsoft Graph 资源上分配):

Connect-MgGraph -Scopes "DelegatedPermissionGrant.ReadWrite.All Directory.AccessAsUser.All Directory.Read.All"
$MSGraphPS_AppId = "14d82eec-204b-4c2f-b7e8-296a70dab67e"
$MSGraph_AppId = "00000003-0000-0000-c000-000000000000"
$MicrosoftPowerShellGraph_Id = (Get-MgServicePrincipal -All | Where-Object { $_.AppId -eq $MSGraphPS_AppId}).Id
$Microsoftgraph_Id = (Get-MgServicePrincipal -All | Where-Object { $_.AppId -eq $MSGraph_AppId}).Id
Get-MgOauth2PermissionGrant -All | Where-Object { $_.clientId -eq $MicrosoftPowerShellGraph_Id -and $_.ResourceId -eq $Microsoftgraph_Id} | ft PrincipalId,Scope

该脚本的输出将类似于以下内容:

PrincipalId                           Scope
-----------                           -----
                                      User.ReadWrite.All Group.ReadWrite.All Domain.Read.All Directory.ReadWrite.All offline_access
10f136c2-55f0-41c4-9c96-6bab410c7c54  DelegatedPermissionGrant.ReadWrite.All Directory.AccessAsUser.All Directory.Read.All openid profile offline_access Directory.ReadWrite.All User.Read email

管理员同意列出时带有空的PrincipalId(因为它们适用于所有人)。

用户同意与标识用户的PrincipalId 一起列出。

如何配置管理员同意?

如之前的流程图所示,当您之前未向自己授予用户同意时,很容易授予管理员同意。

只需连接到具有所需范围的 Microsoft Graph PowerShell,例如:

Connect-MgGraph -Scopes "User.ReadWrite.All,Group.ReadWrite.All"

然后选择“代表您的组织同意”:

[玩转系统] Microsoft Graph PowerShell 管理员同意

但是,如果您已经获得用户同意,则需要使用 PowerShell 配置管理员同意。

这是一个非常麻烦的过程,因为多值管理员同意被写入单值属性。因此,当您应用新的管理员同意书时,任何现有的管理员同意书都会从应用程序中删除。

所以你需要考虑以下几点:

  • 确定当前请求中未包含但需要维护的范围
  • 确定已配置了比您正在应用的权限更高的权限的范围。

    • 例如,如果您正在应用“User.Read.All”,但已经存在“User.ReadWrite.All”,那么您可能希望保留它。

管理企业应用程序同意的糟糕界面将使许多管理员陷入困境......这根本没有意义:

随着将 Microsoft Graph PowerShell 作为企业应用程序(MSOnline 和 AzureAD 脚本将在 2023 年初被淘汰),所有级别的管理员(而不仅仅是半经验丰富的程序员)都应该可以访问基本脚本权限的管理。

用于管理管理员同意的 PowerShell 脚本

Easy365Manager 版本 1.5 及更高版本基于 Microsoft Graph PowerShell SDK 构建。

为了支持 Office 365 管理委派,我们创建了一个 PowerShell 脚本来设置所需的管理员同意,而无需修改任何现有配置。

只要您注明源页面,请随意修改脚本并发布任何更改。

当然,如果您希望尽可能高效地工作,请考虑测试 Easy365Manager 的 30 天试用版!

  • 下载和安装只需几分钟。
  • 不需要改变基础设施。
  • 与 AD 用户和计算机的集成确保了超级直观的界面。

我们的客户通常可以跳过繁琐的 PowerShell 来执行日历委托等简单任务,从而每月节省数十个小时:

在此下载 30 天试用版。到一天结束时,您的工作效率将会更高!

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

取消回复欢迎 发表评论:

关灯