共用方式為


Azure Data Lake 儲存體 Gen2 中的存取控制和資料湖組態

本文可協助您評估及瞭解 Azure Data Lake 儲存體 Gen2 中的存取控制機制。 這些機制包括 Azure 角色型存取控制 (RBAC) 和存取控制清單 (ACL)。 您瞭解:

  • 如何評估 Azure RBAC 與 ACL 之間的存取權
  • 如何使用其中一種或兩種機制設定存取控制
  • 如何將存取控制機制套用至 Data Lake 實作模式

您需要儲存體容器、安全性群組、Azure RBAC 和 ACL 的基本知識。 為了框架討論,我們會參考原始、擴充和策劃區域的泛型資料湖結構。

您可以使用這份檔搭配 資料存取管理

使用內建的 Azure RBAC 角色

Azure 儲存體有兩層存取:服務管理和資料。 您可以透過服務管理層存取訂用帳戶和儲存體帳戶。 透過資料層存取容器、Blob 和其他資料資源。 例如,如果您想要來自 Azure 的儲存體帳戶清單,請將要求傳送至管理端點。 如果您想要儲存體帳戶中的檔案系統、資料夾或檔案清單,請將要求傳送至服務端點。

角色可以包含管理或資料層存取的許可權。 讀取者角色會授與管理層資源的唯讀存取權,但不會授與資料的讀取權限。

擁有者、參與者、讀者和儲存體帳戶參與者等角色,允許安全性主體管理儲存體帳戶。 但是,它們不會提供該帳戶中資料的存取權。 只有明確為數據存取定義的角色,才允許安全性主體存取資料。 除了讀者之外,這些角色可存取儲存體金鑰以存取資料。

內建管理角色

以下是內建的管理角色。

  • 擁有者 :管理所有專案,包括資源的存取權。 此角色提供金鑰存取。
  • 參與者 :管理資源存取權以外的所有專案。 此角色提供金鑰存取。
  • 儲存體帳戶參與者 :儲存體帳戶的完整管理。 此角色提供金鑰存取。
  • 讀取者 :讀取和列出資源。 此角色不提供金鑰存取。

內建資料角色

以下是內建的資料角色。

儲存體 Blob 資料擁有者是一個超級使用者角色,授與所有變動作業的完整存取權。 這些作業包括設定目錄或檔案的擁有者,以及其不是擁有者的目錄和檔案的 ACL。 超級使用者存取是變更資源擁有者的唯一授權方式。

注意

Azure RBAC 指派最多可能需要五分鐘才能傳播並生效。

評估存取方式

在安全性主體型授權期間,系統會依下列順序評估許可權。 如需詳細資訊,請參閱下圖。

  • Azure RBAC 會先進行評估,並優先于任何 ACL 指派。
  • 如果根據 RBAC 完全授權作業,則完全不會評估 ACL。
  • 如果作業未獲得完整授權,則會評估 ACL。

如需詳細資訊,請參閱 如何評估 許可權。

注意

此許可權模型僅適用于 Azure Data Lake 儲存體。 它不適用於未啟用階層命名空間的一般用途或 Blob 儲存體。 此描述會排除共用金鑰和 SAS 驗證方法。 它也會排除將安全性主體指派給儲存體 Blob 資料擁有者內建角色的案例,此角色可提供進階使用者存取權。 設定 allowSharedKeyAccess 為 false,讓身分識別稽核存取權。

Diagram of a flow chart that shows how access is evaluated.

如需指定作業需要哪些 ACL 型許可權的詳細資訊,請參閱 Azure Data Lake 儲存體 Gen2 中的存取控制清單。

注意

  • 存取控制清單僅適用于相同租使用者中的安全性主體,包括來賓使用者。
  • 任何具有附加至叢集許可權的使用者都可以建立 Azure Databricks 掛接點。 使用服務主體認證或 Microsoft Entra 傳遞選項設定掛接點。 在建立時,不會評估許可權。 當作業使用掛接點時,會評估許可權。 任何可連結至叢集的使用者都可以嘗試使用掛接點。
  • 當使用者在 Azure Databricks 或 Azure Synapse Analytics 中建立資料表定義時,他們必須具有基礎資料的讀取權限。

設定 Azure Data Lake 儲存體的存取權

使用 Azure RBAC、ACL 或兩者的組合,在 Azure Data Lake 儲存體中設定存取控制。

僅使用 Azure RBAC 設定存取

如果容器層級存取控制足夠,Azure RBAC 指派會提供簡單的管理方法來保護資料。 建議您針對大量受限制的資料資產使用存取控制清單,或需要細微存取控制的位置。

僅使用 ACL 設定存取

以下是雲端規模分析的存取控制清單組態建議。

將存取控制專案指派給安全性群組,而不是個別的使用者或服務主體。 如需詳細資訊,請參閱 使用安全性群組與個別使用者

當您從群組新增或移除使用者時,不需要更新 Data Lake 儲存體。 此外,使用群組可減少超過每個檔案或資料夾 ACL 32 個存取控制專案的機會。 在四個預設專案之後,只有 28 個剩餘的許可權指派專案。

即使您使用群組,您也可以在目錄樹狀結構的最上層有許多存取控制專案。 需要不同群組的細微許可權時,就會發生這種情況。

Diagram that shows several security groups requiring access to three data products.

使用 Azure RBAC 和存取控制清單設定存取

儲存體 Blob 資料參與者和儲存體 Blob 資料讀取者許可權提供資料的存取權,而不是儲存體帳戶。 您可以在儲存體帳戶層級或容器層級授與存取權。 如果已指派儲存體 Blob 資料參與者,則 ACL 無法用來管理存取權。 其中已指派儲存體 Blob 資料讀取器,您可以使用 ACL 授與提高的寫入權限。 如需詳細資訊,請參閱 如何評估 存取。

此方法適用于大部分使用者需要讀取權限,但只有少數使用者需要寫入存取權的案例。 Data Lake 區域可能是不同的儲存體帳戶,而資料資產可能是不同的容器。 Data Lake 區域可以由容器和資料夾所代表的資料資產來表示。

巢狀存取控制清單群組方法

巢狀 ACL 群組有兩種方法。

選項 1:父執行群組

建立檔案和資料夾之前,請先從父群組開始。 將該群組的執行許可權指派給容器層級的預設和存取 ACL。 然後新增需要資料存取父群組的群組。

警告

建議您針對此模式使用遞迴刪除,並改用 選項 2:存取控制清單其他專案

這項技術稱為巢狀群組。 成員群組會繼承父群組的許可權,以提供所有成員群組的全域執行許可權。 成員群組不需要執行許可權,因為這些許可權是繼承的。 更多巢狀結構可能會提供更大的彈性和靈活性。 將代表小組或自動化作業的安全性群組新增至資料存取讀取器和寫入器群組。

Diagram that shows nested groups where global run includes data assets for readers and writers and includes analysis team and engineering jobs.

選項 2:存取控制清單其他專案

建議的方法是在容器或根目錄使用 ACL 其他專案集。 指定預設值並存取 ACL,如下列畫面所示。 此方法可確保從根目錄到最低層級的路徑的每個部分都有執行許可權。

Screen capture that shows the manage access dialog box with other highlighted and access and default selected.

此執行許可權會向下傳播至任何新增的子資料夾。 許可權會傳播至預期存取群組需要讀取和執行許可權的深度。 層級位於鏈結的最低部分,如下列畫面所示。 此方法會授與群組讀取資料的存取權。 此方法的運作方式同樣適用于寫入存取。

Screen capture that shows the manage access dialog box with businessgrp 1 highlighted and access and default selected.

下列用法是每個 Data Lake 區域的建議安全性模式:

  • 未經處理應該只允許使用安全性主體名稱 (SPN) 存取資料。
  • 擴充應該只允許使用安全性主體名稱 (SPN) 存取資料。
  • 策展應允許同時具有安全性主體名稱 (SPN) 和使用者主體名稱 (UPN) 的存取權。

使用 Microsoft Entra 安全性群組的範例案例

設定群組的方式有很多種。 例如,假設您有一 /LogData 個名為 的目錄,其保存伺服器所產生的記錄資料。 Azure Data Factory 會將資料內嵌至該資料夾。 來自服務工程小組的特定使用者上傳記錄並管理此資料夾的其他使用者。 Azure Databricks 分析和資料科學工作區叢集可以分析該資料夾中的記錄。

