Azure 中雲端規模分析的資料隱私權

雲端規模分析可讓組織判斷最適合其需求的模式,同時保護多個層級的個人資料。 個人資料是任何可用來識別個人的資料,例如駕駛執照號碼、社會安全號碼、銀行帳戶號碼、護照號碼、電子郵件地址等等。 現今有許多法規可用來保護使用者隱私權。

資料機密性分類配置

分類 描述
公開 任何人都可以存取資料,也可以傳送給任何人。 例如,開啟政府資料。
僅供內部使用。 只有員工可以存取資料,且無法在公司外部傳送。
機密 只有在特定工作需要資料時,才能共用資料。 若沒有保密協定,資料就無法在公司外部傳送。
敏感性 (個人資料) 資料包含私用資訊,此資訊必須遮罩並共用,只有需要知道的時間有限。 資料無法傳送給未經授權的人員或公司外部。
受限制 資料只能與負責保護的具名個人共用。 例如,法律檔或營業秘密。

擷取資料之前,您必須將資料分類為 機密或低於 機密(個人資料)

  • 如果使用者在擴充 或策劃 取得資料資產的存取權,資料可能會排序為 機密或 下方 。 使用者可以檢視所有資料行和資料列。

  • 如果不同使用者可以看到哪些資料行和資料列的限制, 資料可能會排序為 敏感性(個人資料)。

重要

當合併資料時,資料集 可以從 機密或以下 變更 機密(個人資料)。 在資料應該持續的情況下,應該複製到與資料機密分類和上執行緒序一致的個別資料夾。

機密或以下

針對每個上線的資料產品,我們會在擴充和策劃的層、 機密或下方 敏感性(個人資料) 中建立兩個 Data Lake 資料夾,並使用存取控制清單來啟用 Microsoft Azure 目錄 (Microsoft Entra ID) 傳遞驗證。

如果資料應用程式小組將 機密或低於 資料資產上線,則可以將使用者主體名稱和服務主體物件新增至兩個 Microsoft Entra 群組(一個用於讀取/寫入存取,另一個用於唯讀存取)。 這兩個 Microsoft Entra 群組應在上執行緒序期間建立,並在適當的資料產品資料夾中排序,並 針對原始和擴充的資料使用機密或以下 容器。

此模式可讓支援 Microsoft Entra 傳遞驗證的任何計算產品連線到 Data Lake 並驗證登入的使用者。 如果使用者是資料資產的 Microsoft Entra 群組的一部分,他們可以透過 Microsoft Entra 傳遞驗證存取資料。 它可讓群組內的那些使用者讀取整個資料資產,而不需要原則篩選。 接著可以使用適當的記錄和 Microsoft Graph 詳細稽核存取權。

如需資料湖配置的建議,請檢閱 為每個資料登陸區域 布建三個 Azure Data Lake 儲存體 Gen2 帳戶。

注意

計算產品的範例包括使用 Microsoft Entra 傳遞驗證啟用的 Azure Databricks、Azure Synapse Analytics、Apache Spark 和 Azure Synapse SQL 隨選集區。

敏感性資料(個人資料)

對於 敏感性(個人資料) ,企業必須限制使用者可透過原則、資料複製或計算看到的內容。 在此情況下,組織必須考慮將存取控制移至計算層或插入存取控制。 有四個選項可用來保護雲端規模分析中的資料。

範例案例

下列範例說明保護 敏感性(個人資料) 的選項:

資料應用程式會擷取適用于北美洲和歐洲的人力資源(HR)人員資料產品。 使用案例會要求歐洲使用者只查看歐洲人員記錄,並北美洲使用者只查看北美洲人員記錄。 進一步受到限制,因此只有人力資源經理會看到包含薪資資料的資料行。

前兩個選項提供處理 敏感性(個人資料) 的方法,也會將控制權授與整合作業和資料產品小組,以識別和限制存取權。 它可能足以用於小型分析平臺,但原則引擎應該放在具有數百個數據產品的大型企業的資料管理登陸區域中。 原則引擎支援管理、保護及控制的核心方式:

  • 存取資料
  • 管理資料生命週期
  • 內部和外部原則和法規
  • 資料共用原則
  • 識別 敏感性 (個人資料)
  • 關於保護與合規性的深入解析
  • 資料保護報告的原則

