应用层安全架构设计-访问控制

本文涉及的产品
访问控制,不限时长
简介: 应用层安全架构设计-访问控制

权限控制,或者说访问控制,广泛应用于各个系统中。抽象地说,是某个主体(subject)对某个客体(object)需要实施某种操作(operation),而系统对这种操作的限制就是权限控制。

在网络中,为了保护网络资源的安全,一般是通过路由设备或者防火墙建立基于IP和端口的访问控制。

在操作系统中,对文件的访问也要访问控制。比如在Linux系统中,一个文件可以执行的操作分为“读”、“写”、“执行”三种,这三种操作同时对应着三种主体:文件拥有者、文件拥有者所在的用户组、其他用户,主体、客体、操作这个三者之间的对应关系,构成了访问控制列表。

在Web应用中,根据访问客体的不同,常见的访问控制可以通过解决以下几个目标问题来实现:

  • 他是谁?
  • 他只能访问给他授予了权限的接口!
  • 他不能查看别人的数据!

下面我们以前后端分离的项目为例,解释如何解决这几个目标问题:


他是谁?


在前后端分离项目中,前端用户登录后后端服务会给其颁发一个token,比如我们所熟知的JWT(JSON Web Token),而后每次前端请求后端接口都会带上这个token。由于JWT上会带有用户信息,此时我们要做的就是校验这个token对应的用户是否为系统合法用户。


他只能访问给他授予了权限的接口!


光知道他是系统的合法用户还是不够,web应用还得保证当前用户只能访问他拥有权限的接口。

比如有个薪资查询的接口,业务上只允许部门领导角色访问。如果系统不做控制,张三知道了薪资查询接口,就拿着自己的token去调用此接口然后就能知道所有员工的薪资了,这种问题我们称之为"越权访问"。

处理这个问题现在应用广泛的一种方法就是“基于角色的访问控制(RBAC:Role-Based Access Control)”,也称“垂直权限管理”。

RBAC事先会在系统中定义出不同的角色,不同的角色拥有不同的权限,一个角色实际上就是一个权限的集合。而系统的所有用户都会被分配到不同的角色中,一个用户可能拥有多个角色。

当用户带着token请求后端服务时,我们还得通过token查询出当前用户所属的角色,然后根据角色查询出用户拥有的所有权限。权限框架 Spring Security 和  Shiro都很好的支持RBAC控制。


他不能查看别人的数据!


张三和李四都是部门领导,他们都可以查询员工薪资的权限。但是他们都只被允许查看自己部门员工的薪资。张三知道了接口调用规则,就可以通过修改调用参数获取李四部门员工的薪资了,这种情况当然也是不被允许的。

在RBAC模型下,系统只会验证用户A是否属于角色RoleX,而不会判断用户A是否能访问只属于用户B的数据DataB,因此发生了越权访问。这种问题我们称之为“水平权限管理问题”。

现在数据级权限管理并没有很通用的解决方案,一般是具体问题具体解决。

简单的做法是给接口请求加上秘钥,通过接口参数+当前系统登录人一起进行加密发送给后端服务,后端接受到请求后对加密内容进行解密,根据约定的规则解析出用户信息并与登录用户进行匹配,匹配上正常访问,匹配不上则拒绝访问。


以上,希望对你有所帮助!


