Mendix 安全模型 - 用户角色、密码、数据级别安全 | Mendix 评估指南

Skip navigation

Security Model

Mendix 中如何定义应用程序安全性?

对平台构建的应用程序,Mendix 提供了即时可用的基于角色的用户访问。这是因为 Mendix 中的应用程序由一个或多个模块组成,并且每个模块通常具备功能范围(如物品、客户、订单),同时又是独立的,因此可以在多个应用程序中重复使用。由于应用程序和模块之间的区别,因此对应用程序和模块两个级别都进行了安全性定义。应用程序级别的安全设置适用于应用程序内的所有模块,而模块级别的设置则特定于每个模块。

Mendix 应用程序安全性依据如下所述的参数进行定义。

在 Mendix 中如何定义应用程序级安全和应用程序模型的一致性?

Mendix 平台支持可配置的完整性检查,对部署在平台上的与应用程序相关的所有方面进行安全性检查。Mendix 也会检查安全设置的一致性。例如,如果某人员有权查看列出了表中数据的某个 UI 元素,那么他也应有权查看与该 UI 元素相关联的数据。

根据不同的开发阶段,可以严格或略严格地执行应用程序和完整性检查。这在开发和原型环境中是有利的,可以避免预生产阶段中不必要的关于一致性和安全性的活动。安全等级中的 OffPrototype/demo 仅允许用于本地测试、免费应用程序以及部署到指定用于开发的非 Mendix Cloud 环境中的应用程序。它们不能用于部署到生产环境。

要将授权应用程序部署到所有 Mendix Cloud 环境中,需要生产安全等级以及所有安全设置的完整配置。

为了避免公民开发人员无意造成安全遗漏,从 Mendix Studio 部署到 Mendix Cloud 的应用程序始终需要生产安全等级。此外,Studio 用户不能在匿名访问下配置角色。

如何为我的应用程序定义用户角色?

您应用程序最终用户的一个或多个用户角色由管理员进行分配或由可与该应用程序集成的(第三方)身份和访问管理解决方案自动提供。然后,用户将获得这些用户角色代表的所有访问权限。

在用户角色内也可以分配用户管理权限,这样具备了管理权限的用户就可以管理具有选定角色的其他用户的访问权限。此功能与支持委派管理概念相关。

每个用户角色都有一个或多个模块角色。模块角色在模块级别定义角色(如“订单输入”或“批准人”)。这意味着拥有用户角色的用户具备其下模块角色定义的所有访问权限。您应用程序的最终用户只能看到用户角色,而看不到模块角色,因此只能将模块角色分配给用户角色,再将用户角色分配给最终用户。用户角色集中了模块角色对数据、页面和微流(逻辑)的多项访问权限。

此外,出于此目的匿名用户可以通过特定角色配置登录 Mendix 应用程序。

有关更多信息,请参见 Runtime 安全性中的如何为我应用程序中的用户分配用户角色?

如何定义密码策略?

您可以灵活定义密码策略(如通过配置密码强度、允许/规定的字符集以及密码到期策略)。当使用如 SAML 或 OpenID 实施 SSO 身份验证时,组织也可以定义密码策略。

除此以外,您还可以在 Mendix Cloud 中对保密活动启用双重认证。也可以将双重认证添加到 Mendix 应用程序的任何位置,以进一步保护对应用程序或应用程序各部分的访问。

有关更多信息,请参见 Runtime 安全性中的我的 Mendix 应用程序如何存储密码?

Mendix 中文件访问的可配置性如何?

Mendix 应用程序中文件存储和图像使用的访问权限是完全可配置的。

Mendix 中如何定义数据级和 UI 级安全性?

每个 Mendix 应用程序模型都包含各种独立的模块。每个模块本身都定义了页面、微流(执行操作)、实体和数据集的数据级别和 UI 级别的安全性。

以下各部分内容描述了如何在 Mendix 应用程序中配置安全级别。

我的 Mendix 应用程序模型中的模块角色是如何工作的?

Mendix 将模块角色与用户角色区分开来,因此该模块及其角色可以在不同的应用程序中重用并/或发布至 Mendix Marketplace

如何定义模块级别的安全设置?

在模块级别,安全逻辑与应用程序逻辑相分离。这样,即使是不太擅长技术的用户,也可以轻松访问并维护和验证安全设置。所有安全设置都可以通过 Mendix Studio Pro 进行管理,以便为以下所述的元素定义访问权限。

以下视频介绍了可用的各种模块级安全设置:

Mendix 如何保护我应用程序的页面?

页面访问定义了具有特定模块角色的用户可以访问的应用程序页面。经优化的导航项(菜单栏和按钮)只会显示可以直接链接到用户有权访问的页面的项目。

页面访问采用矩阵形式,显示页面和模块角色。对于每种页面和角色的组合,用户可以指定某模块角色是否有权访问某个页面。您也可以在页面中使用 Visible for 属性编辑类似信息。

在我的 Mendix 应用程序中如何定义业务和流程安全性?

您可以使用微流可视化地定义业务和流程逻辑。微流访问定义了具有特定模块角色的用户可以执行哪些微流。经优化的导航项(菜单栏和按钮)只会显示用户有权访问的微流。

您可以在微流和模块角色矩阵中管理微流访问。对于每种微流和角色的组合,用户可以指定某模块角色是否有权访问某个微流。

您也可以在微流中使用 Allowed roles 属性编辑类似信息。

如何在 Mendix 中安全地封装应用程序数据?

对于每个模块角色,实体访问权限定义了具备该角色的用户是否有权创建、读取、更新和删除实体的对象。实体访问通过适用于实体的访问规则进行配置。每个访问规则反过来适用于(一组)模块角色。实体的访问规则定义了允许用户对实体对象执行的操作。可以允许用户创建和删除对象以及查看和编辑成员值。成员是实体的某个属性或关联。

此外,可以通过 XPath 约束来限制可查看、编辑和删除的对象的数据集。每个访问规则都适用于一个或多个模块角色。访问规则授予这些角色某些访问权限。规则是可添加的,这意味着如果多个访问规则应用于同一个模块角色,则这些规则的所有访问权限将共同适用于该模块角色。例如,当将应用程序配置给多租户使用时,将应用此功能。

只要您的应用程序使用实体,就会应用这些规则,并且这些规则会自动应用于模型中完成的 XPath 检索。您可以在实体上定义 XPath 约束,这意味着您可以根据用户角色或组织来定义访问规则。这可用于确保在多租户应用程序中进行严格的数据分离。

我的 Mendix 应用程序如何与第三方身份管理解决方案相集成?

Mendix Runtime 中的内置安全角色和身份验证机制支持使用 LDAP 和 Kerberos 等类似协议与其他第三方身份管理员(如 Microsoft Active Directory 和 SAP IDM)进行集成。