`
lengyun3566
  • 浏览: 452647 次
  • 性别: Icon_minigender_1
  • 来自: 大连
博客专栏
D59180b9-02f1-3380-840c-ea34da46143c
《Spring Secur...
浏览量:383494
社区版块
存档分类
最新评论

《Spring Security3》第七章第三部分翻译(ACL的注意事项)

阅读更多

 

典型ACL部署所要考虑的事情

         实际部署Spring ACL到业务应用是很复杂的。我们总结了Spring ACL要注意的事情,它们在大多数Spring ACL实现场景中都存在。

关于ACL的伸缩性和性能模型

         对于小型和中型应用,添加ACL功能是很容易的,尽管它增加数据库存储和影响运行时性能,这个影响可能不会那么明显。但是,取决于ACLACE建模的粒度,在中到大型应用中,数据库的行数可能会非常惊人,甚至对对熟练的DBA都是很难的任务。

         让我们假设我们将要扩展ACL以覆盖JBCP Pets应用大多数的功能,包括用户账号和订单,还包括JBCP Pets中顾客论坛的帖子。我们对着数据建模如下:

l  所有的顾客都有账号;

l  10%的顾客拥有订单。其中每个顾客的平均订单数是2

l 订单对顾客是要保护的(read-only),但是管理员也能访问(read/write);

l  10%的顾客会在顾客论坛上发帖,其中每个顾客的帖子数量是20

l  帖子对顾客是要进行保护的(read-write),对管理员也是如此。帖子对其它顾客是read-only的。

基于我们对ACL系统的了解,我们知道数据库表有以下的可伸缩相关属性:

是否随数据伸缩

可伸缩性注释

ACL_CLASS

NO

每个域类需要一行

ACL_SID

YesUser

每个角色(GrantedAuthority)需要一行

每个用户账号需要一行(如果域对象根据用户保护)

ACL_OBJECT_IDENTITY

Yes(域类*每个类的实例数)

每个保护的域对象需要一行

ACL_ENTRY

Yes(域对象实例*单个的ACE条目)

每个ACE需要一行,对于每个域对象可能要多行

         我们可以看到ACL_CLASS并没有伸缩性的考虑(大多数的系统少于1000个域类)。ACL_SID是基于系统中的用户数线性伸缩的。这可能不用考虑,因为其它用户相关的表也以这种方式处理伸缩性(如用户账号等)。

         要考虑的两个表是ACL_OBJECT_IDENTITYACL_ENTRY。如果对一个用户有一个订单这种情况计算需要的行数,我的得到如下的估算结果:

        

每个订单的ACL数据

每个论坛帖子的ACL数据

ACL_OBJECT_IDENTITY

每个订单需要一行数据

每个帖子需要一行数据

ACL_ENTRY

三行——一行用于拥有者(即顾客的SID)的read访问,两行(一行用于读访问,一行用于写访问)用于管理员组的SID

四行——一行用于顾客组SID的读访问,一行用于拥有者的写访问,两行用于管理员组(如同订单)

         我们可以使用以上的假设并计算出ACL的伸缩性矩阵:

 

/对象

伸缩性因素

估算(低)

估算(高)

用户(Users

 

10,000

1,000,000

订单(Orders

# Users * 0.1 * 2

2,000

200,000

论坛帖子(ForumPosts

# Users * 0.1 * 20

20,000

2,000,000

ACL_SID

# Users

10,000

1,000,000

ACL_OBJECT_IDENTITY

# Orders + # Posts

22,000

2,200,000

ACL_ENTRY

(# Orders * 3) + (# Posts * 4)

86,000

8,600,000

         在典型的ACL实现中,这些预测只是要关联和保护对象的子集,你可以看到存储ACL数据的数据库行数是随着业务数据线性(或更快)增长的。特别是对于大型系统的规划,预测你可能用到的ACL数据特别重要。对于非常复杂的系统拥有数亿行关于ACL存储的数据并不罕见。

不要忽视自定义开发的成本

         使用Spring ACL的安全环境通常需要明显的开发工作以及我们讲过的配置步骤。我们例子的配置场景有以下的限制,这可能会影响到将ACL安全应用到完整站点上:

l  SID和访问凭证硬编码在应用启动的时候;

l  没有提供管理域对象(创建和删除)或管理用户、组的功能;

l  应用没有有效使用ACL的等级体系。

当整个应用规划Spring ACL时,你必须仔细考虑所有域数据管理的地方,并确保这些地方正确更新ACLACE规则并失效缓存。一般来说,方法和数据安全发生在应用的服务或业务层,而维护ACLACE所需要的钩子(hook)通常发生在数据访问层。



 如果你正在处理一个标准应用的架构,拥有合适的隔离及功能封装,可能会很容易找到一个中央位置标识这些变化。但是,如果你正在处理一个遗留的(或者开始的时候出来没有设计)架构,添加ACL功能并在数据操作的代码中支持钩子(hook)将会很困难。

正如前面所提到的,需要注意的是Spring ACL自从Acegi 1.x时代就没有明显的变化过,大约三年了。在那时,很多用户尝试使用它,并记录和以文档的形式提出了很多限制,它们中的很多保存在Spring Security JIRA库中(http://jira.springframework.org/)。缺陷SEC-479可以作为很多关键限制的入口,它们中的很多在Spring Security3中依然没有处理,(如果它们适用于你的场景)可能会需要很大的自定义编码工作。

以下是一些最重要和常见的缺陷:

l  ACL基础设施需要数字型的主键。对于使用GUIDUUID主键(近来用的越来越多,因为现代数据库提供了高效支持)的应用,这会是很大的限制;

l  JIRA缺陷SEC-1140记录的缺陷,默认ACL实现不能用按位操作正确的对比Permission二进制掩码。在关于许可授权一节,我们已经提到;

l  配置Spring ACL的方法与其它Spring Security功能存在一些不一致。简单来说,在这个功能领域,类代理和属性并没有通过DI(依赖注入)暴露,需要覆盖或重写策略会很耗时且维护代价高昂;

l  Permission的二进制掩码通过整数(integer)实现,所以最多有32个可能的位。比较常见的做法是扩展默认的未分配来声明单个对象属性的权限(例如,为读的员工社会保险号分配一个位)。复杂的部署可能会每个域对象超过32个属性,在这种情况下唯一可选的就是为了这个限制,重新对你的域对象建模。

取决于你特定应用的需要,可能会遇到新的问题,尤其是关于这些实现自定义功能要修改的类。

我应该用Spring SecurityACL吗?

         正如使用整体使用Spring Security是很强的业务依赖,使用Spring ACL也是这样——实际上,这对于ACL可能更明显,因为它紧密连接到业务方法和域对象上了。我们希望这个关于Spring ACL的指导已经为你描述了重要的各层配置和Spring ACL的概念,这用来分析Spring ACL在你的应用中如何使用,并帮助你决定和匹配它的功能到实际应用中。

小结

         在本章中,我们关注访问控制列表安全以及对于这种类型的安全Spring Security ACL模块是如何实现的。我们所做如下:

l  了解访问控制列表的基本概念,以及为什么说它们是授权的有效解决方式;

l  学习Spring ACL实现的关键概念,包括访问控制条目、SID以及对象标识;

l  考察支持ACL系统的数据库模式以及逻辑设计;

l  配置所有需要的Spring Bean来启用Spring ACL模块并增强了一个服务接口来使用注解的方法授权。我们接下来将数据库中已有的用户以及站点使用的业务对象,变成ACE声明和辅助的实例数据;

l  了解Spring ACL许可授权处理相关的概念;

l  扩展了我们关于SpringSecurity JSP标签库和SpEL表达书语言(用于方法安全)的知识来实现ACL检查;

l  讨论易变的ACL概念,并了解在易变的ACL环境中的基本配置和需要自定义的代码;

l  开发了一个自定义的ACL许可授权并配置应用验证器有效性;

l  配置和分析使用Ehcache缓存管理器以减少Spring ACL的数据库影响;

l  分析在复杂业务应用中使用Spring ACL的影响以及设计考虑因素。

 

这完成了本书中关于Spring Security关键概念的部分。在接下来的章节中,我们将会深入讨论Spring Security认证与多种类型的外部系统进行集成。如果你不知道这些系统(OpenIDLDAP等)背后的技术,我们也将会带领你进行学习,所以请继续阅读。

 

  • 大小: 22 KB
0
0
分享到:
评论

相关推荐

    《CSS样式表行为手册》中文chm最新版本

    CSS样式表里重点讲述“行为”功能的一本CHM参考手册,很实用方便,内容也很丰富,收藏一下哦!

    1-中国各地区-固定资产投资-房地产开发投资情况(1999-2020年)-社科数据.zip

    中国各地区固定资产投资中的房地产开发投资数据集涵盖了1999至2020年的详细统计信息。该数据集包含了全国各城市地级市州的房地产开发投资情况,这些数据对于理解中国城市化进程、经济发展和房地产市场趋势至关重要。数据集中的指标包括年份、地区以及对应的房地产开发投资额(以亿元为单位),这些数据来源于中国区域统计年鉴及各省市统计年鉴。通过这些数据,研究者和决策者可以深入了解不同地区的经济动态,评估房地产市场的健康状况,并据此制定相应的政策和战略。这些数据不仅有助于宏观经济分析,还能为房地产开发商提供市场进入和扩张的决策支持。

    1-中国各地区数字经济发展对环境污染的影响数据(2011-2021年)-社科数据.zip

    中国各地区数字经济发展对环境污染的影响数据集(2011-2021年)提供了深入分析数字经济与环境污染关系的实证数据。该数据集涵盖了中国各地区在数字经济发展水平、环境污染物排放量、人口与经济指标、外资利用情况以及绿色专利指标等多个维度的数据。具体来说,数据集包括了行政区划代码、年份、所属省份等基本信息,以及数字经济水平熵值法、PM2.5均值、工业烟粉尘排放量、工业二氧化硫排放量、工业废水排放量等关键指标。此外,数据集还涉及了人口密度、人均地区生产总值、实际利用外资额占GDP之比、科学支出占比等经济和人口统计数据,以及绿色专利申请和授权总量等创新指标。这些数据不仅有助于研究者探讨数字经济对环境污染的直接影响,还能分析其潜在的中介机制和影响因素,为理解数字经济如何影响环境质量提供了宝贵的数据资源。

    1-中国各区县-工业行业企业数2004-2020年-社科数据.zip

    中国各区县工业行业企业数数据集覆盖了2004至2020年的时间跨度,提供了全国范围内区县级工业企业数量的详细统计。这些数据不仅能够反映中国工业企业的发展趋势和分布状况,而且对于研究工业行业的区域差异、发展质量和效益具有重要意义。数据集中包含了省份、地区、时间以及工业行业企业数目等关键指标,总计超过33000条数据记录。这些数据来源于各地方统计局,并经过整理,为研究者提供了一个宝贵的资源,以支持对中国经济特别是工业行业的深入分析和研究。

    BGM坏了吗111111

    BGM坏了吗111111

    毕业设计&课设_主要语言为 Java,含相关文件及配置.zip

    1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。

    Puppet 模块用于安装和管理 Python、pip、virtualenvs 和 Gunicorn 虚拟主机 .zip

    puppet-python The Puppet module is used to install and manage python, pip, virtualenvs, and Gunicorn virtual hosts. Please note that the module stankevich/python has been deprecated and is now available under Vox Pupuli: puppet/python. Usage For usage of classes, see Resources. If contributed, update to bundle exec rake strings:generate\[',,,,false,true'] hierarchical configuration. This module supports configuration through hiera. The following example creates two python3 virtual environments.

    WorldPO连接器标准尺寸及其选型指南,包含1.27mm、0.8mm、0.5mm间距的高速连接器

    WORLDPO(沃德披欧)是在政策支持下,成功做出对标进口品质和多达15个系列型号的连接器品牌,并且在专业机构的检测下,成功通过ISO 9001认证,FCC认证,CE认证。 内容概要:本文档为WorldPO连接器产品的选型手册,详细介绍了多种型号连接器的产品规格和参数, 包括标准的引脚间距(1.27mm、0.8mm、0.5mm、0.635mm等)、具体的引脚数量(如6-500针)、各式引脚样式(如贴片式、直插式等)、电镀方式(金镀层厚度不同)、 此外,还提供了配对合高高度、接触材料、电流负载能力、额定电流、不同型号的最大插拔次数和温度范围以及操作环境条件等多种关键属性说明。文中所有技术数据均有详细的图表辅助解读,方便用户快速查找所需参数。此外,还支持非标准定制服务。 使用场景及目标:帮助用户快速查找并选择适合自己应用需求的电连接器型号。例如,针对不同的信号传输要求,如高速数据传输、电力供应或是模拟信号传输,可以选择具有相应特性的连接器。 可以通过直接联系供应商来获取进一步的支持和服务建议。 其他说明:文档末尾提供联系人邮箱和电话,方便客户进行业务洽谈和技术支持查询。

    操作系统概述期末复习题(含解析)

    操作系统期末复习题

    毕业设计&课设_博客系统,含前后端技术,附搭建教程,曾获优秀毕业论文及展示页面截图.zip

    1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。

    个人原创STM32F1 BOOTLOADER,主控芯片为STM32F103VET6

    F103BL 是BOOTLOADER,需要通过仿真器进行写入; F103Usr 是一个用户程序编写实例; SW_BootLoader 是QT写的上位机,在BL的模式下通过串口和这个上位机将用户程序写入芯片; STM32的程序是利用uVision5.36编译 SW_BootLoader 是用QT5.15.2编译的

    线性调频LFM脉冲压缩雷达仿真 matlab代码.rar

    1.版本:matlab2014/2019a/2024a 2.附赠案例数据可直接运行matlab程序。 3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。 4.适用对象:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业和毕业设计。 替换数据可以直接使用,注释清楚,适合新手

    数据科学领域的主流数据集类型及其应用分析

    内容概要:本文详细介绍了数据集中最常见的几种类型,包括结构化数据集(关系型数据库数据、时间序列数据、地理空间数据)、非结构化数据集(文本数据、图像数据、音频数据、视频数据)、半结构化数据集(JSON数据、XML数据)、流式数据集(传感器数据、社交媒体数据、网络日志数据)、多维数据集(数据仓库数据、数据立方体数据)和合成数据集(模拟数据、生成数据)。每种类型都具体描述了其特点、应用场景和优势。 适合人群:数据科学家、数据分析师、机器学习工程师和其他从事数据相关工作的专业人士。 使用场景及目标:帮助读者深入了解各种数据集的特点和应用场景,提升数据处理和分析能力,更好地利用数据集解决实际问题。 其他说明:随着大数据和人工智能技术的发展,数据集的种类、规模和复杂性不断增加,了解不同类型数据集的特点和应用场景对于提高算法性能和效果至关重要。

    中创建系统级简化参数化铰接式机器人模型 matlab代码.rar

    1.版本:matlab2014/2019a/2024a 2.附赠案例数据可直接运行matlab程序。 3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。 4.适用对象:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业和毕业设计。 替换数据可以直接使用,注释清楚,适合新手

    使用python语言和Django框架创建的博客网站系统,下载即可运行,可做毕业设计

    使用python语言和Django框架创建的博客网站系统,下载即可运行,可做毕业设计。

    使用c++语言编程实现灰色预测模型的源代码

    灰色预测模型实现。本资源是使用c++语言编程实现灰色预测模型的源代码。模型为GM(1,1)。灰色预测模型是一种用于处理不确定性和不完全信息的预测方法,它通过分析系统内部因素之间的发展趋势,对原始数据进行生成处理,以寻找系统变动的规律,并建立微分方程模型来预测事物的未来发展趋势。灰色预测的核心是使用时间响应方程:x(k+1)=(x⑴-u/a)exp()+u/a,来根据初始值x(1)来计算x(k)(k=2,3,4....N,N+1),其中α称为发展灰数;μ称为内生控制灰数。可用二乘估计来计算得到。

    理光Ricoh 7502打印机驱动下载

    理光 Ricoh 7502 是一款高速黑白数码复印机。 【复印功能】 复印速度:75cpm 复印分辨率:600x600dpi 复印尺寸:最大 A3,305x432mm;最小 A6 SEF,100x140mm 预热时间:小于 30 秒 首页复印时间:小于 3.2 秒 连续复印页数:1-999 页 缩放范围:25-400%(以 1% 为单位) 【打印功能】 打印控制器:选配 打印速度:75ppm 打印分辨率:1200x1200dpi 打印语言:标准 PCL5e/PCL6 (XL),选购 Adobe PostScript3,XPS,Universal Driver 【扫描功能】 扫描控制器:选配 扫描速度:黑白 / 彩色单面 90ipm(200dpi),黑白 / 彩色双面 178ipm(200dpi) 扫描分辨率:100dpi,200dpi,300dpi,400dpi,600dpi 输出格式:单页 TIFF/JPEG,PDF,高压缩 PDF,加密 PDF,PDF/A;多页 TIFF,PDF,高压缩 PDF,加密 PDF,PDF/A

    最优化的顶帽和同态滤波器用于血管增强的matlab代码.rar

    1.版本:matlab2014/2019a/2024a 2.附赠案例数据可直接运行matlab程序。 3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。 4.适用对象:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业和毕业设计。 替换数据可以直接使用,注释清楚,适合新手

    原生js随机图片拖拽排序代码.zip

    原生js随机图片拖拽排序代码.zip

    2022023721 蒋连成.pkt

    2022023721 蒋连成.pkt

Global site tag (gtag.js) - Google Analytics