通过访问控制建立信任

大多数应用认为只要有登录页面就是安全的。

登录只是第一步。一旦用户进入,你必须回答一个问题:这个用户能做什么?

许多人混淆了身份验证(Authentication)与授权(Authorization)。

• 身份验证问的是:你是谁? • 授权问的是:你被允许做什么?

用户可能成功登录,但这并不意味着他们应该看到每一条记录或编辑每一个个人资料。

使用基于角色的访问控制 (RBAC) 来使规则清晰化。

RBAC 通过将用户角色与允许的角色列表进行比对来工作。如果你不使用访问控制,你将面临以下风险:

  • 仪表板过度暴露
  • 过多的内部权限
  • 意外的数据泄露
  • 审计追踪不足
  • 信任破裂

遵循最小权限原则。仅向用户授予其工作所需的访问权限。

• 支持人员不应看到所有的客户记录。 • 工程师默认不应拥有生产环境的访问权限。 • HR 数据必须保持隔离。 • 管理员角色必须保持稀缺且可审计。

有时仅靠角色是不够的。你需要基于操作的权限。用户可能可以查看记录,但不能删除它。这能为你提供细粒度的控制。

你还应该根据敏感度对数据进行分类: • 公开数据:姓名和照片。 • 私密数据:电子邮件和电话。 • 敏感数据:薪资或身份证号。

在代码中对这些类别进行不同的处理。这会让安全管理变得更加容易。

信任还需要问责制。每当有人接触敏感数据时,你的系统必须创建审计追踪。敏感操作必须留下痕迹。

在发布应用之前,请检查以下几点:

  • 登录和会话流程是否安全?
  • 权限是否基于角色和操作?
  • 敏感数据是否已隔离?
  • 你的默认设置是否具有限制性?
  • 你是否记录了所有访问行为?
  • 你能否向用户解释其权限?

身份验证让用户进入。授权让你的系统值得信赖。信任是一项产品特性。

来源: https://dev.to/samiatakande11/building-trust-into-authentication-practical-access-control-patterns-for-modern-apps-55pc