繁体   English   中英

如何在 Apache Superset 1.5.0 中实现后处理

[英]How to implement post-processing in Apache Superset 1.5.0

我目前正在通过匿名列配置的自定义实现来扩展当前的 Apache Superset 1.5.0 版本(如图1所示)。 预期的想法是,如果数据集编辑器中的列设置为匿名,那么超集应该查询来自数据库的数据,但将它们发送到前端之前,特定列应该是匿名的。

我已经能够将该复选框值存储在数据库中,因为我不熟悉后端实现,我不知道将匿名化功能的具体实现放在哪里。

我已经发现查询结果可以在query_context_processor.py中进行后处理,但是如果将列设置为匿名,我该如何获取信息呢?

新列配置

这不是一件微不足道的事情,依赖后处理是不安全的——它很容易被恶意用户绕过,因为后处理是来自客户端的请求。

我相信正确的方法是扩展列模型并向其添加anonymized属性。 请注意,正在努力更新列模型(以及其他模型),这会使事情变得有些复杂,因为您可能还需要将逻辑添加到旧模型中,直到迁移完成。 有了这个,您将能够确定给定数据集中的哪些列需要匿名,并且您可以在构建查询对象时将它们替换为函数。

如果您只有几列要匿名化,一种方法是创建一个具有匿名列的虚拟数据集,并仅向用户授予对该数据集的访问权限,而不是基础表。 例如,您可以编写以下 SQL:

SELECT
  user_id, user_username, HASH(user_email) AS anonymized_email, ...
FROM ...
...

然后将其保存为虚拟数据集。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM