使用 SharePoint Online PowerShell 管理数据访问治理报告

虽然 SharePoint 管理中心提供数据访问治理 ,但某些组织更倾向于使用 PowerShell 通过脚本和自动化大规模管理设置。 本文介绍如何使用 SharePoint Online PowerShell 模块管理数据访问治理报告。

开始之前

确保组织满足 SharePoint 高级管理的先决条件,包括 SharePoint Online PowerShell 模块要求

模块和版本16.0.25409或更高版本中提供了Microsoft.Online.SharePoint.PowerShell对数据访问治理的 PowerShell 支持。

连接到 SharePoint 时,请运行Connect-SPOService不带 Credential 参数的 命令。 根据安全最佳做法,不支持使用凭据参数登录。

使用 PowerShell 创建报表

有关语法、参数和示例,请参阅 Start-SPODataAccessGovernanceInsight

生成网站权限状态报告

你需要了解组织中的权限设置,尤其是在 Copilot 采用后,因为它尊重用户和内容权限。 Copilot 的数据泄露风险随着具有权限或访问权限的用户数的增加而增加。 网站权限状态报告根据对组织中每个 SharePoint 和 OneDrive 网站拥有权限的用户数提供对潜在暴露的深入见解。

首先运行此报表,快速了解组织中的权限。 此报表是快照报表。 它提供截至报表生成日期的整个组织的最新快照或状态。

若要为所有 SharePoint 网站生成报表,请运行以下命令:

Start-SPODataAccessGovernanceInsight -ReportEntity PermissionedUsers -ReportType Snapshot -Workload SharePoint -CountOfUsersMoreThan 0  -Name "OrgWidePermissionedUsersReportSharePoint"

若要为所有 OneDrive for Business 帐户生成报表,请运行以下命令:

Start-SPODataAccessGovernanceInsight -ReportEntity PermissionedUsers -ReportType Snapshot -Workload OneDriveForBusiness -CountOfUsersMoreThan 0  -Name "OrgWidePermissionedUsersReportODB"

请记住有关报表的以下要点:

  • 由于这些报表是全面的,并且可能涵盖租户中的所有数据,因此最多可以创建两个报表。 可以为每个工作负荷创建一个报表。
  • 第一个报表始终需要长达 5 天才能完成,而不管你的组织规模如何。 后续报告在 24 小时内完成。
  • 这些报告在生成报告前最多 48 小时捕获数据。
  • 生成后,可以每 30 天再次运行一次这些报表。

这些命令生成一个列表,其中至少有一个用户可以访问网站中的任何内容。 有关如何解释报表的详细信息,请参阅 如何查看组织报表的网站权限

了解租户中过度共享的程度后,可以跟踪过去 28 天内活动站点的进一步偏差。 可以在活动的潜在过度共享关键因素(例如“共享链接”)或过去 28 天内与“除外部用户以外的所有人”共享的内容)上生成报告。

生成用户权限状态报告

虽然整个组织的网站权限报告可帮助你了解整个租户中权限的当前状态,但某些方案需要发现给定用户可访问的网站。 有关详细信息,请参阅使用快照报表获取组织的站点权限基线。 以下部分介绍了数据访问治理如何帮助你使用 PowerShell 生成此类报表。

首先,使用 Get-MgUser 命令提取要为其生成报表的用户的 UPN 或用户主体名称。 然后运行以下 PowerShell 命令,这将触发列出这些用户可访问的 SharePoint 网站的报表。

Start-SPODataAccessGovernanceInsight -ReportEntity PermissionsReport -ReportType Snapshot -Workload SharePoint -Name "UserSharePointReport" -UserEmailList "a@contoso.com","b@contoso.com"

重要

虽然 参数命名 UserEmailList为 ,但报表需要用户主体名称。 单个请求中最多可以包含 100 个用户。

若要列出给定用户可访问的 OneDrive 帐户,请将工作负荷指定为 OneDriveForBusiness

Start-SPODataAccessGovernanceInsight -ReportEntity PermissionsReport -ReportType Snapshot -Workload OneDriveForBusiness -Name "UserOneDriveReport" -UserEmailList "a@contoso.com","b@contoso.com"

使用 PowerShell 在文件报表中生成敏感度标签