若要啟用這些活動,請建立 LogsWriter 群組和群組 LogsReader 。 指派下列許可權:

  • LogsWriter 群組新增至具有 rwx 許可權的 /LogData 目錄 ACL。
  • LogsReader 群組新增至具有 r-x 許可權的 /LogData 目錄 ACL。
  • 將 Data Factory 的服務主體物件或受控服務識別 (MSI) 新增至 LogsWriters 群組。
  • 將服務工程小組中的使用者新增至 LogsWriter 群組。
  • Azure Databricks 已針對 Microsoft Entra 傳遞至 Azure Data Lake Store 進行設定。

如果服務工程小組中的使用者轉移至不同的小組,只要從 LogsWriter 群組中移除該使用者即可。

如果您未將該使用者新增至群組,但改為新增該使用者的專用 ACL 專案,您必須從 /LogData 目錄中移除該 ACL 專案。 您也需要從目錄的整個目錄階層 /LogData 中的所有子目錄和檔案中移除專案。

Azure Synapse Analytics 資料存取控制

若要部署 Azure Synapse 工作區,它需要 Azure Data Lake 儲存體 Gen2 帳戶。 Azure Synapse Analytics 會針對數個整合案例使用主要儲存體帳戶,並將資料儲存在容器中。 容器包含名為 /synapse/{workspaceName} 的資料夾下的 Apache Spark 資料表和應用程式記錄。 工作區也會使用容器來管理您安裝的程式庫。

透過 Azure 入口網站 在工作區部署期間,請提供現有的儲存體帳戶或建立新的儲存體帳戶。 提供的儲存體帳戶是工作區的主要儲存體帳戶。 部署程式會使用 儲存體 Blob 資料參與者 角色,將工作區身分識別存取權授與指定的 Data Lake 儲存體 Gen2 帳戶。

如果您在Azure 入口網站外部部署工作區,請手動將 Azure Synapse Analytics 工作區身分識別新增至 儲存體 Blob 資料參與者 角色。 建議您在容器層級上指派 blob 資料參與者 儲存體角色 ,以遵循最低許可權原則。

當您透過作業執行管線、工作流程和筆記本時,他們會使用工作區身分識別許可權內容。 如果任何作業讀取或寫入工作區主要儲存體,工作區身分識別會使用透過 儲存體 部落格資料參與者 授與的 讀取/寫入權限。

當使用者登入工作區以執行腳本或進行開發時,使用者的內容許可權允許主要儲存體上的讀取/寫入存取權。

使用存取控制清單的 Azure Synapse Analytics 精細資料存取控制

當您設定 Data Lake 存取控制時,某些組織需要細微層級的存取權。 他們可能有組織中某些群組看不到的敏感性資料。 Azure RBAC 只允許在儲存體帳戶和容器層級進行讀取或寫入。 使用 ACL,您可以在資料夾和檔案層級設定更細緻的存取控制,以允許特定群組的資料子集讀取/寫入。

使用 Spark 資料表時的考慮

當您在 Spark 集區中使用 Apache Spark 資料表時,它會建立倉儲資料夾。 資料夾位於工作區主要儲存體中容器的根目錄中:

synapse/workspaces/{workspaceName}/warehouse

如果您打算在 Azure Synapse Spark 集區中建立 Apache Spark 資料表,請為執行建立 Spark 資料表的群組授與 warehouse 資料夾的寫入權限 。 如果命令在管線中透過觸發的作業執行,請將寫入權限授與工作區 MSI。

此範例會建立 Spark 資料表:

df.write.saveAsTable("table01")

如需詳細資訊,請參閱 如何設定 Synapse 工作區 的存取控制。

Azure Data Lake 存取摘要

管理 Data Lake 存取的單一方法並不適合所有人。 資料湖的主要優點是提供無摩擦的資料存取。 實際上,不同的組織想要不同層級的治理和控制其資料。 某些組織有一個集中式小組,可在嚴格的內部控制下管理存取和布建群組。 其他組織更靈活且具有分散的控制。 選擇符合治理層級的方法。 您的選擇不應該造成不當延遲或摩擦,以取得資料的存取權。

下一步