Apache Superset能否嵌入无需用户认证的公共网站的图表与仪表盘?
1 嵌入支持情况
Apache Superset原生支持将图表、仪表盘嵌入到无身份认证的公共站点,核心实现方式有两种:
- 开启公共角色权限:调整配置项
PUBLIC_ROLE_LIKE_GAMMA,给内置的Public角色分配指定仪表盘、图表的只读访问权限,生成的iframe嵌入链接可直接在公共站点调用,访客无需登录即可查看。 - 访客令牌模式:调用Superset开放接口生成临时Guest Token,嵌入时携带令牌即可实现免登录访问,不需要给Public角色开放权限。
2 无认证嵌入的安全影响
直接开放无认证嵌入会存在几个明确的安全风险:
- 数据泄露风险:如果权限配置出现疏漏,Public角色被误分配了敏感数据集、数据源的访问权限,所有公共站点访客都可直接获取未脱敏的敏感数据,违反数据安全合规要求。
- 服务可用性风险:无认证的嵌入接口相当于直接暴露Superset服务的公网入口,攻击者可通过CC攻击、接口枚举等方式耗尽服务资源,导致内部正常使用也受影响。
- 漏洞利用风险:如果Superset本身出现权限绕过、注入类漏洞,公网开放的无认证入口会成为首要攻击目标,攻击者可直接通过该入口渗透到内部数据系统。
3 落地实践的优化方案
目前行业内已经有大量成熟的落地策略,可在满足公共嵌入需求的前提下降低安全风险:
- 最小权限管控:仅给Public角色分配需要公开的单个仪表盘/图表的只读权限,禁止开放任何数据集、数据源、后台管理页面的访问权限,裁剪Public角色的默认权限,不要直接继承Gamma角色的全部权限。
- 反向代理路径隔离:在Superset服务前部署反向代理,仅放通指定仪表盘的嵌入路径的公网访问,屏蔽其他所有Superset路径(如管理后台、自定义查询接口)的公网请求,避免服务完全暴露。
- 短期令牌限制:优先使用Guest Token模式实现免登访问,公共站点后端根据访问需求动态生成有效期不超过24小时、权限仅绑定单个仪表盘的临时令牌,令牌过期后自动失效,避免固定嵌入链接被长期滥用。
- 实例物理隔离:如果公共嵌入需求较多,单独部署一套专供公网嵌入使用的Superset实例,和内部使用的实例完全隔离,仅同步需要公开的非敏感数据到该实例的数据源,从根源上避免内部数据泄露。
- 数据提前脱敏:所有需要公开的仪表盘底层数据集提前做脱敏处理,移除身份证、手机号等敏感字段,对核心经营指标做聚合模糊处理,即使出现权限溢出也不会泄露原始敏感数据。
内容的提问来源于stack exchange,提问作者ar_learner
相关产品推荐
相关产品推荐

