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

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

权限控制,或者说访问控制,广泛应用于各个系统中。抽象地说,是某个主体(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,因此发生了越权访问。这种问题我们称之为“水平权限管理问题”。

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

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


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


相关实践学习
消息队列+Serverless+Tablestore:实现高弹性的电商订单系统
基于消息队列以及函数计算,快速部署一个高弹性的商品订单系统,能够应对抢购场景下的高并发情况。
云安全基础课 - 访问控制概述
课程大纲 课程目标和内容介绍视频时长 访问控制概述视频时长 身份标识和认证技术视频时长 授权机制视频时长 访问控制的常见攻击视频时长
目录
相关文章
|
23小时前
|
存储 安全 OLAP
AnalyticDB安全与合规:数据保护与访问控制
【10月更文挑战第25天】在当今数据驱动的时代,数据的安全性和合规性成为了企业关注的重点。AnalyticDB(ADB)作为阿里云推出的一款高性能实时数据仓库服务,提供了丰富的安全特性来保护数据。作为一名长期使用AnalyticDB的数据工程师,我深知加强数据安全的重要性。本文将从我个人的角度出发,分享如何通过数据加密、访问控制和审计日志等手段加强AnalyticDB的安全性,确保数据的安全性和合规性。
8 2
|
22天前
|
Kubernetes 安全 微服务
使用 Istio 缓解电信 5G IoT 微服务 Pod 架构的安全挑战
使用 Istio 缓解电信 5G IoT 微服务 Pod 架构的安全挑战
42 8
|
3月前
|
存储 监控 安全
大数据架构设计原则:构建高效、可扩展与安全的数据生态系统
【8月更文挑战第23天】大数据架构设计是一个复杂而系统的工程,需要综合考虑业务需求、技术选型、安全合规等多个方面。遵循上述设计原则,可以帮助企业构建出既高效又安全的大数据生态系统,为业务创新和决策支持提供强有力的支撑。随着技术的不断发展和业务需求的不断变化,持续优化和调整大数据架构也将成为一项持续的工作。
|
3月前
|
Kubernetes 安全 微服务
使用 Istio 缓解电信 5G IoT 微服务 Pod 架构的安全挑战
在5G电信领域,Kubernetes集群中部署微服务至关重要,但也带来了重大的安全挑战。Istio作为一个强大的开源服务网格,能有效地管理这些微服务间的通信,通过其控制平面自动将Sidecar代理注入到各微服务Pod中,确保了安全且高效的通信。Istio的架构由数据平面和控制平面组成,其中Sidecar代理作为Envoy代理运行在每个Pod中,拦截并管理网络流量。此外,Istio支持多种Kubernetes发行版和服务,如EKS等,不仅增强了安全性,还提高了应用性能和可观测性。
71 0
使用 Istio 缓解电信 5G IoT 微服务 Pod 架构的安全挑战
|
3月前
|
安全 数据库 数据安全/隐私保护
|
3月前
|
安全 数据安全/隐私保护 开发者
|
3月前
|
安全 数据安全/隐私保护
|
3月前
|
安全 Linux 数据库
|
3月前
|
存储 安全 关系型数据库
"揭秘!如何设计数据库架构,让信息系统心脏强健无比?一场关于数据效率、安全与可扩展性的深度探索"
【8月更文挑战第19天】数据库架构是信息系统的核心,关乎数据存储效率与安全及应用性能和扩展性。优秀设计需综合考量业务需求、数据模型选择、查询优化、事务处理、安全性和扩展性。首先,深刻理解业务需求,如电商系统需高效处理并增长商品、订单等数据。其次,基于需求选择合适的数据模型,如关系型或非关系型数据库。再者,优化查询性能与索引策略以平衡读写负载。同时,考虑事务处理和并发控制以保证数据一致性和完整性。最后,加强安全性措施和备份恢复策略以防数据风险。通过这些步骤,可以构建稳健高效的数据库架构,支持系统的稳定运行。
35 0
|
3月前
|
存储 监控 安全
Linux存储安全:访问控制的实践与策略
【8月更文挑战第18天】Linux存储安全:访问控制的实践与策略
50 0

热门文章

最新文章