Power BI 與企業資料安全

微軟技術棧發表於2022-03-15

本期的微軟 MVP 實驗室研究員 Davis Zhang,微軟 MVP,MCSE,官方文件貢獻者之一,專注於 Power Platform 及 Power BI 全域性技術棧。下文將節選 Power BI 中涉及資料保護的幾個核心技術點(BYOK, OLS 與 DLP)與大家進行分享。

前言

資料不僅是企業的資產,也是企業的命脈,其重要性不言而喻。而隨著越來越多的企業採用了 Power BI 作為其商務智慧解決方案之一,使用者對微軟BI體系中資料的安全與合規性的要求也愈加嚴格。因文章篇幅問題,下文將以 PBI 及 M365 管理員的角度,節選 Power BI 平臺中較為核心的資料安全問題,即“資料寄存,資料呈現及資料匯出”幾個方面進行圖文講解。

PBI 資料安全之資料寄存

當 Power BI 資料集釋出到 PBI Service 後,其資料實際上儲存在 Azure Blob Storage, 在預設情況下,資料加密由 Microsoft 託管,而金鑰的值,輪換規則以及加密方式則不受企業或組織的控制。儘管 Microsoft 使用了足夠強大的256位 AES 加密演算法,但在一些企業嚴苛的資訊保安政策及合規部門嚴謹的審查工作面前,該說辭恐怕無濟於事。為了使組織掌控金鑰並使資料加密方式與輪換規則符合其政策,在 Power BI 實施BYOK(Bring your own Key)成為了唯一方案。

▌在 PBI 實施 BYOK

注意:

  • BYOK 目前僅適用於 PBI Premium (包括Capacity與Per User)
  • BYOK 主要支援以關係型資料庫位資料來源的 Import 資料集

1.登入 Azure 建立 Key Vault, 並分配 Unwrap Key 及 Wrap Key 許可權

2.在 Access Policy 新增你要用於 BYOK 的 Power BI 工作區管理員賬戶以及 Power BI Service 服務主體

3.接下來按如下配置建立金鑰

4.現在,將上一步建立好的金鑰應用到PBI容量,目前沒有介面可供設定,需要在 PowerShell 中鍵入命令


--安裝 Cmdlets(已裝跳過)
Install-Module -Name MicrosoftPowerBIMgmt
--登入
Connect-PowerBIServiceAccount 
--在整個PBI租戶中啟用BYOK
Add-PowerBIEncryptionKey -Name '<輸入Key名稱>' -KeyVaultKeyUri '<輸入Key URI>'
--注:其中 Key URI可在 Azure Key Vault 中查詢複製
--獲取容量 ID
Get-PowerBICapacity -Scope Individual
--最後,為該容量設定 BYOK
Set-PowerBICapacityEncryptionKey -CapacityId <輸入容量ID> -KeyName '<輸入Key名稱>'

至此,BYOK 即設定完成,輸入以下命令檢驗:


Get-PowerBIEncryptionKey

如圖顯示即配置成功:

需要注意的點是,目前 BYOK 的實施是在整個容量層面的,而非 Workspace 層面的。一旦為容量設定了 BYOK,則該容量下所有的工作區都繼承容量的 BYOK 設定。

5.祕鑰輪換,可使用如下命令,若要實現定期輪換,可將其配置到已有應用程式,或直接使用 Azure Key Vault 中 “Rotation Policy” 預覽功能


Switch-PowerBIEncryptionKey -Name '<輸入Key名稱>' -KeyVaultKeyUri '<輸入新的Key URI>'

此處需要注意,無論是新版祕鑰還是當前祕鑰,都必須處於啟用狀態,否則將遇到如下報錯。確保祕鑰都啟用後,問題解決,如圖:

PBI 資料安全之資料呈現

資料呈現階段的安全,顧名思義,是指使用者在訪問 PBI 報表時,如何基於不同的自定義角色,給予不同使用者或不同組設定對資料不同的訪問許可權,雖然我們可以在工作區決定是否為某使用者授予 Viewer 角色,但無法控制該使用者能看哪些資料以及不能看哪些資料。

幸運的是,在 Power BI 匯入模型中 ,微軟提供了兩種資料安全設定,RLS 和 OLS, 前者即 PBI 使用者所熟悉的行級別安全性,其可以基於角色對不同表不同欄位利用DAX定義過濾規則,也可以結合 USERPRINCIPALNAME() 動態定義訪客許可權(由於資料眾多,此處不展開);而後者OLS (Object Level Security) 則是針對欄位本身設定的安全性,它可基於角色控制不同欄位(包括欄位名)對特定使用者是否可見,我們可以形象理解為“列級別安全性”。

▌在 PBI 實施 OLS

與 RLS 相同,OLS 同樣要先在 PBID 建立角色,但具體表或欄位可見性的安全控制則需要在外部工具 tabular editor 中完成。要對指定角色隱藏欄位,只需使用該工具連線到模型後,選擇需要設定的表或欄位,將 OLS 中對應角色的值設定為 None 即可,如圖:

以下是關於 OLS 需要注意的點:

  1. 如果對某角色隱藏的表或欄位在前端報表中有使用,則該角色檢視報表時,與之相關的所有視覺化都不可用。
  2. 雖然無法針對特定度量值實施 OLS,但若度量值所引用的欄位包含隱藏的欄位,則該度量值對指定角色依然不可見。

