網路與安全性設定
CORS
若要設定 CORS,或跨來源資源共享,必須安裝下列相依性
pip install apache-superset[cors]
可以指定 superset_config.py
中的下列金鑰來設定 CORS
ENABLE_CORS
:必須設為True
才能啟用 CORSCORS_OPTIONS
:傳遞至 Flask-CORS 的選項(文件)
HTTP 標頭
請注意,Superset 捆綁了 flask-talisman,它自稱為一個小型 Flask 擴充功能,可處理設定 HTTP 標頭,以協助防範一些常見的 Web 應用程式安全性問題。
儀表板與圖表的 HTML 嵌入
有兩種方式可以嵌入儀表板:使用 SDK 或嵌入直接連結。請注意,在後者的情況下,知道連結的每個人都可以存取儀表板。
嵌入儀表板的公開直接連結
此方法首先變更 flask-talisman 的內容安全策略 (CSP),以允許某些網域顯示 Superset 內容。然後可以讓儀表板公開存取,也就是說,**繞過驗證**。一旦公開,儀表板的 URL 就可以新增至另一個網站 HTML 程式碼中的 iframe。
變更 flask-talisman CSP
將 config.py
中的整個 TALISMAN_CONFIG
區段新增至 superset_config.py
,並包含 frame-ancestors
區段
TALISMAN_ENABLED = True
TALISMAN_CONFIG = {
"content_security_policy": {
...
"frame-ancestors": ["*.my-domain.com", "*.another-domain.com"],
...
重新啟動 Superset,此組態變更才會生效。
將儀表板設為公開
嵌入公開儀表板
現在任何人都可以直接存取儀表板的 URL。您可以將其嵌入 iframe 中,如下所示
<iframe
width="600"
height="400"
seamless
frameBorder="0"
scrolling="no"
src="https://superset.my-domain.com/superset/dashboard/10/?standalone=1&height=400"
>
</iframe>
嵌入圖表
圖表的嵌入程式碼可以透過前往圖表的編輯檢視,然後按一下右上角的 ...
> Share
> Embed code
來產生
透過 SDK 啟用嵌入
按一下儀表板概觀頁面右上角 EDIT DASHBOARD
旁的 ...
,應該會產生一個下拉式選單,其中包含「嵌入儀表板」項目。
若要啟用此項目,請將下列程式碼行新增至 .env
檔案
SUPERSET_FEATURE_EMBEDDED_SUPERSET=true
CSRF 設定
同樣地,flask-wtf 用來管理一些 CSRF 設定。如果您需要豁免 CSRF 的端點(例如,如果您正在執行自訂驗證回傳端點),您可以將端點新增至 WTF_CSRF_EXEMPT_LIST
SSH 通道
-
開啟功能旗標
- 將
SSH_TUNNELING
變更為True
- 如果您想要在建立通道時新增更多安全性,我們允許使用者覆寫
SSHTunnelManager
類別 此處 - 您也可以設定
SSH_TUNNEL_LOCAL_BIND_ADDRESS
,這是您的 VPC 上可存取通道的主機位址
- 將
-
建立啟用 SSH 通道的資料庫
- 啟用功能旗標後,您現在應該會看到 SSH 通道切換開關。
- 按一下切換開關以啟用 SSH 通道,並相應地新增您的認證。
- Superset 允許兩種不同類型的驗證 (基本 + 私密金鑰)。這些認證應來自您的服務提供者。
-
驗證資料是否流動
- 啟用 SSH 通道後,前往 SQL Lab 並撰寫查詢,以驗證資料是否正確流動。
網域分片
Chrome 允許每個網域同時開啟最多 6 個連線。當儀表板中有超過 6 個切片時,大量的提取請求會排隊等候下一個可用的 Socket。PR 5039 將網域分片新增至 Superset,此功能將僅透過組態設定啟用(預設情況下,Superset 不允許跨網域請求)。
將下列設定新增至您的 superset_config.py
檔案
SUPERSET_WEBSERVER_DOMAINS
:網域分片功能允許的主機名稱清單。
請將您的網域分片建立為主要網域的子網域,以便授權在新網域上正常運作。例如
SUPERSET_WEBSERVER_DOMAINS=['superset-1.mydomain.com','superset-2.mydomain.com','superset-3.mydomain.com','superset-4.mydomain.com']
如果網域分片不是主要網域的子網域,請將下列設定新增至您的 superset_config.py
檔案。
SESSION_COOKIE_DOMAIN = '.mydomain.com'
中介軟體
Superset 允許您新增自己的中介軟體。若要新增自己的中介軟體,請更新 superset_config.py
中的 ADDITIONAL_MIDDLEWARE
金鑰。ADDITIONAL_MIDDLEWARE
應該是您其他中介軟體類別的清單。
例如,若要從 nginx 等 Proxy 伺服器後方使用 AUTH_REMOTE_USER
,您必須新增一個簡單的中介軟體類別,以將 HTTP_X_PROXY_REMOTE_USER
的值(或 Proxy 中的任何其他自訂標頭)新增至 Gunicorn 的 REMOTE_USER
環境變數