一般而言,原則引擎會與 Azure Purview 等資料目錄整合。 Azure Marketplace 具有協力廠商廠商解決方案,有些廠商會與 Azure Synapse 和 Azure Databricks 合作,以加密和解密資訊,同時提供資料列層級和資料行層級安全性。 截至 2022 年 1 月,Azure Purview 已推出公開預覽版,以控制 Blob 和 Azure Data Lake 儲存體 (ADLS) Gen2 中儲存資料的存取權。 請參閱 資料擁有者針對Azure 儲存體的資料集布建(預覽版)。

原則引擎應該使用 Microsoft Entra 群組,將原則套用至資料產品。 任何提供資料隱私權的原則解決方案的期望是權杖化 敏感性(個人資料), 並一律檢查屬性存取控制,讓使用者能夠將他們需要存取的資料行譯譯。

如前所述,若要讓原則引擎成功,請務必將其整合到資料目錄,以及讓 DevOps 使用 REST API 將新資料集上線。 當資料應用程式小組建立讀取資料來源時,它們會註冊在資料目錄中,並協助識別 敏感性(個人資料)。 原則引擎應該匯入定義,並拒絕所有資料存取,直到小組設定其存取原則為止。 這一切應該透過 IT 服務管理解決方案的 REST API 工作流程來完成。

選項 2:機密或低於或機密 (個人資料) 版本

針對分類為 機密(個人資料)的每個資料產品, 都會由其管線建立兩個複本。 其中一個分類為 機密或以下 ,其中已移除所有 機密(個人資料) 資料行,並建立在資料產品的機密或下方 資料夾下 。 另一個複本會針對包含所有敏感性資料的資料產品,在敏感性 (個人資料) 資料夾中建立 。 每個資料夾都會獲指派 Microsoft Entra 讀取器安全性群組和 Microsoft Entra 寫入器安全性群組。 使用 資料存取管理 ,使用者可以要求存取資料產品。

雖然這滿足區分 敏感性(個人資料) 機密或以下 專案,但使用者透過 Active Directory 傳遞驗證授與存取權給 敏感性(個人資料) 將能夠查詢所有資料列。 如果您需要資料列層級安全性,則必須使用 選項 1:原則引擎(建議) 選項 3:Azure SQL 資料庫、SQL 受管理執行個體或 Azure Synapse Analytics SQL 集區

選項 3:Azure SQL 資料庫、SQL 受管理執行個體或 Azure Synapse Analytics SQL 集區

資料應用程式會使用SQL 資料庫、SQL 受管理執行個體或 Azure Synapse Analytics SQL 集區,將資料產品載入支援資料列層級安全性、資料行層級安全性和動態資料遮罩的資料庫。 資料應用程式小組會建立不同的 Microsoft Entra 群組,並指派支援資料敏感度的許可權。

在此案例的使用案例中,資料應用程式小組必須建立下列四個具有唯讀存取權的 Microsoft Entra 群組:

群組 權限
DA-AMERICA-HRMANAGER-R 使用薪資資訊檢視北美洲人力資源人員資料資產
DA-AMERICA-HRGENERAL-R 檢視北美洲沒有薪資資訊的人力資源人員資料資產
DA-EUROPE-HRMANAGER-R 檢視具有 薪資資訊的歐洲人力資源人員資料資產
DA-EUROPE-HRGENERAL-R 檢視不含 薪資資訊的歐洲人力資源人員資料資產

第一層限制將支援 動態資料遮罩 ,以隱藏不具許可權的使用者敏感性資料。 這種方法的其中一個優點是,它可以整合到資料集的上線與 REST API。

第二個層級是新增 資料行層級安全性 ,以限制非 HR 經理查看薪資和資料 列層級安全性 ,以限制歐洲和北美洲小組成員可以看到哪些資料列。

除了透明資料加密之外,安全性層還會 加密資料 行,並在讀取時解密。

資料表可以使用 Apache Spark 連接器提供給 Azure Databricks :SQL Server 和 Azure SQL 資料庫

選項 4:Azure Databricks

選項四是使用 Azure Databricks 來探索 敏感性資料(個人資料)。 使用 Fernet 加密程式庫、使用者定義函式 (UDF)、Databricks 秘密、資料表存取控制和動態檢視函式的組合,有助於加密和解密資料行。

如同部落格文章, 強制執行資料行層級加密並避免資料重複 ,描述:

