SharePoint の "モダン" サイトの分類SharePoint "modern" sites classification

SharePoint Online で "モダン" サイトを作成するときに、オプションとして [サイトの分類] を選択し、サイト データの秘密度を定義できます。When you create "modern" sites in SharePoint Online, you can optionally select a 'Site Classification' to define the sensitivity of your site data. サイト分類の目標は、ガバナンスと法令遵守のパースペクティブからの分類に基づいてサイトのクラスターを管理したり、サイト分類に基づいてガバナンス プロセスを自動化したりできるようにすることです。The goal of site classification is to allow managing clusters of sites based on their classification from a governance and compliance perspective, as well as to automate governance processes based on site classification.

重要

[サイトの分類] オプションは既定では無効です。Azure AD レベルで構成する必要があります。The 'Site Classification' option is not enabled by default, and you need to configure it at the Azure AD level.

テナントでの [サイトの分類] を有効にするEnabling 'Site Classification' in your tenant

[サイトの分類] を活用するには、ターゲット テナントでこの機能を Azure AD レベルにおいて有効にする必要があります。In order to benefit of 'Site Classification' you need to enable this capability at the Azure AD level, in your target tenant. この機能を有効にすると、[データの秘密度] という追加フィールドが表示されます。Once you have enabled this capability, you will see an additional field 'How sensititive is your data?' "モダン" サイトの新規作成中にwhile creating new "modern" sites. [サイトの分類] フィールドが、次の図に示されているように表示されます。In the following figure you can see how the 'Site Classification' field looks like.

SharePoint Online での "モダン" サイトの作成時における [サイトの分類] オプション

次の図にあるように、"モダン" サイトの見出しに分類が強調表示されます。While in the following figure, you can see the classification highlighted in the header of a "modern" site.

"モダン" サイトの見出しで強調表示されている [サイトの分類]

PowerShell で [サイトの分類] を有効にするEnabling 'Site Classification' with PowerShell

[サイトの分類] 機能を有効にするには、以下に示されているような一連の PowerShell コードを実行できます。To enable the 'Site Classification' capability you can execute a bunch of PowerShell code, like the one illustrated below.

# Install the AzureAD 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

注意

Office 365 の UI でこの設定が有効になるまでに時間 (約 1 時間以上) がかかることに注意してください。Please, consider that it takes a while (about 1 hour or more) to have the settings available in the UI of Office 365.

前述のコード スニペットに関して、この資料を執筆している時点では AzureAD コマンドレットのプレビュー版を使用する必要がありますが、間もなく RTM バージョンを使用できるようになります。About the code snippet above, it worth it to say that at the time of this writing you have to use the preview version of the AzureAD cmdlets, but pretty soon you will be able to use the RTM version. AzureAD コマンドレットのインストール後、Azure AD ターゲット テナントに接続する必要があります。このテナントが SharePoint Online ターゲット テナントの背後に配置されます。Once you have installed the AzureAD cmdlets, you simply need to connect to the target Azure AD tenant, which is backing your target SharePoint Online tenant. Get-AzureADDirectorySettingTemplate コマンドレットを使用して、'統合グループ' の '設定テンプレート' に対する参照を取得します。それは 'Group.Unified' が DisplayName である参照です。Using the Get-AzureADDirectorySettingTemplate cmdlet you get a reference to the 'Setting Template' for the 'Unified Groups', which is the one with DisplayName of 'Group.Unified'. テンプレートを取得すると、その設定を構成できます。そのために、新しい DirectorySetting を作成し、ディクショナリを使用して設定値を提供します。Once you have the template, you can configure the settings of that template by creating a new DirectorySetting and providing the setting values through a dictionary.

[サイトの分類] パースペクティブからの主要な設定は次のとおりです。The main settings, from a 'Site Classification' perspective are:

  • UsageGuidelinesUrl: 各種分類オプションについて説明するページの URL。UsageGuidelinesUrl: the URL of a page where you can explain what are the different classification options. 対象ページへのリンクが、サイト作成フォームと、すべての分類サイトの見出しに表示されます。A link to that page will show up in the site creation form and in the header of every classified site.
  • ClassificationList: [サイトの分類] オプション一覧の、コンマ区切りの値リスト。ClassificationList: a comma separated list of values for the 'Site Classification' options list.
  • DefaultClassification: [サイトの分類] の既定値。DefaultClassification: the default value for the 'Site Classification'.

PnP コア ライブラリで [サイトの分類] を有効にするEnabling 'Site Classification' with PnP Core Library

[サイトの分類] 機能を有効にするための別の選択肢は、PnP コア ライブラリを利用する方法です。このライブラリにより、C# コードで分類を管理する拡張メソッドがいくつか提供されます。Another option that you have to enable the 'Site Classification' capability is to leverage the PnP Core Library, which provides few extension methods to manage classification in C# code. たとえば、[サイトの分類] を有効にするには、次のような C# コードを記述できます。For example, to enable the 'Site Classification' you can write C# code like the one illustrated below.

// 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 a the URL to an informative page
    tenant.EnableSiteClassifications(accessToken, newClassificationList, "MBI", "http://aka.ms/OfficeDevPnP");
}

テナントで [サイトの分類] を更新または削除するUpdating or Removing 'Site Classification' in your tenant

[サイトの分類] を有効にする場合と同じように、設定の更新または削除は PowerShell と PnP コア ライブラリのいずれかを使用して行えます。As like as for enabling the 'Site Classification', updating or removing the setting can be done either using PowerShell or PnP Core Library.

