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

[玩转系统] 如何查找 Microsoft Graph PowerShell 的权限

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

如何查找 Microsoft Graph PowerShell 的权限


Microsoft Graph PowerShell 的功能与您可能熟悉的旧版 PowerShell 模块略有不同。您首先需要建立执行所需任务所需的权限,然后需要在使用 -scope 参数连接时或在可能连接到的应用程序中定义这些权限。

最佳实践是使用最小权限原则,这意味着您不允许自己执行不需要执行的任务。例如,如果您只需要读取 Azure AD 中某个组的信息,则无需为自己分配写入权限,因为读取权限就可以满足您的要求。

通过分配不需要的权限,您将变得权限过高。这是您经常在新闻中读到的内容,例如,当攻击者破坏了普通用户的系统时,却发现由于能够访问特权角色和数据,他们可以造成比预期更多的损害。

通过减少使用 Microsoft Graph 分配的权限,您不仅可以减轻系统受到威胁时的后果,还可以降低执行意外操作的风险,这可能会导致停机或数据丢失。

在本教程中,我将向您展示如何使用各种工具来确定执行所需任务所需的必要权限和最低权限。

使用 Find-MgGraphCommand cmdlet 查找权限

PowerShell 可用于公开运行我们想要在脚本中使用的命令所需的权限。 Find-MgGraphCommand 和 Find-MgGraphPermissions 都可以达到类似的结果。

Find-MgGraphCommand cmdlet 将允许您在 PowerShell 中定位特定的 cmdlet,然后您可以展开 cmdlet 的权限属性来评估相关权限。而 Find-MgGraphPermission cmdlet 允许您搜索与权限名称匹配的权限,然后提供权限的描述。

就我个人而言,我发现 Find-MgGraphCommand cmdlet 更有用,因此我将在这里重点介绍它。 我经常使用的原因Find-MgGraphCommand 而不是用于查找权限的专用 cmdlet,而是我经常知道需要运行什么命令来执行特定的操作任务,并且知道我需要什么权限。

例如,要查看与 Get-MgBetaGroup cmdlet 相关的所有权限,您可以运行以下命令:

Find-MgGraphCommand -command Get-MgBetaGroup -apiversion beta | `
select -first 1 -expandproperty permissions

从输出中,您可以看到权限名称,它可以包含在您的身份验证脚本或应用程序中,您还可以看到定义权限的完整描述。还包含 -apiversion 参数以针对 beta Microsoft Graph API 版本,因为我们在命令中声明了 beta cmdlet。

[玩转系统] 如何查找 Microsoft Graph PowerShell 的权限

还可以使用 Find-MgGraphCommand 指定其他参数,如-Uri 参数。这允许您根据 URI 路径搜索命令,这也公开了相关权限。例如,要查看用户 URI 路径的所有相关 cmdlet,您可以运行以下命令:

Find-MgGraphCommand -Uri "/users/{id}"

您的输出将类似于以下内容,并返回 Graph API 1.0 版和测试版的结果。

[玩转系统] 如何查找 Microsoft Graph PowerShell 的权限

通配符还可用于扩展搜索结果以查找特定字符串或搜索词。例如,如果您想查找名称中某处包含字符串“users”的所有命令,您可以运行以下命令:

Find-MgGraphCommand -Uri .*users*.

您的输出将如下所示:

[玩转系统] 如何查找 Microsoft Graph PowerShell 的权限

您可以看到这有多么有用,从上面的内容中您可能会注意到,与 v1.0 相比,beta API 提供了更广泛的命令选择。

使用 Microsoft Graph Explorer 查找权限

Microsoft Graph 浏览器工具还可用于查找所需的权限。 让我们以下面的示例为例,我正在执行 GET 使用以下 URL 的请求 https://graph.microsoft.com/v1.0/me/驾驶/最近。这将返回我最近保存在我自己的 OneDrive 文件夹中的所有文件。选择方法并输入 URL 后,修改权限选项卡将为您提供执行任务所需的权限。

[玩转系统] 如何查找 Microsoft Graph PowerShell 的权限

我们可以看到这一点,因为我只执行了 GET 请求,修改权限选项卡向我推荐必要的读取权限。

现在假设我想在 OneDrive 的根目录中创建一个新文件夹。您可以通过使用具有以下请求正文的 POST 请求来执行此操作:

{
    "name": "My new folder name,
    "folder": {}
}

我们现在可以看到修改权限选项卡向我们显示了创建文件夹和文件所需的权限,这些是Files.ReadWriteFiles.ReadWrite.All .

[玩转系统] 如何查找 Microsoft Graph PowerShell 的权限

如果您想运行更高级的查询,也可以执行相同的过程,例如,下面我将更新托管 Intune 设备的扩展属性:

[玩转系统] 如何查找 Microsoft Graph PowerShell 的权限

如果我们选择修改权限选项卡,奇怪的是,我们只是被告知我们需要目录。 AccessAsUser.All 权限,这意味着我们将拥有与当前登录用户相同的权限。

[玩转系统] 如何查找 Microsoft Graph PowerShell 的权限

现在,这又回到了对权限类型的了解,其中某些权限可以使用应用程序方法获得,但使用委托方法可能无法获得,反之亦然。这在前面的示例中是正确的,并且将很好地引导我们的下一部分。

使用 Microsoft 文档查找权限

微软官方文档https://learn.microsoft.com 是您获取有关每个命令的 cmdlet、权限和语法的更详细信息的地方,不过,仍然可以使用帖子中的其他方法公开此信息。

如果我们采用前面的示例,我们使用 Microsoft Graph 资源管理器(具有委派权限)更新了设备的扩展属性,则修改权限选项卡只会向我们公开 Directory.AccessAsUser.All权限。在这种场景下,由于委托权限的限制,我们无法看到想要使用应用权限需要哪些权限。

但是,我们可以使用 Graph API 的 Microsoft 参考文档来查找我们需要的信息。以下链接将带您进入更新设备参考页面:https://learn.microsoft.com/en-gb/graph/api/device-update?view=graph-rest-beta&tabs=powershell

在此页面的权限标题下,您将看到以下权限表:

[玩转系统] 如何查找 Microsoft Graph PowerShell 的权限

该表向我们展示了应用程序权限类型提供了执行更新设备操作所需的特定权限,而委派则没有。所以在某些情况下,我们使用的方法是由可用权限的限制决定的。

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

取消回复欢迎 发表评论:

关灯