SharePoint“新式”网站分类

注意

现在可以使用敏感度标签(/microsoft-365/compliance/sensitivity-labels-teams-groups-sites),而不是网站分类来帮助保护 SharePoint 网站。

在 SharePoint Online 中创建“新式”网站时,可以视需要选择网站分类,定义网站数据的敏感度。 网站分类的目标是从治理和符合性角度出发根据分类管理几群网站,并根据网站分类自动执行治理流程。

重要

网站分类选项默认处于禁用状态,需要在 Azure AD 级别进行配置。

在租户中启用网站分类

若要受益于网站分类,需要在目标租户中在 Azure AD 级别启用此功能。 启用此功能后,便会在新建“新式”网站时看到额外的字段“数据的敏感度如何?”。 下图展示了“网站分类”字段。

在 SharePoint Online 中创建“新式”网站时的网站分类选项


在下图中,可以看到“新式”网站标题中突出显示了分类。

“新式”网站标题中突出显示了网站分类

使用 PowerShell 启用网站分类

若要启用网站分类功能,可以运行 PowerShell 代码,如下面的示例所示。

# Install the Azure AD Preview Module for PowerShell
Install-Module AzureADPreview

# Connect to Azure AD
Connect-AzureAD

# Create new directory setting and set initial values
$template = Get-AzureADDirectorySettingTemplate | where { $_.DisplayName -eq "Group.Unified" }

$setting = $template.CreateDirectorySetting()
$setting["UsageGuidelinesUrl"] = "https://aka.ms/sppnp"
$setting["ClassificationList"] = "HBI, MBI, LBI, GDPR"
$setting["DefaultClassification"] = "MBI"
New-AzureADDirectorySetting -DirectorySetting $setting

注意

请注意,设置需要一段时间(约 1 小时或更长时间),才能在 Office 365 UI 中启用。

关于以前的代码片段,值得一提的是,截至本文撰写之时,需要使用 Azure AD cmdlet 预览版,但很快就可以使用 RTM 版本了。 安装 AzureAD cmdlet 后,只需连接到目标 Azure AD 租户即可,这是目标 SharePoint Online 租户的后备租户。

使用 Get-AzureADDirectorySettingTemplate cmdlet,可以获取对“统一组”“设置模板”(即 DisplayName 值为 Group.Unified)的引用。

有了模板之后,可以通过创建新 DirectorySetting 并通过字典提供设置值来配置该模板的设置。

从网站分类的角度来说,主要设置包括:

  • UsageGuidelinesUrl:可以解释不同分类选项的网页的 URL。 此页面的链接显示在网站创建表单和每个已分类网站的标题中。
  • ClassificationList:网站分类选项列表的值列表(以逗号分隔)。
  • DefaultClassification:网站分类的默认值。

使用 PnP 核心库启用网站分类

另一个启用网站分类功能的方法是利用 PnP 核心库,它提供几个可用于在 C# 代码中管理分类的扩展方法。

例如,若要启用网站分类,可以编写如下 C# 代码。

// Connect to the admin central of your tenant
using (var adminContext = new ClientContext("https://[tenant]-admin.sharepoint.com/"))
{
    // Provide a valid set of credentials
    adminContext.Credentials = OfficeDevPnP.Core.Utilities.CredentialManager.GetSharePointOnlineCredential("[name-of-your-credentials]");

    // Create a new instance of the Tenant class of CSOM
    var tenant = new Tenant(adminContext);

    // Get an Azure AD Access Token using ADAL, MSAL, or whatever else you like
    var accessToken = getAzureADAccessToken();

    // Define the list of classifications
    var newClassificationList = new List<String>();
    newClassificationList.Add("HBI");
    newClassificationList.Add("MBI");
    newClassificationList.Add("LBI");
    newClassificationList.Add("GDPR");

    // Use the PnP extension method to enable site classification
    // Including a default classification value and the URL to an informative page
    tenant.EnableSiteClassifications(accessToken, newClassificationList, "MBI", "https://aka.ms/OfficeDevPnP");
}

在租户中更新或删除网站分类

与启用网站分类一样,更新或删除网站分类设置也可以使用 PowerShell 或 PnP 核心库完成。

使用 PowerShell 更新或删除网站分类

如果随后需要更新网站分类设置,可以使用下面的 PowerShell 代码片段。

# Connect to Azure AD
Connect-AzureAD

# Read current settings
(Get-AzureADDirectorySetting | where { $_.DisplayName -eq "Group.Unified" }).Values

# Update settings
$currentSettings = Get-AzureADDirectorySetting | where { $_.DisplayName -eq "Group.Unified" }
$currentSettings["UsageGuidelinesUrl"] = "https://aka.ms/sppnp"
$currentSettings["ClassificationList"] = "HBI, MBI, LBI, GDPR"
$currentSettings["DefaultClassification"] = "MBI"
Set-AzureADDirectorySetting -Id $currentSettings.Id -DirectorySetting $currentSettings

注意

可能需要 1 小时或更长时间,才能在 Office 365 UI 中更新设置。

可以看到,只需搜索 DisplayName 值为 Group.Unified 的目录设置,即可使用 Set-AzureADDirectorySetting cmdlet 更新设置值并应用更改。