PowerShell で [サイトの分類] を更新または削除するUpdating or Removing 'Site Classification' with PowerShell

後で [サイトの分類] 設定を更新する必要が生じる場合、次の PowerShell スニペットを使用できます。If you need to update the 'Site Classification' settings afterwards, you can use the following PowerShell snippet.

# 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

注意

Office 365 の UI で設定の更新が反映されるまでに時間 (約 1 時間以上) がかかることに注意してください。Please, consider that it takes a while (about 1 hour or more) to have the settings updated in the UI of Office 365. ただし、この点はそれほど大きな問題とはなりません。[サイトの分類] セットを更新する頻度はそれほど多くないからです。However, it shouldn't be a big issue, because you shouldn't update the 'Site Classification' settings very often.

示されているように、'Group.Unified' が DisplayName である Directory Setting を検索し、その設定値を Set-AzureADDirectorySetting コマンドレットを使用して更新し、変更を適用できます。As you can see, you simply need to search for the Directory Setting with a DisplayName value of 'Group.Unified' and then you can update its setting values and apply the changes by using the Set-AzureADDirectorySetting cmdlet.

[サイトの分類] を削除するには、次のコード スニペットのように Remove-AzureADDirectorySetting コマンドレットを使用できます。To remove a 'Site Classification' you can use the Remove-AzureADDirectorySetting cmdlet, like in the following code snippet.

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

PnP コア ライブラリで [サイトの分類] を更新または削除するUpdating or Removing 'Site Classification' with PnP Core Library

別の選択肢は、PnP コア ライブラリを使用する方法です。Another option that you have is to use the PnP Core Library. たとえば、[サイトの分類] を更新にするには、次のような C# コードを記述できます。For example, to update the 'Site Classification' you can write C# code like the one illustrated below.

// 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", "http://aka.ms/SharePointPnP");
}

また、[サイトの分類] 設定を無効にして削除するには、次のようなコード スニペットを使用できます。Moreover, in order to disable and remove the 'Site Classification' settings, you can use a code snippet like the following one.

// 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);
}

サイトの分類を管理するManaging the classification of a site

サイトの分類値は、次の図に示されているように [サイトの情報] 設定を編集することによって、読み取ったり更新したり、SharePoint Online の UI で後ほど使用したりできます。The value of classification for a site can be read, or updated, later on using the UI of SharePoint Online, as you can see in the following figure, by editing the 'Site Information' settings.

SharePoint Online で "モダン" サイトの [サイトの情報] 設定を編集中の [サイトの分類] オプション

サイトの分類をプログラムを使用して読み取るProgrammatically reading the classification of a site

開発者の観点から、SharePoint Online の CSOM と REST API を使用して、特定のサイトの分類値を読み取ったり書き込んだりできます。From a developer's perspective, you can use CSOM and the REST API of SharePoint Online to read and write the value of classification for a specific site. 実際、すべての SharePoint Online サイト コレクションに含まれている Classification プロパティを使用すると、サイトの分類を読み取ることができます。In fact, every SharePoint Online site collection has the Classification property that you can use to read the site classification.

そのための PowerShell スニペットを次に示します。Here you can see a PowerShell snippet to do that.

# 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

(たとえば、SharePoint Framework のクライアント側の Web パーツで) REST を使用して [サイトの分類] 値を読み取る場合、次の REST エンドポイントを使用できます。If you like to read the 'Site Classification' value using REST, for example within a SharePoint Framework client-side web part, you can use the following REST endpoint:

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

サイトの分類値に基づいて、オートメーションとカスタム ポリシー ルールを定義できます。Based on the classification value of a site, you can define automation and custom policy rules.

PnP コア ライブラリには、CSOM のサイト オブジェクト用の拡張メソッドがあり、サイトの分類値を簡単に読み取ることができます。In the PnP Core Library there is an extension method for the Site object of CSOM, which allows you to easily read the classification value of a site. 次のコード スニペットで、この拡張メソッドを利用する方法を示します。In the following code snippet you can see how to leverage this extension method.

// 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();
}

サイトの分類をプログラムを使用して更新するProgrammatically updating the classification of a site

ターゲットが "モダン" コミュニケーション サイトの場合、CSOM の Classification プロパティを使用して値を更新することもできます。If your target is a "modern" communication site, you can use the Classification property of CSOM to update the value, too.

ターゲットが "モダン" チーム サイトで、分類値を更新する場合には、Microsoft Graph を使用する必要があります。CSOM の Classification プロパティは Office 365 グループの classification プロパティ値を複製するだけだからです。If your target is a "modern" team site and you want to update the classification value, you should use the Microsoft Graph because the Classification property of CSOM simply replicates the value of the classification property of the Office 365 Group.

注意

Microsoft Graph を使用して Office 365 グループを更新する方法の詳細については、「グループを更新する」をご覧ください。You can find further details about how to update an Office 365 Group using the Microsoft Graph in the document Update group.

サイトの分類を簡単に更新できるようにするため、PnP コア ライブラリには、"モダン" サイトの種類に応じて適切な動作が適用される拡張メソッドがあります。In order to make it easier for you to update the classification of a site, in the PnP Core Library there is an extension method that applies for you the right behavior, depending on the "modern" site type. 次のコードの引用部分で、その使用方法を示します。In the following code excerpt you can see how to use it.

// 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();
}