Classification des sites SharePoint « modernes »
Remarque
Vous pouvez désormais utiliser des étiquettes de confidentialité (/microsoft-365/compliance/sensitivity-labels-teams-groups-sites) au lieu de la classification des sites pour protéger vos sites SharePoint.
Lorsque vous créez des sites « modernes » dans SharePoint Online, vous pouvez éventuellement activer une classification de site pour définir le niveau de confidentialité des données de votre site. L’objectif de la classification de site est de gérer des clusters de sites en fonction de leur classification du point de vue de la gouvernance et de la conformité. Elle sert également de base à l’automatisation des processus de gouvernance.
Importante
L’option de classification de site n’est pas activée par défaut et vous devez la configurer au niveau d’Azure AD.
Activer la classification de site dans votre client
Pour bénéficier de la classification de site, vous devez activer cette fonctionnalité au niveau d’Azure AD, dans votre client cible. Une fois que vous avez activé cette fonctionnalité, vous apercevez le champ supplémentaire Quel est le niveau de confidentialité de vos données ? lors de la création de sites « modernes ». Dans l’illustration suivante, vous pouvez voir à quoi ressemble le champ de classification de site.
Dans l’illustration suivante, vous pouvez voir la classification mise en évidence dans l’en-tête d’un site « moderne ».
Activer la classification de site avec PowerShell
Pour activer la fonctionnalité de classification de site, vous pouvez exécuter le code PowerShell comme dans l’exemple suivant :
# 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
Remarque
Rappelez-vous que cela prend du temps (environ 1 heure ou plus) pour que les paramètres soient disponibles dans l’interface utilisateur d’Office 365.
En ce qui concerne l’extrait de code précédent, il convient d’indiquer qu’au moment de sa rédaction, vous devez utiliser la version précédente des cmdlet Azure AD, mais que vous pourrez bientôt utiliser la version RTM. Après avoir installé les cmdlet Azure AD, vous devez simplement vous connecter au client cible Azure AD, qui sauvegarde votre client SharePoint Online cible.
À l’aide de la cmdlet Get-AzureADDirectorySettingTemplate, vous obtenez une référence du Modèle de paramètre pour les Groupes unifiés, c’est-à-dire celui avec DisplayName de Group.Unified.
Une fois que vous avez le modèle, vous pouvez configurer les paramètres de ce modèle en créant un nouveau DirectorySetting et en fournissant les valeurs de paramètre via un dictionnaire.
Voici les principaux paramètres d’une classification de site :
- UsageGuidelinesUrl : l’URL d’une page dans laquelle vous pouvez expliquer les différentes options de classification. Un lien vers cette page apparaît dans le formulaire de création de site et dans l’en-tête de chaque site classifié.
- ClassificationList : liste de valeurs séparées par des virgules pour la liste d’options de classification de site.
- DefaultClassification : la valeur par défaut pour la classification de site.
Activer la classification de site avec la bibliothèque principale PnP
Une autre option pour laquelle vous devez activer la fonctionnalité de classification de site est d’exploiter la bibliothèque principale PnP, qui fournit quelques méthodes d’extension pour gérer la classification en code C#.
Par exemple, pour activer la classification de site, vous pouvez écrire le code C# comme suit :
// 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");
}
Mettre à jour ou supprimer la classification de site dans votre client
À l’instar de l’activation de la classification de site, il est possible de mettre à jour ou de supprimer le paramètre à l’aide de PowerShell ou la bibliothèque principale PnP.
Mettre à jour ou supprimer la classification de site avec PowerShell
Si vous devez mettre à jour les paramètres de classification de site ultérieurement, vous pouvez utiliser l’extrait de code PowerShell suivant.
# 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
Remarque
Cela peut prendre une heure ou plus pour mettre les paramètres à jour dans l’interface utilisateur Office 365.
Comme vous le voyez, il vous suffit d’effectuer une recherche pour le paramètre de répertoire avec une valeur DisplayName de Group.Unified, puis de mettre à jour ses valeurs de paramètre et d’appliquer les modifications à l’aide de la cmdlet Set-AzureADDirectorySetting.
Pour supprimer une classification de site, vous pouvez utiliser la cmdlet Remove-AzureADDirectorySetting, comme dans l’extrait de code suivant.
# Delete settings
$currentSettings = Get-AzureADDirectorySetting | where { $_.DisplayName -eq "Group.Unified" }
Remove-AzureADDirectorySetting -Id $currentSettings.Id
Mettre à jour ou supprimer la classification de site avec la bibliothèque principale PnP
Une autre option possible consiste à utiliser la bibliothèque principale PnP.
Par exemple, pour mettre à jour la classification de site, vous pouvez écrire le code C# comme suit :
// 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");
}
Par ailleurs, pour désactiver et supprimer les paramètres de classification de site, vous pouvez utiliser un extrait de code comme suit :
// 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);
}
Gérer la classification d’un site
La valeur de classification d’un site peut être consultée ou mise à jour ultérieurement à l’aide de l’interface utilisateur de SharePoint Online, comme indiqué dans la figure suivante, en modifiant les paramètres Informations sur le site.
Lire la classification d’un site par programme
Du point de vue du développeur, vous pouvez utiliser CSOM et l’API REST de SharePoint Online pour lire et écrire la valeur de classification d’un site spécifique. En réalité, chaque collection de sites SharePoint Online dispose de la propriété Classification que vous pouvez utiliser pour lire la classification de site.
Voici un extrait de code PowerShell pour ce faire :
# 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
Si vous voulez lire la valeur de classification de site à l’aide de REST, par exemple dans un composant WebPart côté client SharePoint Framework, vous pouvez utiliser le point de terminaison REST suivant :
https://[tenant].sharepoint.com/sites/[modernsite]/_api/site/Classification
En fonction de la valeur de classification d’un site, vous pouvez définir des règles de stratégie personnalisée et d’automatisation.
Dans la bibliothèque principale PnP, il existe une méthode d’extension pour l’objet Site de CSOM qui permet de lire facilement la valeur de classification d’un site. Dans l’extrait de code suivant, vous pouvez découvrir comment exploiter cette méthode d’extension.
// 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();
}
Mettre à jour la classification d’un site par programme
Si votre cible est un site de communication « moderne », vous pouvez également utiliser la propriété Classification de CSOM pour mettre à jour la valeur.
Si votre cible est un site d’équipe « moderne » et que vous voulez mettre à jour la valeur de classification, vous devez utiliser Microsoft Graph, car la propriété Classification de CSOM réplique simplement la valeur de la propriété Classification du groupe Microsoft 365.
Remarque
Vous trouverez davantage d’informations sur la mise à jour d’un groupe Microsoft 365 à l’aide de Microsoft Graph dans le document Groupe de mise à jour.
Pour faciliter la mise à jour de la classification d’un site, il existe une méthode d’extension dans la bibliothèque principale PnP qui applique le bon comportement pour vous, en fonction du type de site « moderne ». Dans l’extrait de code suivant, vous pouvez voir comment l’utiliser.
// 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();
}