访问权限控制和基于角色的权限

作为应用安全的核心部分,您可以通过访问权限控制来限制对应用数据和页面的访问。

您可以使用以下选项设置访问权限控制:

访问权限控制 说明
仅限管理员 只有拥有内置 Admin 角色的用户才有访问权限。
所有人 所有有权运行该应用的人都有访问权限。
角色 只有指定角色的成员才有访问权限。
脚本 只有由服务器授权脚本授予访问权限的用户才能访问。脚本输出必须为布尔值。

如果存在以下任一情况,请使用脚本:
  • 访问权限不取决于用户的角色,而是取决于用户的特征,例如项目的成员
  • 访问权限取决于两个或多个特征,例如具有两个角色的成员。另一个示例是,用户必须既具有角色成员身份,又具有符合某些条件的特定字段的值。例如:

    return user.getEmail().split('@')[1] === 'google.com' && userRoles.indexOf('Leads') !== -1
    

如果用户的电子邮件网域为 google.com 并且用户属于潜在客户,则此语句的计算结果为 true。

所有者或角色 只有记录的所有者或指定角色的成员才能访问记录操作。如需确定用户是否是记录的所有者,应用制作工具会将用户的电子邮件地址与记录中的字段内容进行比较。需要使用的字段由您指定。
继承 关系而言,有权在关系两端的数据模型中保存记录的用户可以关联记录。

基于角色的权限

角色是开发者定义的用于实现基于角色的访问权限控制的用户组。您可以将用户逐个添加到角色,也可以将其添加为 Google 群组的成员。应用制作工具还具有为用户授予特殊权限的内置 Admin 角色。

如需使用角色来自定义访问权限,请执行以下操作:

  1. 确定您的应用要使用的角色。
  2. 添加角色。
  3. 将基于角色的访问权限控制应用于模型、关系、网页和微件。将访问权限控制写入服务器脚本。
  4. 发布应用并向角色添加成员

针对角色的最佳做法

  • 仅当用户有权访问应用部署中的所有数据时,才可以将用户添加到内置 Admin 角色中。
  • 为您的应用创建与用户群组、用户需要完成的任务以及需要访问的数据相对应的角色。
  • 在部署应用以供广泛使用之前,请务必在受限部署的环境中测试基于角色的权限。您无法在预览实例中测试基于角色的权限。
  • 请定期查看角色的成员资格,并根据需要更新成员。

请谨慎使用内置 Admin 角色

默认情况下,应用制作工具应用具有一个 Admin 角色。Admin 角色与开发者定义的角色类似,具体如下:

  • 您可以将 Admin 角色用于基于角色的访问权限控制(但不能与其他角色结合使用)。
  • 您可以在部署应用时以 Admin 角色添加或移除用户。

Admin 角色的功能非常强大,因为 Admin 角色始终可以访问数据,即使在其他安全设置限制访问权限时也是如此。拥有应用项目修改权限的所有用户都是 Admin 角色的潜在成员,因为他们可以预览和部署应用。

当您预览应用时,该应用只有 Admin 角色,并且您是唯一的成员。如需测试基于角色的访问权限控制,您必须部署应用。

当您开始发布应用时,应用制作工具会将您添加到 Admin 角色中。您可以在发布应用时或发布应用后,将其他用户或群组添加到 Admin 角色中。如果任何人都不应有权访问生产环境中的所有数据,则可以将所有用户都从 Admin 角色中删除。

定义角色

您可以根据以下内容定义角色:

  • 职位角色
  • 您组织中的人员可以执行哪些任务
  • 您组织中的人员应该有权访问哪些数据

例如,您组织中的所有人都可以修改自己的联系信息。只有经理可以审批休假请求。只有财务部门的成员才能查看应收账款和应付账款。

添加角色

  1. 依次打开应用制作工具和您的应用。
  2. 点击 Settings App settings。
  3. Security 下,找到 Access Roles 部分,并输入角色名称。

    注意:角色名称可以包含字母、数字和符号,但不能包含空格。角色名称区分大小写 - Financefinance 是不同的角色。

使用角色设置访问权限

如需使用角色控制应用安全,请执行以下操作:

  1. 保护对模型记录的操作

  2. 保护模型之间的关系

  3. 保护页面

  4. 保护服务器脚本

为成员分配角色

您在应用项目中创建角色,但在应用部署中指定其成员。因此,您可以发布多个版本的应用,例如测试和生产部署,而同一角色可以有不同的成员。您可以更新已发布应用的角色成员,无需重新发布应用。

请转至保护应用部署并向角色添加用户查看相关说明。