跳至主要內容
在 GitHub 上編輯此頁面

網路與安全性設定

CORS

若要設定 CORS,或跨來源資源共享,必須安裝下列相依性

pip install apache-superset[cors]

可以指定 superset_config.py 中的下列金鑰來設定 CORS

  • ENABLE_CORS:必須設為 True 才能啟用 CORS
  • CORS_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,此組態變更才會生效。

將儀表板設為公開

  1. 'DASHBOARD_RBAC': True 功能旗標新增至 superset_config.py
  2. 依照此處所述,將 Public 角色新增至您的儀表板

嵌入公開儀表板

現在任何人都可以直接存取儀表板的 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 通道

  1. 開啟功能旗標

    • SSH_TUNNELING 變更為 True
    • 如果您想要在建立通道時新增更多安全性,我們允許使用者覆寫 SSHTunnelManager 類別 此處
    • 您也可以設定 SSH_TUNNEL_LOCAL_BIND_ADDRESS,這是您的 VPC 上可存取通道的主機位址
  2. 建立啟用 SSH 通道的資料庫

    • 啟用功能旗標後,您現在應該會看到 SSH 通道切換開關。
    • 按一下切換開關以啟用 SSH 通道,並相應地新增您的認證。
      • Superset 允許兩種不同類型的驗證 (基本 + 私密金鑰)。這些認證應來自您的服務提供者。
  3. 驗證資料是否流動

    • 啟用 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 環境變數