运行此 PowerShell 命令以触发报表以列出自报表生成日期起使用给定标签标记特定项的网站。

首先,使用 安全性 & 合规性 PowerShell 模块检索标签名称或标签 GUID。

Get-Label | Format-Table -Property DisplayName, Name, GUID, ContentType

然后,使用名称和 GUID 检索标记有给定标签名称或 GUID 的文件的网站。

Start-SPODataAccessGovernanceInsight -ReportEntity SensitivityLabelForFiles -Workload SharePoint -ReportType Snapshot -FileSensitivityLabelGUID "a0a0a0a0-bbbb-cccc-dddd-e1e1e1e1e1e1" -FileSensitivityLabelName Secret

注意

目前,不支持具有标记文件的帐户的报表 OneDriveForBusiness

使用共享链接活动报告来识别在协作中处于活动状态且需要更快干预以缓解任何潜在的过度共享风险的网站。 这些基于活动的最新报告标识了在过去 28 天内生成最多共享链接的网站。

生成以下共享链接活动报告:

  • 在过去 28 天内创建了 任何人 共享链接的网站
  • 在过去 28 天内在组织中创建People共享链接的网站
  • 在过去 28 天内创建 特定人员 (来宾) 共享链接的网站
Start-SPODataAccessGovernanceInsight -ReportEntity SharingLinks_Anyone -Workload SharePoint -ReportType RecentActivity

提供工作负荷值, OneDriveForBusiness 以获取具有相同条件的所有 OneDrive 帐户。

Start-SPODataAccessGovernanceInsight -ReportEntity SharingLinks_PeopleInYourOrg -Workload SharePoint -ReportType RecentActivity

提供工作负荷值, OneDriveForBusiness 以获取具有相同条件的所有 OneDrive 帐户。

Start-SPODataAccessGovernanceInsight -ReportEntity SharingLinks_Guests -Workload SharePoint -ReportType RecentActivity

提供工作负荷值, OneDriveForBusiness 以获取具有相同条件的所有 OneDrive 帐户。

识别过去 28 天内与“除外部用户以外的所有人”共享的内容

虽然共享链接可能会导致潜在的过度共享,但另一个关键参与者是“除外部用户以外的所有人” (EEEU) 。 EEEU 使内容公开 (对整个组织可见) ,并使其他人能够轻松发现内容并获取访问权限。 这些报告标识在过去 28 天内在不同范围内主动使用 EEEU 的站点。

可以生成以下 EEEU 活动报告:

  • 过去 28 天内与除外部用户以外的所有人共享的网站
  • 过去 28 天内与除外部用户以外的所有人共享的项目

重要

目前,OneDrive for Business的 EEEU 报表仅支持项级别。 不支持站点级别OneDrive for Business的 EEEU 报告。 如果没有 Microsoft SharePoint 高级管理许可证,则必须为基于活动的最新报表启用数据收集,以便收集相关的审核数据以生成报表。 启用后,将收集数据并存储 28 天。 可以在 24 小时后生成报表,其中包含来自集合点的数据。 如果三个月内甚至未生成一次报告,则数据收集将暂停,必须再次启用它。 若要为这些报表启用数据收集,请参阅 管理最近基于活动的报表的数据收集部分。

标识过去 28 天内与“除外部用户以外的所有人”共享的网站

将 EEEU 添加到网站成员身份 (所有者、成员或访问者) 时,网站的全部内容将变为公共内容,并且更容易出现过度共享。 运行以下 PowerShell 命令,触发报表以捕获 SharePoint 网站在过去 28 天内的此类网站:

Start-SPODataAccessGovernanceInsight -ReportEntity EveryoneExceptExternalUsersAtSite -Workload SharePoint -ReportType RecentActivity -Name "PublicSiteViaEEEU"

标识过去 28 天内与“除外部用户以外的所有人”共享的项目

