实体安全性
理解实体安全性
在实际使用中,语义模型的管理员需要对不同实体的访问权限进行细颗粒读的访问控制,比如度量销售额对公司的物流用户组不可见,但计算度量2020年全年销售额公司的对物流用户组可见,基于这个需求,目前MDX的实体安全性的设计原则为,用户在互相依赖的实体之间的访问控制可分别配置,即会出现某度量对用户不可见但是引用该度量的计算度量用户可见的情况。
实体访问权限的状态
实体访问权限有3种状态:
实体访问状态 | 产品行为 |
---|---|
未配置 | 未配置访问权限的情况下,用户默认对实体不可见,可通过在配置文件中修改未配置访问权限时的用户的默认访问权限,详见下文。 |
可访问 | 配置了可访问后,用户可以查看并查询该实体 |
不可访问 | 配置了不可访问后,用户无法查看到该实体,并不可以查询 |
授予访问权限的粒度
用户在一个数据集上的实体访问权限决定了用户对于数据集上的访问权限,用户必须至少具备一个数据集中一个度量或者一个计算度量的访问权限,否则用户无法查看和查询该数据集。
注意: 由于 Tableau 默认会存在一个 count(*) 的内置度量,所以仅添加维度的权限也可以对接 MDX for Kylin,但是由于这样并没有意义,不建议这样使用 MDX for Kylin。
您可以通过修改参数来配置用户默认情况下对数据集及实体默认访问权限,该参数默认关闭。
参数名称 | insight.dataset.allow-access-by-default |
---|---|
使用效果 | 当为 true 时,所有数据集默认可见性未配置时,数据集对用户可见;当为 false 时,所有数据集默认对用户不可见,数据集可见性需要在界面配置为可见才可查询 |
默认值 | false |
生效是否需要重启 | 是 |
以角色为单位进行实体授权
MDX for Kylin 提供了用户级别和角色级别的访问权限配置,您可以创建角色并将用户加入角色来实现对一组用户的权限进行统一管理。您可以参考角色对用户角色进行配置。
当用户属于多种角色时,最终的用户的访问权限为各个角色和用户权限的合集,即若在数据集中用户 A 的访问权限为维度 1 和度量 1,角色 A 的访问权限为维度 2 和度量 2,同时用户 A 又属于角色 A,那么用户 A 的最终访问权限为维度 1、维度 2、度量 1 和度量 2。
以用户组为单位进行实体授权
您可以以用户组为单位进行实体授权。
MDX for Kylin 定期同步 Kylin 中的用户和用户组信息,以及用户组包含的用户信息。
用户组和用户,用户组和用户组之间的数据集访问权限会取并集关系。例如,用户 A 在用户组 U1 中,用户 A 被限制了数据集 DA1 中维度 D1 和度量 M1 的访问,用户组 U1 被限制了数据集 DA1 上 的 D2 和 M2 的访问权限。在这种情况下,用户 A 可以访问数据集 D1 的其他实体,但不能访问维度 D1,D2 和 M1 和 M2。
配置实体访问列表
目前您可以在数据集菜单对实体访问权限进行配置,目前 MDX for Kylin 支持对维度、度量、计算度量、命名集进行实体访问列表配置。您可以参考配置权限列表对实体访问列表进行配置。
实体可见性
您可在维度、度量、计算度量、命名集的编辑器上配置其是否可见,当该实体被配置为不可见状态时,所有用户对该实体的访问权限也会受到限制,且在实体的权限列表上单个用户或角色的访问将自动配置为不可访问状态且不可更改。