网络和安全设置
CORS
要配置 CORS 或跨域资源共享,必须安装以下依赖项
pip install apache-superset[cors]
可以在 superset_config.py
中指定以下键来配置 CORS
ENABLE_CORS
:必须设置为True
才能启用 CORSCORS_OPTIONS
:传递给 Flask-CORS 的选项 (文档)
HTTP 标头
请注意,Superset 包含 flask-talisman,它被称为一个小型 Flask 扩展,用于处理设置可以帮助防止一些常见 Web 应用程序安全问题的 HTTP 标头。
仪表板和图表 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>
嵌入图表
可以通过转到图表的编辑视图,然后单击右上角的 ...
> 共享
> 嵌入代码
来生成图表的嵌入代码。
通过 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 个切片时,许多时间获取请求会排队并等待下一个可用套接字。 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 这样的代理服务器后面的 AUTH_REMOTE_USER
,您必须添加一个简单的中间件类来将 HTTP_X_PROXY_REMOTE_USER
的值(或来自代理的任何其他自定义标头)添加到 Gunicorn 的 REMOTE_USER
环境变量中