系統存取控制

Presto 將向協調器驗證身份的主體概念與負責執行查詢的使用者名稱分開。例如,在執行 Presto CLI 時,可以使用 --user 選項指定 Presto 使用者名稱。

預設情況下,Presto 協調器允許任何主體以任何 Presto 使用者身份執行查詢。在安全的環境中,這可能不是理想的行為,並且可能需要自訂。

實作

SystemAccessControlFactory 負責建立 SystemAccessControl 實例。它還定義了 SystemAccessControl 名稱,該名稱由管理員在 Presto 組態中使用。

SystemAccessControl 實作具有多項責任

  • 驗證給定主體是否有權以特定使用者身份執行查詢。

  • 判斷給定使用者是否可以變更給定系統屬性的值。

  • 跨所有目錄執行存取檢查。這些存取檢查發生在任何連接器特定的檢查之前,因此可以拒絕 ConnectorAccessControl 否則將允許的權限。

SystemAccessControlSystemAccessControlFactory 的實作必須包裝為外掛程式並安裝在 Presto 叢集上。

設定

在實作 SystemAccessControlSystemAccessControlFactory 的外掛程式安裝在協調器上後,它會使用 etc/access-control.properties 檔案進行設定。除了 access-control.name 以外的所有屬性都是 SystemAccessControl 實作專有的。

Presto 使用 access-control.name 屬性來根據 SystemAccessControlFactory.getName() 返回的名稱尋找已註冊的 SystemAccessControlFactory。其餘屬性會以對應的形式傳遞給 SystemAccessControlFactory.create()

設定檔範例

access-control.name=custom-access-control
custom-property1=custom-value1
custom-property2=custom-value2