Databricks SQL安全模型和數據訪問概述
Databricks SQL安全模型基於SQL數據庫中建立良好的安全模型,允許使用標準SQL語句設置細粒度訪問權限,格蘭特
而且撤銷
.下圖說明了如何保護數據。
黃色用戶組已被授予查詢權限表1而且觀點1.這些表的文件和目錄被組織在不同的數據集中。在這個例子中,表1數據在數據集1而且數據集2而且觀點1數據在數據集的.
當您開始時,或者對於簡單的場景(例如僅在單個工作空間中訪問數據),您可以將文件和目錄直接存儲在Databricks文件係統(DBFS)中。這些文件和目錄被稱為管理.不需要配置額外的憑據來管理對托管數據的訪問。
但是,文件和目錄通常存儲在雲存儲中。這些文件和目錄被稱為非托管.要訪問雲存儲中的非托管數據,Databricks使用雲存儲憑據向雲提供商進行身份驗證。在下圖中,Databricks使用證書1為數據集1而且數據集2而且證書2為數據集的.Databricks管理員配置Databricks以使用正確的憑據訪問雲存儲上的數據。有關更多信息,請參見雲存儲接入概述在本文後麵。表和視圖的用戶通常不會直接看到或使用憑證。
用戶和組通常在標識提供程序(IdP)中進行管理,並同步到Databricks,例如使用SCIM.
以下部分概述了如何使用Databricks表訪問控製管理對數據的訪問、配置對雲存儲的訪問以及管理用戶和組。
表訪問控製概述
Databricks表訪問控製使您能夠保護以下對象。我們稱之為可獲得的對象.
目錄
:控製對整個數據目錄的訪問。數據庫
:控製對數據庫的訪問。表格
:控製對托管表或外部表的訪問。視圖
:控製對SQL視圖的訪問。任何文件
:控製對底層文件係統的訪問。被授予訪問權限的用戶任何文件
通過直接從文件係統讀取,可以繞過對目錄、數據庫、表和視圖的限製。
隻有Databricks管理員和對象所有者可以授予對安全對象的訪問權限。用戶創建Databricks SQL或Data Science & Engineering中使用集群的數據庫、表或視圖啟用表訪問控製成為它的所有者。所有者被授予所有權限,並可以將權限授予其他用戶。如果對象沒有所有者,管理員可以設置對象的所有者。下表總結了每個角色可以授予權限的可用角色和對象。
角色 |
是否可以授予訪問權限 |
---|---|
磚管理員 |
目錄和底層文件係統中的所有對象。 |
目錄的所有者 |
目錄中的所有對象。 |
數據庫所有者 |
數據庫中的所有對象。 |
表的主人 |
隻有桌子。 |
有關更多信息,請參見數據對象權限.
雲存儲接入概述
請注意
如果您正在使用Databricks管理表不需要配置對雲存儲的訪問。
為了查詢雲存儲中的數據,Databricks管理員通過IAM角色和實例配置文件配置Databricks SQL對雲存儲的訪問,如下圖所示。圖中使用映射到實例概要文件的IAM角色進行訪問雲存儲1而且雲存儲2.
配置雲存儲接入包括三個步驟:
創建實例概要文件或重用現有實例概要文件。
將實例概要文件訪問權限授予AWS S3桶。
配置Databricks SQL倉庫實例配置文件這樣就可以訪問雲存儲中的數據。
用戶和組概述
磚管理員管理用戶和組在數據科學和工程工作空間中。對於Databricks SQL, Databricks建議使用組而不是用戶,因為這樣更容易管理數據訪問權限。有兩個選項來設置組:
將IdP (Identity Provider)組同步到數據庫使用SCIM API。Databricks推薦這個選項,因為這樣可以將身份的真實來源保存在IdP中,同時Databricks仍然可以使用它。在圖中,Azure Active Directory中的用戶和組被同步到Databricks SQL並用於
格蘭特
語句來保護數據庫對象(如表和視圖)。在“數據庫”中創建組使用SQL、UI或API。