在叢集上啟用 Hive 中繼存放區資料表存取控制(舊版)
本文說明如何為叢集上的內建Hive中繼存放區啟用數據表訪問控制。
如需如何在叢集上啟用數據表訪問控制之後,在Hive中繼存放區安全性實體對象上設定許可權的相關信息,請參閱Hive中繼存放區許可權和安全性實體物件(舊版)。
注意
Hive 中繼存放區資料表格存取控制是一種舊版資料控管模型。 Databricks 建議您改用 Unity 目錄,其擁有簡化且以帳戶為中心的控管模型。 您可以將 Hive 中繼存放區所管理的資料表格升級至 Unity 目錄中繼存放區。
啟用叢集的數據表訪問控制
資料表存取控制可在兩個版本中使用:
- 僅限 SQL 的數據表存取控制,可限制使用者使用 SQL 命令。
- Python 和 SQL 資料表訪問控制,可讓使用者執行 SQL、Python 和 PySpark 命令。
機器學習 Runtime 不支援資料表訪問控制。
重要
即使已針對叢集啟用數據表訪問控制,Azure Databricks 工作區系統管理員仍可存取檔案層級數據。
僅限 SQL 的數據表存取控制
此版本的數據表訪問控制只會將使用者限制為 SQL 命令。
若要在叢集上啟用僅限 SQL 的數據表存取控制,並限制該叢集只使用 SQL 命令,請在叢集的 Spark conf 中設定下列旗標:
spark.databricks.acl.sqlOnly true
注意
僅限 SQL 資料表存取不受 [系統管理員設定] 頁面中的 [啟用資料表 存取控制] 設定影響。 該設定只會控制全工作區啟用 Python 和 SQL 數據表訪問控制。
Python 和 SQL 資料表訪問控制
此版本的數據表訪問控制可讓使用者執行使用 DataFrame API 和 SQL 的 Python 命令。 在叢集上啟用時,該叢集上的使用者:
- 只能使用 Spark SQL API 或 DataFrame API 存取 Spark。 在這兩種情況下,根據您可以授與Hive中繼存放區物件的 Azure Databricks 許可權,系統管理員會限制對數據表和檢視的存取。
- 必須在叢集節點上執行其命令,因為低許可權使用者禁止存取文件系統的敏感性部分,或建立與80和443以外的埠的網路連線。
- 只有內建的Spark函式可以在80和443以外的埠上建立網路連線。
- 只有具有 ANY FILE 許可權的 工作區系統管理員使用者或使用者,才能透過 PySpark JDBC 連接器從外部資料庫讀取數據。
- 如果您想要 Python 行程能夠存取其他輸出埠,您可以將 Spark 組態
spark.databricks.pyspark.iptable.outbound.whitelisted.ports
設定為您想要允許存取的埠。 組態值支援的格式為[port[:port][,port[:port]]...]
,例如:21,22,9000:9999
。 埠必須位於有效範圍內,也就是0-65535
。
嘗試繞過這些限制將會失敗,但發生例外狀況。 這些限制已就緒,讓使用者永遠無法透過叢集存取無特殊許可權的數據。
啟用工作區的數據表訪問控制
在使用者可以設定 Python 和 SQL 資料表存取控制之前,Azure Databricks 工作區必須先啟用 Azure Databricks 工作區的數據表存取控制,並拒絕使用者存取未啟用數據表存取控制的叢集。
強制執行數據表訪問控制
若要確保您的使用者只存取您想要的數據,您必須將使用者限制為已啟用資料表存取控制的叢集。 特別是,您應該確保:
- 用戶沒有建立叢集的許可權。 如果他們建立沒有數據表訪問控制的叢集,則可以從該叢集存取任何數據。
- 用戶對於未針對數據表訪問控制啟用的任何叢集沒有 CAN ATTACH TO 許可權。
如需詳細資訊,請參閱 計算許可權 。
建立已啟用數據表訪問控制的叢集
數據表存取控制預設會在具有 共用存取模式的叢集中啟用。
若要使用 REST API 建立叢集,請參閱 建立新的叢集。