SharePoint“新式”网站分类
注意
现在可以使用敏感度标签(/microsoft-365/compliance/sensitivity-labels-teams-groups-sites),而不是网站分类来帮助保护 SharePoint 网站。
在 SharePoint Online 中创建“新式”网站时,可以视需要选择网站分类,定义网站数据的敏感度。 网站分类的目标是从治理和符合性角度出发根据分类管理几群网站,并根据网站分类自动执行治理流程。
重要
网站分类选项默认处于禁用状态,需要在 Azure AD 级别进行配置。
在租户中启用网站分类
若要受益于网站分类,需要在目标租户中在 Azure AD 级别启用此功能。 启用此功能后,便会在新建“新式”网站时看到额外的字段“数据的敏感度如何?”。 下图展示了“网站分类”字段。
在下图中,可以看到“新式”网站标题中突出显示了分类。
使用 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(如下图所示)编辑“网站信息”设置。
以编程方式读取网站分类
从开发人员角度来看,可以使用 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();
}