Weboldal keresés

A SharePoint Online dokumentumokhoz rendelt érzékenységi címkék jelentése


A SharePoint Online-dokumentumok érzékenységi címkeinformációinak lekérése

2022 júliusában írtam arról, hogy a Graph API-k segítségével jelentést készíthet a SharePoint Online webhelyen tárolt fájlokról. Szórakoztató projekt volt, és sokat tanultam a SharePoint Online-ban történő navigálásról a Graph-kérésekkel olyan fogalmak használatával, mint a meghajtók és a meghajtóelemek. A szkriptet gyakran használom jelentések generálására, így nyertem valamit a gyakorlatból.

Egy dolgot nem tudtam bejelenteni, hogy a jelentett fájlokon van-e érzékenységi címkék. Korábban készítettem szkripteket az érzékenységi címkével ellátott fájlok lekérésére (ez a példa lehetőséget kínál az érzékenységi címkékkel ellátott fájlok visszafejtésére az Unlock-SPOSensitivityLabelEncryptedFile parancsmag használatával), ahol az alábbihoz hasonló kérés lekéri a szükséges információk:

$Uri = "https://graph.microsoft.com/v1.0/sites/$($Siteid)/lists/Documents/Drive/Items/$($DriveId)/children?`$select=sensitivitylabel,weburl,name"} 
[array]$Files = (Invoke-RestMethod -Uri $URI -Headers $Headers -Method Get -ContentType "application/json")

Folytathattam volna ezen az úton az érzékenységi címke információinak lekéréséhez, de úgy döntöttem, hogy az új extractSensitivityLabels API-t használom. A nagy különbség ezzel az API-val az, hogy amikor használja, az API frissíti „egy meghajtóelem metaadatait a hozzárendelt címke legfrissebb részleteivel”. Amint látni fogjuk, az API ezen aspektusa váratlan mellékhatásokkal járhat.

Ezenkívül az API képes kezelni „egy vagy több meghajtóelemhez rendelt érzékenységi címkét”. Nem tudtam, hogy a SharePoint Online-dokumentumoknak több érzékenységi címkéje is lehet, de úgy tűnik, igen, ha egy dokumentum átkerül az egyik bérlőtől a másikhoz, és mindegyik bérlőtől címkéket halmoz fel. Ha azonban a felhasználó titkosított címkét alkalmaz, a dokumentum csak ezt a címkét tudja tárolni.

A Quest Microsoft Platform migrációs tervezése és konszolidációja

Változások az érzékenységi címke adatok lekérése érdekében

Az API teszteléséhez hozzáadtam néhány kódot az eredeti szkriptben található UnpackFilesRecursively függvényhez (elérhető a GitHubból). Ha ki szeretné próbálni a szkriptet, töltse le a szkriptet, és illessze be a következő kódot az eredeti UnpackFilesRecursively függvény helyére:

Function UnpackFilesRecursively {
# Unpack set of items (files and folders)
param (
        [parameter(Mandatory = $true)]
        $Items, # Items to unpack
	
		[parameter(Mandatory = $true)]
        $SiteUri, # Base site URI
		
		[parameter(Mandatory = $true)]
        $FolderPath, # Folder path
		
        [parameter(Mandatory = $true)]
        $SiteFiles,
		
		[parameter(Mandatory = $false)]
		[bool]$IsNextLink
    )

  # Sensitivity label document types
  [array]$ValidDocumentTypes = "docx", "pptx", "xlsx", "pdf"
  # Find sub-folders that we need to check for files
  [array]$Folders = $Items.Value | Where-Object {$_.Folder.ChildCount -gt 0 }
  # And any files in the folder
  [array]$Files = $Items.Value | Where-Object {$_.Folder.ChildCount -eq $Null}
  
  $before = $SiteFiles.count
  
  # Report the files
  ForEach ($D in $Files) {
    $LabelName = $Null
    $FileSize = FormatFileSize $D.Size
    # Check Sensitivity label
    $Type = $D.Name.Split(".")[1]
    If ($Type -in $ValidDocumentTypes) { 
     # Write-Host "Processing filename:" $D.Name
      $Uri = ("https://graph.microsoft.com/beta/sites/{0}/drive/items/{1}/extractSensitivityLabels" -f $Site.Id, $D.id)
      Try {
         $LabelsInfo = Invoke-MgGraphRequest -Uri $Uri -Method POST }
      Catch {
         Write-Host ("Failure reading data from file {0}" -f $D.Name) 
         $LabelsInfo = $Null
      }
      # Resolve sensitivity label identifier if one is found to find label name
      If ($LabelsInfo.labels.sensitivityLabelId) { 
      #  Write-Host "Label Id" $LabelsInfo.labels.sensitivityLabelId 
        $LabelName = $LabelsHash[$LabelsInfo.labels.sensitivityLabelId ]
     } # End if Label data
    } # End if type
    $ReportLine  = [PSCustomObject] @{   
        FileName            = $D.Name
        Folder              = $FolderPath
        Author              = $D.createdby.user.displayname
        Created             = $D.createdDateTime
        Modified            = $D.lastModifiedDateTime
        Size                = $FileSize
        'Sensitivity Label' = $LabelName
        Uri                 = $D.WebUrl 
        Id                  = $D.Id}
     $SiteFiles.Add($ReportLine) 
  } # End If

  $NextLink = $Items."@odata.nextLink"
  $Uri = $Items."@odata.nextLink"
  While ($NextLink) { 
    $MoreData = Invoke-MgGraphRequest -Uri $Uri -Method Get
    UnpackFilesRecursively -Items $MoreData -SiteUri $SiteUri -FolderPath $FolderPath -SiteFiles $SiteFiles -IsNextLink $true
  
    $NextLink = $MoreData."@odata.nextLink"
    $Uri = $MoreData."@odata.nextLink" 
  } # End While
  
  $count = $SiteFiles.count - $before
  if (-Not $IsNextLink) {
    Write-Host "  $FolderPath ($count)"
  }
  
  # Report the files in each sub-folder
  ForEach ($Folder in $Folders) {
	$NewFolderPath = $FolderPath + "/" + $Folder.Name
	$Uri = $SiteUri + "/" + $Folder.parentReference.path + "/" + $Folder.Name + ":/children"
	$SubFolderData = Invoke-MgGraphRequest -Uri $Uri -Method Get
    UnpackFilesRecursively -Items $SubFolderData -SiteUri $SiteUri -FolderPath $NewFolderPath -SiteFiles $SiteFiles -IsNextLink $IsNextLink
  } # End Foreach Folders
}

