Skip to main content

网络和安全设置

跨域资源共享(CORS)

要配置 CORS(跨源资源共享),必须安装以下依赖项:

pip install apache-superset[cors]

可以在 superset_config.py 中的指定以下键来配置 CORS:

  • ENABLE_CORS:必须设置为 True 才能启用 CORS
  • CORS_OPTIONS:传递给 Flask-CORS 的选项 (文档)

HTTP头

请注意,Superset 捆绑了 flask-talisman, 自称为一个小巧的 Flask 扩展,用于设置可以帮助防止一些常见 Web 应用程序安全问题的 HTTP 头。

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 允许两种不同的认证类型(Basic + Private Key)。这些凭据应来自您的服务提供商。
  3. 验证数据是否流动

    • 启用 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 环境变量。