授權¶
Presto 可以設定為啟用 HTTP 端點的授權支援,讓系統管理員可以控制對 Presto 中不同 HTTP 端點的存取權限。
基於角色的存取控制¶
Presto 中的每個 HTTP 端點都受到一組角色的保護,而且只有屬於這些角色之一的身分才能存取。Presto 中定義了三個角色
user
:應該可以存取外部端點的使用者,例如啟動查詢、檢查狀態、取得輸出資料以及為 UI 提供資料所需的端點。internal
:Presto 的內部元件(例如協調器和工作節點),它們可以存取諸如在工作節點上啟動任務和從另一個工作節點擷取交換資料的端點。admin
:可以存取內部服務端點(例如取得節點狀態)的系統管理員。
啟用授權¶
若要啟用授權,必須執行下列步驟
啟用驗證¶
Presto 授權需要驗證才能取得存取者的主體,因此請確保已啟用驗證。
如果已正確設定 TLS/SSL,我們可以只使用憑證來識別存取者。
http-server.authentication.type=CERTIFICATE
也可以指定其他驗證類型,例如
KERBEROS
、PASSWORD
和JWT
。可能需要其他設定。node.internal-address=<authentication type>
設定授權器¶
若要啟用授權,必須實作並繫結介面 com.facebook.airlift.http.server.Authorizer
。它會根據傳入請求的主體和被請求端點的允許角色執行實際的授權檢查。
您可以使用預設的 ConfigurationBasedAuthorizer
,也可以實作自己的授權器。
基於設定的授權器¶
這個外掛程式可讓您透過指定從角色到用於比對身分之正規表示式的對應,來開啟授權支援。請依照下列步驟開始使用基於設定的授權器
建立角色到身分正規表示式的對應,並將其儲存在檔案中。
user=.* internal=coordinator admin=su.*
在
config.properties
檔案中指定對應檔案的路徑configuration-based-authorizer.role-regex-map.file-path=<path to mapping file>
安裝 Guice 模組
com.facebook.airlift.http.server.ConfigurationBasedAuthorizerModule
。
設定授權設定¶
授權設定是在 config.properties
檔案中設定。工作節點和協調器節點上的授權使用相同的屬性集進行設定。
以下是需要新增至 config.properties
檔案的屬性範例
http-server.authorization.enabled=true
http-server.authorization.default-policy=ALLOW
http-server.authorization.default-allowed-roles=USER,ADMIN
http-server.authorization.allow-unsecured-requests=false
屬性 |
描述 |
---|---|
|
啟用 Presto 的授權。應設定為 |
|
預設授權原則會套用至未指定允許角色的端點。可以設定為 |
|
當 default-policy 設定為 |
|
略過未受保護請求的授權檢查。預設值為 |
警告
http-server.authorization.allow-unsecured-requests
提供做為從 HTTP 過渡到具有授權的 HTTPS 的方法,但這是一個安全漏洞,因為它允許未經驗證的請求略過授權檢查。僅在過渡期間啟用,並在您完成移轉到使用 HTTPS 後停用此設定。