Láthatja, hogy a szkript deklarálja a fájlkiterjesztések készletét, és ellenőrzi az érzékenységi címkéket. Hozzáadtam a Word, a PowerPoint, az Excel és a PDF kiterjesztéseit a tömbhöz. Idővel, mivel a Microsoft Information Protection további fájltípusokat is támogat, a fájlok kiterjesztései hozzáadhatók.

Az érzékenységi címke adatok értelmezése

A fájlhoz visszaadott információ így néz ki:

Name                           Value
----                           -----
tenantId                       a662313f-14fc-43a2-9a7a-d2e27f4f3478
assignmentMethod               standard
sensitivityLabelId             1b070e6f-4b3c-4534-95c4-08335a5ca610

Nem mindenki beszél folyékonyan a GUID-ot, ezért az érzékenységi címke azonosítójának a címke nevére való értelmezéséhez létrehozunk egy hash táblát a címkeazonosítók és a szkript által kikereshető nevek tárolására. Ezt a kódot a szkript elején kell futtatni:

Connect-IPPSSession
[Array]$LabelData = Get-Label | Select-Object ImmutableId, DisplayName
$Global:LabelsHash = @{}
ForEach ($L in $LabelData) {$LabelsHash.Add([string]$L.ImmutableId,[string]$L.DisplayName) }

Minden nagyon szépen működik (1. ábra), azzal a figyelmeztetéssel, hogy a szkript mostantól minden támogatott fájltípusú dokumentumhoz további Graph kérést ad. Ez elkerülhetetlenül lelassítja a feldolgozást. Futtattam a szkriptet több ezer fájlt tároló dokumentumkönyvtárak ellen, és a teljesítmény nem volt elfogadhatatlan. Egy nagyon nagy dokumentum (például egy 1400 oldalas, 38 MB-os Word-dokumentum) címkeinformációinak lekérése eltarthat egy másodpercig, de a kisebb fájlok nem okoznak nagy késést.

Nem egyezik a dokumentum

Amint fentebb megjegyeztük, volt egy váratlan mellékhatás. Mivel az API frissíti a SharePoint webhelyet a legfrissebb címkemetaadatokkal, a szkriptnek egy nagy dokumentumtáron való futtatása miatt tíz dokumentum eltérési értesítés érkezett egymás után. A magyarázat egyszerű volt: minden érzékenységi címkének van prioritási sorrendje. Ha egy magas prioritású címkével ellátott dokumentumot helyez el egy alacsonyabb prioritású (tárolókezelési) címkével ellátott webhelyre, akkor eltérés lép fel. Esetemben a dokumentumokhoz rendelt érzékenységi címkék prioritása megváltozott az eredeti hozzárendelésük óta, és a dokumentumok most magasabb prioritású címkét kaptak, mint a webhely.

Adatkezelési jelentések

A Microsoft Syntex-SharePoint Advanced Management licenc egyik előnye, hogy a rendszergazdák a SharePoint Online felügyeleti központon keresztül érhetik el az adatkezelési jelentéseket (2. ábra).

Az adatkezelési jelentések semmi különös, és semmiképpen sem jelentenek jó okot a haladó felügyeleti licenc megvásárlására. Sokkal jobb munkát végezhet saját maga a PowerShell segítségével, beleértve a kimenetet (a PSWriteHTML modullal) vagy az Excelbe (az ImportExcel modullal). Ha érdekli a Microsoft Syntex-SharePoint Advanced Management licenc, összpontosítson olyan funkciókra, mint például a Teams Meeting felvételei letöltésének blokkolása. boldogabb leszel.

Következő megállás, érzékenységi címkék hozzárendelése Graph API-val

A SharePoint Online dokumentumok érzékenységi címkéinek lekérésére szolgáló API mellett az assignSensitivityLabel Graph API is elérhető érzékenységi címkék dokumentumokhoz rendeléséhez. A probléma az, hogy ez az API mért és védett. A mért érték azt jelenti, hogy az Azure-előfizetésen keresztül történő használatáért fizet. A védett azt jelenti, hogy a Microsoftnak hozzájárulását kell adnia ahhoz, hogy egy alkalmazás használja az API-t. Engedélyt kértem, és felkészítettem az Azure-t a díjak elfogadására. Miután a Microsoft megadja az OK-t, beszámolok az API használatával az érzékenységi címkék hozzárendelésére.

Kapcsolódó cikkek