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

Skip navigation

Runtime Security

Mendix 应用程序如何处理安全性?

在理解 Mendix 如何在应用程序中处理安全性之前,重要的一点是理解 Mendix Runtime 的架构

在 Mendix 应用程序中,由于要在浏览器中运行 JavaScript 库,因此需要在 Mendix Client 执行 UI 层。对于混合移动应用程序,则在本机 Cordova 容器中运行 UI 层。在 Mendix Runtime 中执行逻辑和数据层(Mendix Runtime 本身是用 Java 开发的且在 Java 虚拟机上运行)。

在 Mendix Client 中,我们实施了基于 JavaScript 的应对如跨站脚本等安全威胁的措施。这样可以防止在同一浏览器中运行的其他网站和 Web 应用程序从 Mendix 应用程序获取保密信息(如 cookie)。

而且,Mendix Runtime 解决了如 SQL 注入和代码执行等服务器端的安全威胁。默认情况下,来自任何客户端(包括 Mendix Client)的请求都被视为不可信任。

在构建 Mendix 应用程序时,Mendix 应用程序开发人员无需考虑技术安全方面的问题,因为平台提供了这一服务。当然,这并不意味着开发人员完全不需要考虑安全性。开发人员需要在应用程序模型中配置应用程序级别的授权和访问权限。这是因为虽然大多数技术安全问题都可以借由通用方式解决,但是作为访问数据的先决条件的业务规则和要求可能因每个应用程序和业务的不同而不同。

Mendix Runtime 中的每个操作都称为一次“行动”。Mendix Runtime 提供了许多预定义的操作,如触发和执行工作流以及评估业务规则。为了防止绕过技术安全机制,这些行动是在 Mendix Runtime 的最低级别上执行的,且应用程序开发人员不能对其进行更改。

Mendix Runtime 的核心接口(负责执行任何行为)有一个安全矩阵,其中包含每个用户角色的所有可执行行为和数据访问规则。每发送一次查询到数据库时,将在运行时应用数据访问规则。这样确保了只能检索访问规则约束范围内的数据。

我的 Mendix 应用程序如何处理已知的安全威胁?

Mendix Runtime 和 Mendix Client 具有即时可用的安全措施,可保护您的 Mendix 应用程序应对已知的安全威胁(包括但不限于 SQL 注入、XSS、CSRF 和失效的身份认证)。这些安全措施每月都会进行一次外部渗透测试。Mendix Runtime 和 Mendix Client 每天都使用行业引领者提供的静态分析和软件组成分析的最新技术进行扫描,以确保不存在任何无法缓解的漏洞。这意味着,只要仅使用 Mendix 应用程序开发环境构建 Mendix 应用程序,客户就无需进行静态分析或软件组成分析措施。

我的 Mendix 应用程序是否符合 OWASP Top 10?

Mendix Runtime 根据模型保护您的应用程序和数据,同时 Mendix Cloud 在基础架构级别处理安全性。Mendix Runtime 即时可用地解决了大多数已知的安全威胁 (OWASP top 10),因为开发人员已经去除了可能造成最常见的安全错误的功能。

有关更多信息,请参见 Mendix Studio Pro 操作方法中的如何实施应用程序安全性的最佳实践

如何在应用程序级别处理安全性?

为了向 Mendix 应用程序提供完全的安全性,您需要向用户角色明确授予对表单、实体和微流的访问权限。最终用户必须拥有这一角色才能访问这些内容。默认情况下,任何最终用户都无法访问任何内容。为了使创建原型和演示更加容易,某些安全级别需要的安全设置要少于生产系统所需的安全设置。

如何为我应用程序中的用户分配用户角色?

根据策略规则,可以在应用程序内或通 Mendix 开发人员门户为最终用户指派用户角色。MxID(Mendix 最终用户管理和供应服务)会自动读取并分配在应用程序中定义的用户角色。

如何在 Mendix 数据层处理安全性?

Mendix 通过在实体上定义数据访问规则保证数据安全性。对于每个实体,您可以定义谁可以看到哪些数据以及谁可以创建或删除数据。

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

如何通过我的应用程序分配权限?