此程式的第一個步驟是藉由在擷取期間加密資料來保護資料,其中一個可能的解決方案是 Fernet Python 程式庫。 Fernet 使用對稱式加密,此加密是以數個標準密碼編譯基本類型所建置。 此程式庫會在加密 UDF 內使用,可讓我們加密資料框架中的任何指定資料行。 為了儲存加密金鑰,我們使用 Databricks 秘密搭配存取控制,只允許我們的資料擷取程式存取它。 將資料寫入 Delta Lake 資料表之後,將無法讀取未經授權的使用者,持有社會安全號碼、電話號碼、信用卡號碼和其他識別碼等值的個人資料資料行。

一旦寫入並保護敏感性資料,您需要一種方式,讓特殊許可權使用者讀取敏感性資料。 第一件事是建立永久 UDF,以新增至 Databricks 上執行的 Hive 實例。 為了讓 UDF 永久化,它必須以 Scala 撰寫。 幸運的是,Fernet 也有一個 Scala 實作,您可以用於解密的讀取。 此 UDF 也會存取加密寫入中用來執行解密的相同秘密,在此情況下,它會新增至叢集的 Spark 組態。 這需要我們新增特殊許可權和非特殊許可權使用者的叢集存取控制,以控制其金鑰的存取權。 建立 UDF 之後,我們可以在特殊許可權使用者的檢視定義內使用它來查看解密的資料。

使用 動態檢視函式 ,您只能建立一個檢視,並根據其所屬的 Databricks 群組傳回加密或解密的值。

在上述範例中,您會建立兩個動態檢視函式,一個用於北美洲,另一個用於歐洲,並在此 筆記本 中實作加密技術。

北美洲檢視

-- Alias the field 'email' to itself (as 'email') to prevent the
-- permission logic from showing up directly in the column name results.
CREATE VIEW vhr_us AS
SELECT
  emp_id,
  CASE WHEN
    is_member('DA-AMERICA-HRMANAGER-R') THEN udfPIIDecrypt(salary, "${spark.fernet}")
    ELSE 0
  END AS salary,
FROM hr_enriched
where region='US'

歐洲檢視

-- Alias the field 'email' to itself (as 'email') to prevent the
-- permission logic from showing up directly in the column name results.
CREATE VIEW vhr_eu AS
SELECT
  emp_id,
  CASE WHEN
    is_member('DA-EUROPE-HRMANAGER-R') THEN udfPIIDecrypt(salary, "${spark.fernet}")
    ELSE 0
  END AS salary,
FROM hr_enriched
where region='EU'

若要讓其運作,您會在工作區中啟用 Azure Databricks 資料表存取控制 ,並套用下列許可權:

  • DA-AMERICA-HRMANAGER-R 與和 DA-AMERICA-HRGENERAL-R Microsoft Entra 群組檢視的 vhr_us 存取權。
  • DA-EUROPE-HRMANAGER-R 與和 DA-EUROPE-HRGENERAL-R Microsoft Entra 群組檢視的 vhr_eu 存取權。

由於資料行已加密,且無法在機密或以下工作區中 解密, 因此機密或以下 工作區仍然可以使用 Microsoft Entra 傳遞驗證,並允許使用者根據其許可權來探索 Lake。

使用資料表存取的位置,需要存取權的小組會新增至 Azure Databricks 工作區。 Azure Databricks 會使用服務主體對應至 Azure Data Lake 儲存體,但資料會受到 Azure Databricks 資料表存取控制保護。

部署新的資料產品時,DevOps 程式的一部分將需要執行腳本,以在 Azure Databricks 工作區中設定資料表許可權,並將正確的 Microsoft Entra 群組新增至這些許可權。

注意

Azure Databricks 資料表存取控制無法結合 Microsoft Entra 傳遞驗證。 因此,您只能使用一個 Azure Databricks 工作區,並改用資料表存取控制。

受限制的資料

除了實作機密或受限制資料的選項之外,我們也建議您在 專用 的資料登陸區域和資料管理登陸區域中裝載高度機密的資料。

它允許特定需求,例如 Just-In-Time 存取、客戶管理的金鑰進行加密,以及套用至登陸區域的輸入和輸出限制。 指引已評估將此類型的資料放入相同的資料登陸區域,但不同的儲存體帳戶。 不過,它可以讓解決方案在網路層變得複雜,例如,使用網路安全性群組和其他群組。

專用的「受限制」資料管理登陸區域應該連線到「受限制」資料登陸區域中的資料編錄。 它應該限制誰可以在目錄中搜尋此資料。

下一步