下圖展示的簡單例子很好反映了上述兩點。由於對角色“User”在欄位“OrderQty”的 OLS 值設為了 None,因此左側的視覺化完全不可用,右側的表由於未使用該欄位,也未使用任何引用該欄位的度量值,因此顯示不受影響。

由於受底層技術限制,當前 PBID 還無法做到在同一個視覺化內,在隱藏特定欄位或值的同時不影響其他欄位或值的展現,因此,OLS 的應用價值主要體現在了使用者自助分析方面。

PBI 資料安全之資料防護

通過在工作區指定角色配合 RLS 以及 OLS,我們已經實現了對 PBI 資料內容的許可權控制,但我們無法控制的是當資料從 Power BI 匯出後,如何持續地保護資料,以及,如何對 PBI 資料進行監控以使得每當探測到敏感資料時,可以及時向管理員發出警報。

應對此情況的解決方案是對 Power BI 實施 DLP(Data Lose Prevention) 。它包括以下兩個階段:

1.Microsoft 365 管理員可以為 Power BI 建立和定義敏感度標籤,不同的敏感度標籤可以設定不同的許可權定義,PBI 各工作區的管理員可以據情況為不同的資料集,資料流以及報表設定對應敏感度標籤,以實現敏感資料即使離開了 Power BI,也能得到保護。引用 MS 文件的話講:

When labeled data leaves Power BI, either via export toExcel, PowerPoint, PDF, or .pbix files, or via other supported export scenariossuch as Analyze in Excel or live connection PivotTables in Excel, Power BIautomatically applies the label to the exported file and protects it accordingto the label’s file encryption settings. This way your sensitive data canremain protected, even when it leaves Power BI.

2.Microsoft 365 管理員可以為 Power BI 建立 DLP 策略,該策略可以基於 PBI 內容的敏感度標籤對敏感資料進行監控(該功能尚處於預覽階段)。

注:實施 DLP 需要 Microsoft 365 E5 訂閱

▌在 PBI 實施 DLP

◇ 建立併發布敏感度標籤

1.在 M365 合規中心按下圖建立標籤。

注:如果 Information protection 選項卡不可見,則需要檢查下你的賬戶許可權以及M365 Lisence

2.選擇 Files & emails

3.此步驟,即是決定敏感度標籤應用後的許可權設定,可以新增使用者,安全組甚至域,為他們分配不同的角色。

下圖明確了不同角色的許可權範圍,也可以通過勾選具體項自定義角色的許可權

4.標籤建立完成後,釋出標籤:

注:可以在已有敏感度標籤建立子標籤,子標籤可以在繼承父級的許可權範圍的基礎上對許可權進行進一步定義,這將對大型組織十分有用。

在釋出標籤過程中,可以勾選此項,這將強制 Power BI 開發者在釋出資料集與報表前對其應用敏感度標籤,下文“PBI 敏感度標籤強制實施驗證”部分將展示其效果:

回到 Power BI Service, 釋出的標籤已經可用:

注意:

1.敏感度標籤釋出後,通常不會立即在各個應用中顯示。如下圖1已經說明“It can take up to 24 hours…”,因此,如果沒有在 PBI 看到釋出的標籤,並不一定代表你的設定不成功,只需耐心等待。

2.Power BI 管理員需要在租戶設定中啟用敏感度標籤(見圖2)

                                    (圖1)

                                    (圖2)

◇ 驗證

1.PBI 敏感度標籤強制實施驗證

如下使用者必須先為 PBIX 應用敏感度標籤,才可釋出報表。

2.資料匯出保護效果驗證

如圖,我已為資料集,報表以及分頁報表指定了敏感度標籤,其中 HIGH SENSITIVE 只有特定使用者才能檢視匯出的資料。

        【示例1-1】Power BI 報表匯出驗證(使用有許可權的賬戶)

        【示例1-2】Power BI 報表匯出驗證(使用無許可權的賬戶)

        【示例2】Power BI 分頁報表(Paginated Report)匯出驗證

◇ 建立 DLP 策略

DLP 策略在 Power BI 尚為預覽功能,部分特性暫時不支援,如果公測在今年四月,那麼 GA 可能又要往後推,下文僅就策略的建立部分做部分說明。

1.在 M365 合規中心,從 Custom Policy 開始建立:

  1. 選擇 Power BI,DLP 預設應用到整個容量。如果僅希望 DLP 應用在個別工作區,可以輸入對應的 Workspace ID:

  1. 建立 DLP 策略警報觸發規則,可以僅就標記了某特定敏感度標籤的 PBI 內容實施:

  1. 管理員可在此處進行資料監控:

總結

除上述內容外,有關 Power BI 安全性的技術點還有很多,如閘道器安全性,私有連結整合,Azure Log Analytics 整合等等,要逐一講清這些內容,足夠成書了,而國內外關於該領域的研究極少,一些坑,一些 bug,即使搜遍谷歌也難有解決辦法,因此還是要依賴於讀者的耐心探索,並在必要時獲取微軟技術人員的支援。

點選獲取 Power BI 安全性白皮書

相關文章