运行以下 PowerShell 命令以触发报表以捕获过去 28 天内与 EEEU 共享) 的 SharePoint 网站的特定项 (文件、文件夹或列表:

Start-SPODataAccessGovernanceInsight -ReportEntity EveryoneExceptExternalUsersAtSite -Workload SharePoint -ReportType RecentActivity -Name "PublicSiteViaEEEU"

注意

将工作负荷值替换为 OneDriveForBusiness ,以获取具有相同条件的所有 OneDrive 帐户的“除外部用户以外的所有人”共享的项目。

管理最近基于活动的报表的数据收集

重要

如果没有 Microsoft SharePoint 高级管理许可证,则必须为基于活动的最新报表启用数据收集,以便收集相关的审核数据以生成报表。 启用它后,可以在 24 小时后生成报表,它将包含集合点的数据。 数据存储 28 天。 如果三个月内甚至未生成一次报告,则数据收集将暂停,必须再次启用它。

为最近基于活动的报表启用数据收集

此 PowerShell 命令开始收集过去 28 天内有关活动的报表的审核数据。

Start-SPOAuditDataCollectionForActivityInsights -ReportEntity SharingLinks_Anyone

ReportEntity 参数的适用值为 SharingLinksAnyone、SharingLinksPeopleInYourOrg、SharingLinksGuests、EveryoneExceptExternalUsersAtSite、EveryoneExceptExternalUsersForItems、CopilotAppInsights

禁用基于最近活动的报表的数据收集

此 PowerShell 命令停止收集过去 28 天内活动报告的审核数据。

Stop-SPOAuditDataCollectionForActivityInsights -ReportEntity SharingLinks_Anyone

检查最近基于活动的报表的数据收集状态

启用数据收集后,可以在 24 小时后生成报告。 若要检查是否可以生成报表,请使用 PowerShell 命令 Get-SPOAuditDataCollectionStatusForActivityInsights。 命令返回当前数据收集状态,可以是 NotInitiatedInProgressPaused。 当状态为 InProgress时,可以生成报告。

Get-SPOAuditDataCollectionStatusForActivityInsights -ReportEntity SharingLinks_Anyone

使用 PowerShell 跟踪报表

重要

每次创建报表都会返回一个 GUID,可用于跟踪报表状态。

Start-SPODataAccessGovernanceInsight -ReportEntity SensitivityLabelForFiles -Workload SharePoint -ReportType Snapshot -FileSensitivityLabelGUID "a0a0a0a0-bbbb-cccc-dddd-e1e1e1e1e1e1" -FileSensitivityLabelName Secret
ReportId                             Status
--------                             ------
a0a0a0a0-bbbb-cccc-dddd-e1e1e1e1e1e1 NotStarted

使用 Get-SPODataAccessGovernanceInsight 命令,使用报表 ID 获取特定数据访问治理报表的当前状态。

Get-SPODataAccessGovernanceInsight -ReportID a0a0a0a0-bbbb-cccc-dddd-e1e1e1e1e1e1
ReportId          : a0a0a0a0-bbbb-cccc-dddd-e1e1e1e1e1e1
ReportEntity      : SharingLinks_Anyone
Status            : InQueue
Workload          : SharePoint
TriggeredDateTime : 11/13/2024 19:32:34
CreatedDateTime   : 11/13/2024 20:09:23
ReportStartTime   : 10/17/2024 19:32:33
ReportEndTime     : 11/13/2024 19:32:33
ReportType        : RecentActivity
SitesFound        : 120

ReportStartTimeReportEndTime 显示报表的数据周期。 当报表生成完成时,状态将更改为 Completed

还可以使用筛选器 ReportEntity 而不是 ID 查看 DAG 报表的当前状态。 输出 reportID 中会显示 ,稍后需要下载特定报表。

Get-SPODataAccessGovernanceInsight -ReportEntity PermissionedUsers
ReportId             : a0a0a0a0-bbbb-cccc-dddd-e1e1e1e1e1e1
ReportName           : PermissionReportFor1AsOfSept
ReportEntity         : PermissionedUsers
Status               : Completed
Workload             : SharePoint
TriggeredDateTime    : 09/18/2024 11:06:16
CreatedDateTime      : 09/22/2024 12:12:48
ReportType           : Snapshot
CountOfUsersMoreThan : 1
CountOfSitesInReport : 7
CountOfSitesInTenant : 22
Privacy              : All
Sensitivity          : {All}
Templates            : {All}

ReportId             : b1b1b1b1-cccc-dddd-eeee-f2f2f2f2f2f2
ReportName           : PermissionReportFor1AsOfOct
ReportEntity         : PermissionedUsers
Status               : Completed
Workload             : SharePoint
TriggeredDateTime    : 10/09/2024 14:15:40
CreatedDateTime      : 10/09/2024 15:18:23
ReportType           : Snapshot
CountOfUsersMoreThan : 100
CountOfSitesInReport : 0
CountOfSitesInTenant : 26
Privacy              : All
Sensitivity          : {All}
Templates            : {All}

使用 PowerShell 查看和下载报表

若要下载特定报表,需要 reportID。 使用 Get-SPODataAccessGovernanceInsight 命令获取 reportID。 然后,使用 Export-SPODataAccessGovernanceInsight 命令将报表下载到指定的路径。

Export-SPODataAccessGovernanceInsight -ReportID a0a0a0a0-bbbb-cccc-dddd-e1e1e1e1e1e1 -DownloadPath "C:\Users\TestUser\Documents\DAGReports"

此命令会将 CSV 文件下载到指定的路径。 可以在 如何访问 SharePoint 管理中心的数据访问治理报表中找到有关每个报表的 CSV 和视图的详细信息。

注意

默认下载路径是 “下载” 文件夹。

使用 PowerShell 执行修正操作

生成数据访问治理报告后,可以按照 数据访问治理报表中的修正操作中所述执行修正操作

以下部分介绍 PowerShell 命令,以启动和跟踪站点访问评审作为修正操作。

使用 PowerShell 启动站点访问评审

使用 Start-SPOSiteReview 命令为数据访问治理报表下列出的特定站点启动站点访问评审。 数据访问治理报告提供了应在其中启动评审的上下文。 从 CSV 文件检索报告 ID 和网站 ID,并提供注释,以便网站所有者清楚地了解评审的目的。

Start-SPOSiteReview -ReportID a0a0a0a0-bbbb-cccc-dddd-e1e1e1e1e1e1 -SiteID c2c2c2c2-dddd-eeee-ffff-a3a3a3a3a3a3 -Comment "Check for org wide access"
ReviewId                : a0a0a0a0-bbbb-cccc-dddd-e1e1e1e1e1e1
SiteId                  : c2c2c2c2-dddd-eeee-ffff-a3a3a3a3a3a3
ReviewInitiatedDateTime : 13-11-2024 20:55:41
ReportEntity            : PermissionedUsers
Status                  : Pending
AdminComment            : Check for org wide access
SiteName                : All Company

此命令将生成电子邮件给网站所有者,如 如何启动网站访问评审中所述。

使用 PowerShell 跟踪站点访问评审

使用 Start-SPOSiteReview 命令跟踪站点访问评审的状态。 对于特定评审,请使用 ReviewID 输出中所示的值。 若要检索与报表模块相关的所有审阅,请使用 ReportEntity 参数。

Get-SPOSiteReview -ReportEntity PermissionedUsers
ReviewId                : a0a0a0a0-bbbb-cccc-dddd-e1e1e1e1e1e1
SiteId                  : c2c2c2c2-dddd-eeee-ffff-a3a3a3a3a3a3
ReviewInitiatedDateTime : 13-11-2024 20:55:41
ReviewCompletedDateTime :
ReportCreatedDateTime   : 13-11-2024 23:25:41
ReportEndDateTime       : 13-11-2024 23:25:41
ReportEntity            : PermissionedUsers
Status                  : Pending
AdminComment            : Check for org wide access
SiteName                : All Company
ReviewerEmail           :
ReviewerComment         :

ReviewId                : a0a0a0a0-bbbb-cccc-dddd-e1e1e1e1e1e1
SiteId                  : c2c2c2c2-dddd-eeee-ffff-a3a3a3a3a3a3
ReviewInitiatedDateTime : 24-10-2024 11:07:39
ReviewCompletedDateTime : 15-11-2024 11:07:39
ReportCreatedDateTime   : 15-10-2024 09:24:47
ReportEndDateTime       : 15-10-2024 11:39:52
ReportEntity            : PermissionedUsers
Status                  : Completed
AdminComment            : Check for org wide access
SiteName                : All Company
ReviewerEmail           : Jon@contosofinance.com
ReviewerComment         : Removed EEEU for sensitive documents