我目前正在使用免费版本的 Metabase 进行学习和测试。我根据将状态名称硬编码到过滤器中,为两个不同的用户设置了两个仪表板。我们的期望是用户应该只能查看其各自状态的数据。
例如,如果来自卡纳塔克邦的用户登录,他们应该只能看到与卡纳塔克邦相关的数据,对于来自不同州的其他用户也是如此。
问题: 当卡纳塔克邦的用户登录时,他们最初会看到正确的数据。但是,如果他们手动修改 URL 并将查询参数从 select_state=Karnataka 更改为另一个州(例如 select_state=Kerala),那么他们就可以访问 Kerala 的数据,而这是不允许的。
例如:
原始网址(按预期工作): /dashboard/4-state-report-karnataka?state_param=卡纳塔克邦
修改后的URL(安全问题): /dashboard/4-state-report-karnataka?state_param=喀拉拉邦
非常感谢您帮助解决此问题或指导我采用正确的方法来实施无法通过 URL 更改覆盖的特定于状态的访问限制。
感谢您对此事的关注!
使用相同的问题卡为每个状态用户创建两个仪表板,但状态用户 1 登录并操作 URL 并查看其他状态的数据
这种未经授权的访问会暴露来自其他州的数据,这打破了预期的特定于州的限制。我的期望是每个用户都将仅限于自己的状态数据,无论他们对 URL 进行任何更改。
我叫 Luis,我在 Metabase Success Engineering 团队工作
您在这里试图解决的问题是让内部用户(在这种特定情况下)看到他们的数据并且无法更改过滤器。 Metabase 有一个名为“数据沙箱”的功能 (https://www.metabase.com/docs/latest/permissions/data-sandboxes),允许管理员使用用户属性注入到达数据的查询中仓库,用户根本无法修改查询(重写发生在后端)。
我们在产品文档中投入了大量的精力和时间,因此请先使用它,然后再在其他地方寻找答案。很可能每个需求都已得到解决,或者我们在公共 github 问题跟踪器中创建了一个问题。