共用方式為


適用於 SharePoint Server 的 GDPR

適用於:

  • SharePoint Server 2013
  • SharePoint Server 2016
  • SharePoint Server 2019
  • SharePoint Server 訂閱版本

在保護個人資訊時,我們建議下列事項:

使用者產生的內容

針對 SharePoint Server 網站和文件庫中使用者產生的內容,基本建議做法是:

針對檔案共用、SharePoint 網站及文件庫,建議做法包括下列步驟:

  1. 安裝及設定 Azure 資訊保護掃描器。

    • 決定要使用哪個機密資料類型。

    • 指定要使用的 SharePoint 網站。

  2. 完成探索循環。

    • 在探索模式中執行掃描器,並且驗證結果。

    • 視需要最佳化條件和機密資訊類型。

    • 評估自動套用標籤的預期影響。

  3. 執行 Azure 資訊保護掃描器以將標籤套用至符合資格的文件

  4. 針對保護:

    a. 設定 Exchange 資料外洩防護規則,保護具有所需標籤的文件。

    b. 請確定許可權可限制可存取檔案的人員。

    c. 針對 SharePoint,請使用程式庫的 IRM 保護。

  5. 針對監視,整合 Windows Server 記錄與 SIEM 工具。

    a. 若要尋找資料主體要求的個人資料,請使用搜尋中心或電子檔探索。

將標籤套用至敏感性資料時,請務必使用未設定保護的標籤。 保護包括加密,可防止服務偵測檔案中的敏感性資料。

如需使用 Azure 資訊保護掃描器來尋找及標示個人資料的詳細資訊,請參閱Microsoft GDPR 資料探索工具組 (https://aka.ms/gdprpartners) 。

如需設定條件的掃描器,以及使用Microsoft Purview 資料外洩防護 (DLP) 敏感性資訊類型的詳細資訊,請參閱如何設定 Azure 資訊保護自動和建議分類的條件。 請注意,新的Office 365敏感性資訊類型將無法立即與掃描器搭配使用,而且自訂敏感性資訊類型無法與掃描器搭配使用。

移除 Office 檔案中的個人資訊

您必須手動從儲存在 SharePoint 文件庫中的 Office 檔案中移除個人資訊 (,例如Word檔) 中的中繼資料或批註。 依照下列步驟執行:

  1. 從 SharePoint Server 下載一份文件到本機磁碟。

  2. 刪除 SharePoint 文件庫中的文件。

  3. 執行透過檢查文件來移除隱藏的資料和個人資訊中的步驟。

  4. 將文件重新上傳至 SharePoint 文件庫。

遙測和記錄檔

ULS 記錄

整合記錄服務 (ULS) 和 SharePoint Server 中的使用量記錄會追蹤各種系統功能,而且可以包含使用者資訊。 ULS 記錄和使用量記錄是文字檔,可以使用各種搜尋工具進行搜尋。 Merge-SPLogFile PowerShell Cmdlet可讓您從伺服器陣列中多部伺服器上的 ULS 記錄傳回記錄。

請考慮將記錄保留原則設定為商務用途所需的最小值。 如需在 SharePoint Server 中設定記錄的相關資訊,請參閱 在 SharePoint Server 中設定診斷記錄

請注意,有些系統事件也會記錄到 Windows 事件記錄。

使用情況資料庫

SharePoint Server Usage 資料庫 (預設名稱WSS_Logging) 包含在 ULS 記錄中找到的資訊子集。 此資料庫中的資料保留期上限為 30 天。 建議您在商務需求允許的最短持續時間內進行設定。 如需詳細資訊,請參閱在 SharePoint Server 中設定診斷記錄

搜尋查詢歷程記錄和使用情況記錄包含使用者名稱的參照。

查詢歷程記錄和最愛的查詢

在 SharePoint Server 中,查詢歷程記錄和「我的最愛」查詢會在 365 天后自動到期。 如果使用者離開您的組織,可以使用下列步驟,從查詢歷程記錄中移除使用者名稱的參考。

下列 SQL 查詢適用於 SharePoint Server,並讓您能夠:

  • 匯出使用者的查詢歷程記錄或最愛的查詢

  • 移除查詢歷程記錄中使用者名稱的參照

注意事項

通常不支援將預存程式新增至 SharePoint Server 資料庫。 Microsoft 會對此原則提出例外狀況,以支援將本文所述的預存程式新增至 SharePoint Server 資料庫並加以執行。

匯出特定日期後的使用者查詢

使用下列程式從 Link Store 查詢記錄資料表匯出查詢,自 起 @StartTime 由 @UserName 執行。

[In dbo].[LinkStore_<ID>]:
CREATE PROCEDURE proc_MSS_GetQueryTermsForUser 
( 
    @UserName nvarchar(256), 
    @StartTime datetime 
) 
AS 
BEGIN 
    SET NOCOUNT ON; 
    SELECT searchTime, queryString 
    FROM 
        dbo.MSSQLogPageImpressionQuery 
    WITH 
        (NOLOCK) 
    WHERE 
        userName = @UserName AND 
        searchTime > @StartTime 
END 
GO 

匯出使用者在過去 100 天的查詢

DECLARE @FROMDATE datetime 
SET @FROMDATE = DATEADD(day, -100, GETUTCDATE()) 
EXECUTE proc_MSS_GetQueryTermsForUser '0#.w|domain\username', @FROMDATE 

匯出使用者最愛的查詢

使用下列程式,從 自 執行的搜尋管理員 DB 個人結果資料表 @UserName<DateTime> 匯出使用者最愛的查詢。

In [dbo].[Search_<ID>]:
CREATE PROCEDURE proc_MSS_GetPersonalFavoriteQueries 
( 
    @UserName nvarchar(256), 
    @SearchTime datetime 
) 
AS 
BEGIN 
    SET NOCOUNT ON; 
    SELECT max(queries.SearchTime) as SearchTime, 
           max(queries.querystring) as queryString, 
           max(url.url) as URL 
    FROM MSSQLogOwner owners WITH(NOLOCK) 
    JOIN MSSQLogPersonalResults results WITH(NOLOCK) on owners.OwnerId = results.OwnerId 
    JOIN MSSQLogUrl url WITH(NOLOCK) on results.ClickedUrlId = url.urlId 
    JOIN MSSQLogPersonalQueries queries WITH(NOLOCK) on results.OwnerId = queries.OwnerId 
    WHERE queries.SearchTime > @SearchTime 
        AND queries.UserName = @UserName 
        GROUP BY queries.QueryString,url.url 
END 
GO 

匯出使用者在過去 100 天的最愛查詢

DECLARE @FROMDATE datetime 
SET @FROMDATE = DATEADD(day, -100, GETUTCDATE()) 
EXECUTE proc_MSS_GetPersonalFavoriteQueries '0#.w|domain\username', @FROMDATE 

移除超過 X 天的使用者名稱參照

使用下列程式,從連結存放區查詢記錄資料表中移除 所有 超過 @Days 舊的使用者名稱參考。 此程式只會移除回溯時間的參考,直到到達 為止 @LastCleanupTime 。

In [dbo].[LinksStore_<ID>]:  
CREATE PROCEDURE proc_MSS_QLog_Cleanup_Users 
( 
    @LastCleanupTime datetime, 
    @Days int 
) 
AS 
BEGIN 
    DECLARE @TooOld datetime 
    SET @TooOld = DATEADD(day, -@Days, GETUTCDATE()) 
    DECLARE @FromLast datetime 
    SET @FromLast = DATEADD(day, -@Days, @LastCleanupTime) 
    BEGIN TRANSACTION 
         UPDATE MSSQLogPageImpressionQuery 
    SET userName = 'NA' 
    WHERE @FromLast <= searchTime AND searchTime < @TooOld 
    UPDATE MSSQLogO14PageClick 
    SET userName = 'NA' 
    WHERE @FromLast <= searchTime AND searchTime < @TooOld 
    COMMIT TRANSACTION 
END 
GO 

移除超過 X 天的特定使用者名稱參照

使用下列程式,從連結存放區查詢記錄資料表中移除 特定 使用者名稱的參考,其中的參考超過 @Days 舊值。 此程式只會移除回溯時間的參考,直到到達 為止 @LastCleanupTime 。

In [dbo].[LinksStore_<ID>]:
CREATE PROCEDURE proc_MSS_QLog_Cleanup_Users 
( 
    @UserName nvarchar(256),
    @LastCleanupTime datetime, 
    @Days int 
) 
AS 
BEGIN 
    DECLARE @TooOld datetime 
    SET @TooOld = DATEADD(day, -@Days, GETUTCDATE()) 
    DECLARE @FromLast datetime 
    SET @FromLast = DATEADD(day, -@Days, @LastCleanupTime) 
    BEGIN TRANSACTION 
         UPDATE MSSQLogPageImpressionQuery 
    SET userName = 'NA' 
    WHERE @FromLast <= searchTime AND searchTime < @TooOld AND userName = @UserName
    UPDATE MSSQLogO14PageClick 
    SET userName = 'NA' 
    WHERE @FromLast <= searchTime AND searchTime < @TooOld AND userName = @UserName
    COMMIT TRANSACTION 
END 
GO 

移除查詢歷程記錄中自某一天起最多 30 天的所有使用者名稱的參照

EXECUTE proc_MSS_QLog_Cleanup_Users '1-1-2017', 30 

刪除使用情況記錄

SharePoint Server 會在 3 年後自動刪除使用量記錄。 您可以使用下列程式手動刪除這類記錄:

刪除與已刪除文件相關聯的所有使用情況記錄:

  1. 確定您已安裝最新的 SharePoint 更新。 

  2. 啟動 SharePoint 管理命令介面。

  3. 停止並清除 UsageAnalytics 分析:

    $tj = Get-SPTimerJob -Type Microsoft.Office.Server.Search.Analytics.UsageAnalyticsJobDefinition 
    $tj.DisableTimerjobSchedule()
    $tj.StopAnalysis() 
    $tj.ClearAnalysis() 
    $tj.EnableTimerjobSchedule()
    
  4. 等待分析重新啟動 (最多可能需要 24 小時)。 

  5. 在下一次執行分析時,它會從 Analytics Reporting 資料庫傾印所有記錄。 對於具有許多專案的大型資料庫,此完整傾印可能需要一些時間。

  6. 等候 10 天。 分析會每天執行,而與已刪除檔相關聯的記錄將會在 10^th^ 執行之後移除。 如果需要刪除許多記錄,此執行可能需要比平常更長的時間。 

SharePoint Server 2010 中的個人資訊和搜尋

FAST Search Server 2010 for SharePoint

除了將檔案儲存在索引中之外,FAST Search Server 2010 Add-On 也會以稱為 FixML 的中繼格式儲存檔案。 FiXML 檔案會定期壓縮,預設為每天晚上 3 點到上午 5 點之間。 壓縮會自動從 FiXML 檔案中移除已刪除的檔案。 若要確保及時移除屬於已刪除使用者或檔的資訊,請確定一律啟用壓縮。

混合式搜尋解決方案的建議動作與在 SharePoint Server 或 SharePoint Online 中搜尋相同。 混合式搜尋解決方案有兩種:

雲端混合式搜尋解決方案 -使用 SharePoint 的雲端混合式搜尋解決方案,您可以在Office 365的搜尋索引中為所有編目內容編制索引,包括內部部署內容。 當使用者在Office 365中查詢您的搜尋索引時,他們會從內部部署和Office 365內容取得搜尋結果。 從 SharePoint Server 環境中刪除檔時,也會從Office 365中的搜尋索引中刪除檔。 深入瞭解雲端混合式搜尋解決方案 ,以及 搜尋元件和資料庫如何在雲端混合式搜尋中互動 ,以進一步瞭解 GDPR 如何影響混合式環境。

混合式同盟搜尋解決方案 -透過混合式同盟搜尋解決方案,您可以在 SharePoint Server 中使用您的索引,並在 Office 365 中使用您的索引。 SharePoint Server 和 SharePoint Online 搜尋服務可以查詢其他環境中的搜尋索引,並傳回同盟結果。 當使用者在搜尋中心搜尋時,搜尋結果來自 SharePoint Server 中的搜尋索引和 Office 365 中的搜尋索引。 深入瞭解混合式同盟搜尋解決方案 ,以進一步瞭解 GDPR 如何影響混合式環境。

內部部署到雲端的移轉

將資料從 SharePoint Server 移轉至 SharePoint Online 時,重複的資料可能會同時存在於這兩個位置。 如果您有需要在移轉中刪除的資料,建議您先完成移轉,然後從這兩個位置刪除資料。 您可以查詢資料以從任一位置匯出。

使用者設定檔資料

User Profile Service 允許從各種外部來源匯入設定檔資料。 這類使用者設定檔資料的查詢和更新應該在資料主控的系統中處理。 如果您更新外部系統,請務必再次同步處理 SharePoint Server 中的使用者設定檔。

遵循下列基本步驟,從 SharePoint Server 使用者設定檔中移除使用者的個人資訊:

  1. 從任何饋送至 SharePoint Server 使用者設定檔的外部系統中移除使用者資訊。 如果您使用目錄同步處理,則必須從內部部署的 Active Directory環境中移除使用者。

  2. 在 SharePoint Server 上執行設定檔同步處理

  3. 從 SharePoint Server 刪除設定檔。 完成此動作之後,SharePoint Server 會在 30 天內從使用者設定檔資料庫中完全移除設定檔。 將會刪除使用者的設定檔頁面面和個人網站。

刪除使用者的設定檔之後,某些有限的資訊 (例如使用者識別碼) 可能仍會記錄在使用者流覽過的網站集合中。 如果您選擇從指定的網站集合中刪除此資料,可以使用 CSOM 來完成此作業。 以下提供範例腳本:

$username = "<admin@company.sharepoint.com>"
$password = "password"
$url = "<https://site.sharepoint.com>"
$securePassword = ConvertTo-SecureString $Password -AsPlainText -Force

# the path here might need to change if you use the SharePoint Server Client Components SDK in a different location.
Add-Type -Path "$env:CommonProgramFiles\microsoft shared\Web Server Extensions\16\ISAPI\Microsoft.SharePoint.Client.dll"
Add-Type -Path "$env:CommonProgramFiles\microsoft shared\Web Server Extensions\16\ISAPI\Microsoft.SharePoint.Client.Runtime.dll"

# connect/authenticate to SharePoint Online and get ClientContext object.
$clientContext = New-Object Microsoft.SharePoint.Client.ClientContext($url)
$credentials = New-Object Microsoft.SharePoint.Client.SharePointOnlineCredentials($username, $securePassword)
$clientContext.Credentials = $credentials
if (!$clientContext.ServerObjectIsNull.Value)
{
    Write-Host "Connected to SharePoint Online site: '$Url'" -ForegroundColor Green
}

# Get user
$user = $clientContext.Web.SiteUsers.GetByLoginName("i:0#.f|membership|user@company.sharepoint.com")

# Redact user
$user.Email = "Redacted"
$user.Title = "Redacted"
$user.Update()
$clientContext.Load($user)
$clientContext.ExecuteQuery()

# Get users
$users = $clientContext.Web.SiteUsers

# Remove user from site
$users.RemoveById($user.Id)
$clientContext.Load($users)
$clientContext.ExecuteQuery()