若要移除网站分类,可以使用 Remove-AzureADDirectorySetting cmdlet,如下面的代码片段所示。

# Delete settings
$currentSettings = Get-AzureADDirectorySetting | where { $_.DisplayName -eq "Group.Unified" }
Remove-AzureADDirectorySetting -Id $currentSettings.Id

使用 PnP 核心库更新或移除网站分类

另一种方法是使用 PnP 核心库。

例如,若要更新网站分类,可以编写如下 C# 代码。

// Connect to the admin central of your tenant
using (var adminContext = new ClientContext("https://[tenant]-admin.sharepoint.com/"))
{
    // Provide a valid set of credentials
    adminContext.Credentials = OfficeDevPnP.Core.Utilities.CredentialManager.GetSharePointOnlineCredential("[name-of-your-credentials]");

    // Create a new instance of the Tenant class of CSOM
    var tenant = new Tenant(adminContext);

    // Get an Azure AD Access Token using ADAL, MSAL, or whatever else you like
    var accessToken = getAzureADAccessToken();

    // Retrieve the current set of values for site classification
    var classificationList = tenant.GetSiteClassificationList(accessToken);
    
    // And update it by adding a new value
    var updatedClassificationList = new List<String>(classificationList);
    updatedClassificationList.Add("TopSecret");

    // Update the site classification settings accordingly
    tenant.UpdateSiteClassificationSettings(accessToken, updatedClassificationList, "MBI", "https://aka.ms/SharePointPnP");
}

此外,若要禁用和移除网站分类设置,可以使用如下代码片段。

// Connect to the admin central of your tenant
using (var adminContext = new ClientContext("https://[tenant]-admin.sharepoint.com/"))
{
    // Provide a valid set of credentials
    adminContext.Credentials = OfficeDevPnP.Core.Utilities.CredentialManager.GetSharePointOnlineCredential("[name-of-your-credentials]");

    // Create a new instance of the Tenant class of CSOM
    var tenant = new Tenant(adminContext);

    // Get an Azure AD Access Token using ADAL, MSAL, or whatever else you like
    var accessToken = getAzureADAccessToken();

    // Disable the site classification settings
    tenant.DisableSiteClassifications(accessToken);
}

管理网站的分类

稍后可以读取或更新网站分类值,具体方法为使用 SharePoint Online UI(如下图所示)编辑“网站信息”设置。

在 SharePoint Online 中编辑“新式”网站的“网站信息”设置时看到的网站分类选项

以编程方式读取网站分类

从开发人员角度来看,可以使用 CSOM 和 SharePoint Online REST API 读取和编写特定网站的分类值。 实际上,每个 SharePoint Online 网站集都有可用于读取网站分类的 Classification 属性。

下面展示了执行此操作的 PowerShell 代码片段。

# Delete settings
Connect-PnPOnline "https://[tenant].sharepoint.com/sites/[modernsite]" -Credentials [credentials]

$site = Get-PnPSite
$classificationValue = Get-PnPProperty -ClientObject $site -Property Classification
Write-Host $classificationValue

若要使用 REST 读取网站分类值(例如,在 SharePoint 框架客户端 Web 部分中),可以使用下面的 REST 终结点:

https://[tenant].sharepoint.com/sites/[modernsite]/_api/site/Classification

根据网站分类值,可以定义自动化和自定义策略规则。

PnP 核心库中有 CSOM 网站对象的扩展方法,可用于轻松读取网站分类值。 下面的代码片段展示了如何利用此扩展方法。

// Connect to the target site collectiion
using (var clientContext = new ClientContext("https://[tenant].sharepoint.com/sites/[modernsite]"))
{
    // Provide a valid set of credentials
    clientContext.Credentials = OfficeDevPnP.Core.Utilities.CredentialManager.GetSharePointOnlineCredential("[name-of-your-credentials]");

    // Read the current classification value
    var currentClassification = clientContext.Site.GetSiteClassification();
}

以编程方式更新网站分类

如果目标是“新式”通信网站,也可以使用 CSOM 的 Classification 属性来更新值。

如果目标是“新式”团队网站且要更新分类值,应使用 Microsoft Graph,因为 CSOM 的 Classification 属性仅复制 Microsoft 365 组的 classification 属性值。

注意

若要详细了解如何使用 Microsoft Graph 更新 Microsoft 365 组,可以参阅更新组一文。

为了更加方便地更新网站分类,PnP 核心库中有一种扩展方法,可根据“新式”网站类型应用相应行为。 下面的代码片段展示了如何使用此扩展方法。

// Connect to the target site collectiion
using (var clientContext = new ClientContext("https://[tenant].sharepoint.com/sites/[modernsite]"))
{
    // Provide a valid set of credentials
    clientContext.Credentials = OfficeDevPnP.Core.Utilities.CredentialManager.GetSharePointOnlineCredential("[name-of-your-credentials]");

    // Get an Azure AD Access Token using ADAL, MSAL, or whatever else you like
    // This is needed only if your target is a "modern" team site
    var accessToken = getAzureADAccessToken();

    // Update the classification value, where the accessToken is an optional argument
    clientContext.Site.SetSiteClassification("MBI", accessToken);

    // Read back the new classification value (it can take a while to get back the new value)
    var currentClassification = clientContext.Site.GetSiteClassification();
}

另请参阅