相关实践学习
云安全基础课 - 访问控制概述
课程大纲 课程目标和内容介绍视频时长 访问控制概述视频时长 身份标识和认证技术视频时长 授权机制视频时长 访问控制的常见攻击视频时长
目录
相关文章
|
2月前
|
监控 安全 网络安全
安全防御之授权和访问控制技术
授权和访问控制技术是安全防御中的重要组成部分,主要用于管理和限制对系统资源(如数据、应用程序等)的访问。授权控制用户可访问和操作的系统资源,而访问控制技术则负责在授权的基础上,确保只有经过授权的用户才能访问相应的资源。
335 0
|
自然语言处理 Kubernetes 安全
从零开始入门 K8s | K8s 安全之访问控制
访问控制是云原生安全的一个重要组成部分,也是 K8s 集群在多租环境下必要且基本的安全加固手段。在 K8s 体系中,访问控制又分为三个重要的组成部分,请求认证,鉴权和运行时刻的 admission 准入控制。在本文中,作者将带领大家了解这 3 部分的基本定义和使用方法,并给出多租环境下安全加固的相关最佳实践。
从零开始入门  K8s | K8s 安全之访问控制
|
2月前
|
弹性计算 安全 API
访问控制(RAM)|云上安全使用AccessKey的最佳实践
集中管控AK/SK的生命周期,可以极大降低AK/SK管理和使用成本,同时通过加密和轮转的方式,保证AK/SK的安全使用,本次分享为您介绍产品原理,以及具体的使用步骤。
102175 5
|
2月前
|
存储 安全 数据库
InfluxDB安全机制:用户认证与访问控制
【4月更文挑战第30天】InfluxDB的安全机制聚焦于用户认证和访问控制,包括启用默认禁用的用户认证,创建和管理加密密码的用户,以及实施细粒度的权限和角色管理。建议启用认证、设置强密码,合理分配权限,定期更新和审计,以及使用HTTPS确保数据传输安全,以增强数据库安全性。
|
11月前
|
安全 关系型数据库 MySQL
MySQL安全与权限管理:保障数据安全与访问控制
本文深入探讨了MySQL数据库的安全与权限管理,通过详细的代码示例,介绍了用户与权限的概念,权限管理与访问控制的方法,以及数据库安全性策略的制定与实施。MySQL提供了强大的安全性功能,能够帮助管理员保护数据库的数据安全和限制用户的访问权限。了解如何创建用户、授予权限,以及如何制定数据库安全性策略,将使管理员能够有效地管理和保护数据库,降低潜在的安全风险。
589 0
|
安全 网络安全 数据安全/隐私保护
IIS安全:配置web服务器权限更好地实现访问控制
IIS安全:配置web服务器权限更好地实现访问控制
373 1
|
数据采集 存储 缓存
漫画:鉴权与安全访问控制的技术血脉
在互联网大潮中,B/S逐渐流行,对于这类从传统软件转化来的项目,一般采用的是用户名密码登陆的鉴权方式。为了对用户身份做认证,一般采用的是邮箱认证。09年的时候,静儿还在人人网,当时在研究自动化测试。有段时间有个小公司在搞活动,新注册用户可以抽奖,中奖率特别高。静儿就用自动化测试工作批量注册邮箱和此网站用户,刷出来好多小礼物。充分验证了自己的自动化测试工具的实用性。
 漫画:鉴权与安全访问控制的技术血脉
|
存储 安全 测试技术
云效安全那些事儿—访问控制与数据安全
云效 Codeup 提供了代码 GPG 签名,拒绝未签名的提交;支持代码属主验证,约束提交记录属主。 在质量管控上,云效 Codeup 精细化读写权限管控,支持代码提交卡点机制,保障提交质量。 接下来我们一起看看云效 Codeup 的这些安全防护功能如何使用。
1259 0
云效安全那些事儿—访问控制与数据安全
|
2月前
|
安全 网络安全 数据安全/隐私保护
【专栏】IT 知识百科:访问控制列表(ACL)是网络安全的关键机制,用于定义和管理网络资源的访问权限
【4月更文挑战第28天】访问控制列表(ACL)是网络安全的关键机制,用于定义和管理网络资源的访问权限。ACL工作原理包括定义规则、匹配规则和执行操作。标准ACL基于源IP过滤,扩展ACL则提供更多筛选条件。时间及用户基础的ACL提供更细化的控制。优点在于增强安全性和精细管理,但管理复杂性和性能影响也是挑战。未来,ACL将趋向智能化和自动化,与更多安全技术结合,以提升网络安全。**