除了公司资料和设置外,Mendix 还支持对公司管理员的定义,他们可以按照委派管理概念为用户分配权限。您可以为每个租户标识一个或多个管理员,然后这些管理员可以凭借授予的权限在该租户中执行管理任务。

在访问我的 Mendix 应用程序时如何认证用户和服务?

默认情况下,通过 MxID 处理访问 Mendix 应用程序的用户和服务的身份验证。MxID 应用 OpenID 标准。

在我的 Mendix 应用程序中如何存储密码?

Mendix 中的密码只能以哈希格式存储。Mendix 支持多种哈希算法。

登录失败后,Mendix 如何支持锁定账户?

如果用户使用错误的密码连续三次登录失败,该用户账户将被自动锁定至少 10 分钟。

管理员可以通过重置密码来手动重写此类锁定。

Mendix 如何使用 Web 服务、REST 服务和 API 对系统和服务接口进行身份验证?

系统和服务接口也必须在所依附角色下进行身份验证。默认通过用户名和密码进行验证,也可以选择其他方式(如令牌等)进行验证。API 的授权源自应用程序模型中定义的授权。

对于身份验证,Mendix 支持以下技术实施:

  • HTTP 身份验证
  • Web 服务安全标准
  • 包括 Java 在内的自定义身份验证机制

这些选项使应用身份传播成为可能。

在我的 Mendix 应用程序中可以使用哪些身份管理解决方案?

在 Mendix 中,MxID 是 Mendix Cloud 的一部分。因为基于 Mendix 平台构建,因此 MxID 具备平台的所有安全措施。MxID 提供了一个用于管理用户访问和身份验证的管理门户。

Mendix 如何支持单点登录?

在多应用程序环境中,当各个应用程序相互连接时,每个应用程序的价值将显着增加。最终用户需要做到无摩擦地在不同功能(应用程序)之间进行切换。应用程序提供者的任务就是消除这种摩擦。但是,在互联网中,不乏用意险恶、意图入侵账户的人,因此最终用户的身份验证是一项高风险的游戏。身份验证不但要快速且易于实施,而且还要易于管理并确保安全。深入了解使用情况和互连级别对于改善运营也至关重要。

单点登录 (SSO) 可以作为一种解决方案。Mendix 提供对 SSO 标准(如 SAML 2.0 和 OpenID)以及其他身份验证机制(如双重认证)的支持,但是构建自己的解决方案可能会面临挑战。

Mendix SSO 在 Mendix 平台上提供了下一代用户标识。Mendix SSO 基于 OpenID Connect 框架。通过使用身份传播增强了多应用程序集成的可能性。通过身份传播,您可以在应用程序之间构建安全而个性化的界面,为您的用户启用细粒度资源访问控制,并获得清晰的使用情况统计信息。

在 Mendix Studio 中,当您发布应用程序时会自动配置 Mendix SSO。这使开发人员几乎不用花费任何时间来激活您应用程序中 Mendix 账户的 SSO。您只需部署并邀请用户即可。

我的 Mendix 应用程序如何支持多租户?

Mendix 为开发多租户应用程序提供了即时可用的支持。Mendix 中的多租户应用程序共享相同的数据库、应用程序逻辑和用户界面。您可以使用租户特定的逻辑扩展应用程序逻辑,并且可以为每个租户设计 UI 风格。

租户对象用于执行以下操作:

  • 为应用程序定义一个租户感知对象模型 – 使用 XPath 定义配置对域对象的租户级别访问,这将限制最终用户所属公司对这些应用程序对象实例的访问
  • 定义租户特定微流并配置访问权限以实现租户级应用程序和流程逻辑
  • 通过使 CSS 依赖于 MxID 中定义的公司来申请 UI 的租户特定风格

您也可以通过使用分区、国家和地点等标识符在应用程序中自定义租户。

在我的 Mendix 应用程序中可以使用哪种加密方式?

除了静止和传输时的默认加密外,用户还可以实现列加密或上传文件加密。Mendix Marketplace 中的 Encryption 模块使用 AES 加密支持即时可用的列加密和上传文件加密。