ssrs 基于表达式显示_基于表达式的访问控制

ssrs 基于表达式显示

1.概述

今天,我们将回顾基于表达式的访问控制(EBAC),基于角色的访问控制(RBAC)和基于属性的访问控制(ABAC)之间的区别,并将重点放在EBAC上。

2.什么是基于表达式的访问控制?

简而言之,基于表达式的访问控制是使用表达式来编写授权。

短语基于表达式的访问控制 (EBAC)当前最常与使用Spring Expression Language表达式来编写授权相关联。

在Spring Security 3.0中,引入了使用Spring EL表达式作为授权机制以及简单使用配置属性和访问决定投票者的能力。

但是,使用表达式的访问控制并不仅仅局限于Spring安全! 这篇博客文章部分是要求更大的社区认可将授权中的表达式用作基于表达式的访问控制(EBAC),因为它与其他形式的访问控制有独特的不同,因为它可以让您实现其他功能访问控制的形式,例如RBAC和ABAC。

EBAC的其他示例包括MapR中的访问控制表达式(ACE)和Windows中的动态访问控制 。 可能还有其他,例如PHP Framework Symfony 。

基于表达式的访问控制(EBAC)是否等于基于属性的访问控制(ABAC)?

不可以,但是ABAC可以与EBAC一起实施。

根据NIST特别出版物800-162,这是ABAC的高级定义:

一种访问控制方法,其中,根据主题的分配属性,对象的分配属性,环境条件以及根据这些属性和条件指定的一组策略,授予或拒绝对象对对象执行操作的请求

考虑到这一点,我们可以使用一种表达式语言(例如基于Spring Expression Language的表达式)编写自己的表达式,然后可以使用现有的@PreAuthorize@PostAuthorize@PreFilter@PostFilersec:authorize标签甚至从拦截中进行调用-url条件。

基于表达式的访问控制(EBAC)是否等效于基于角色的访问控制(RBAC)?

不,EBAC不等同于RBAC,但是RBAC内置于某些表达语言中,例如Spring EL。 例如,以下两个常用表达式使我们能够轻松实现RBAC:

  • hasRole([角色])
  • hasAnyRole([role1,role2])

但是,在编写细粒度的授权规则时,我们很容易开始编写超出RBAC粒度级别的表达式。

3. Web安全表达式

EBAC实现(例如Spring Security)使我们能够保护URL。 表达式的计算结果为true或false,定义是否授予访问权限。 在Java配置中基于userID限制RESTful应用程序中访问的示例:

http
.authorizeRequests()
.antMatchers("/user/{userId}/**").access("@webSecurity.checkUserId(authentication,#userId)")
...

4.方法安全性表达式

方法的安全性比允许或拒绝要复杂得多。

例如,在Spring Security中,有四个注释具有表达式属性,以执行调用前和调用后的授权检查,还支持过滤提交的集合参数或返回值。

最常用的@PreAuthorize决定是否可以实际调用方法。

@PostAuthorize (一种不常用的注释)在调用方法后执行访问控制检查。

使用@PostFilter ,Spring Security遍历返回的集合并删除提供的表达式为false的所有项目。

@PreFilter允许我们在方法调用之前进行过滤,但这并不常用。

下面是一个将PreAuthorize@PostFilter结合使用以实现更细粒度安全性的示例:

@PreAuthorize("hasRole('USER')")
@PostFilter("hasPermission(filterObject, 'read') or hasPermission(filterObject, 'admin')")
public List<contact> getAll();

5.何时使用基于表达式的访问控制(EBAC)?

如果我们需要的安全性比简单的访问控制列表(ACL)需要更多的粒度,则我们需要使用EBAC。 我们如何决定实施EBAC取决于我们拥有什么资源。 例如,在使用Spring Security的组织中,为什么不使用其Spring EL? 同样,如果我们有MapR,那么我们将使用它们的访问控制表达式。

在其他情况下,为了满足组织的需求,可能需要以偏爱的语言编写我们自己的表达语言才能实施EBAC。 我们之所以花时间这样做,当然是为了使我们能够在所需条件下实现所需的访问控制。 一旦我们拥有足够的表达语言来完成此任务,另一个好处就是,我们不太可能依赖他人-无论是现成的商品还是开源的。

六,结论

各种软件都具有使用表达式编写授权的功能,例如MapR,Windows,当然还有Spring Security。 如果可以使用表达式完成细粒度的访问控制,那么我将其称为-基于表达式的访问控制(EBAC),并建议您将其引用。 通过给它起一个名字,我们更有可能使用它来保护我们的系统,而不是传统的RBAC。 这样做是很好的,因为细粒度的访问控制(如果正确完成)更有可能防止违规。

翻译自: https://www.javacodegeeks.com/2019/01/expression-based-access-control.html

ssrs 基于表达式显示

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/332707.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

macOS下载、安装、使用tomcat服务器及IntelliJ IDEA for Mac 如何集成、配置、运行tomcat

文章目录web 服务器软件tomcat如何下载安装 tomcatmacOS 下如何启动 tomcatWindows 启动 tomcat部署项目的方式直接将项目放到 webapps 目录下即可在 tomcat 的配置文件 server.xml 中进行配置部署在 tomcat 的 localhost 目录下通过 xml 文件完成部署IntelliJ IDEA 集成 tomca…

run spark pi_Spark Run本地设计模式

run spark pi现在&#xff0c;许多Spark应用程序已成为遗留应用程序&#xff0c;很难在本地进行增强&#xff0c;测试和运行。 Spark具有很好的测试支持&#xff0c;但仍有许多Spark应用程序不可测试。 当您尝试运行一些旧的Spark应用程序时&#xff0c;我将分享一个常见错误…

php 表单 同步,Jquery点击按钮 异步和同步提交表单

最近在开发一个jsp学生信息管理系统&#xff0c;由于刚刚接触jsp&#xff0c;遇到问题比较多&#xff0c;特此记录与大家分享。Jquery ajax提交表单到servlet示例前台部分代码&#xff1a;姓名学号 ajax提交表单代码&#xff1a;//增加学生&#xff0c;异步提交学生表单$(&q…

IntelliJ IDEA for Mac如何配置数据源(Data Source)和用户驱动(User Driver)及数据库控制台_数据源配置(Console)详解

文章目录直接添加数据源&#xff08;Data Source&#xff09;添加驱动和数据源&#xff08;Driver and Data Source&#xff09;驱动数据库控制台直接添加数据源&#xff08;Data Source&#xff09; 直接添加数据源&#xff0c;IDE 会默认指定数据库驱动&#xff0c;如下图所示…

app aws_服务网格:Istio和AWS App Mesh

app aws本周在AWS re&#xff1a;Invent上的重大公告之一是AWS App Mesh 。 在谈论它之前&#xff0c;让我们先看一下网格到底是什么…… 什么是服务网格&#xff1f; 服务网格是微服务体系结构的基础结构层。 它处理服务之间的通信问题&#xff0c;使该通信更加可见&#xf…

php screw 密钥,php-screw php代码加密工具用法(整理)

1、进入http://sourceforge.net/projects/php-screw/下载最新版本php_screw-1.5.tar.gz 解压安装&#xff1a; #tar zxf php_screw-1.5.tar.gz #cd php_screw-1.5 #vi php_screw.h 将 #define PM9SCREW “\tPM9SCREW\t” #define PM9SCREW_LEN 10 修改为任意字串,如&#xff1a…

IntelliJ IDEA如何部署项目、部署方式以及部署相关的操作

文章目录工件列表工件类型添加工件部署项目exploded 工件的部署war 工件的部署手动部署项目war 包部署exploded 部署部署有关的操作deploy/redeploy&#xff08;部署/重新部署&#xff09;rerun/run&#xff08;重启服务器/启动服务器&#xff09;Update resources&#xff08;…

php恒等符,php学习笔记(三)操作符与控制结构

php学习笔记(三)操作符与控制结构更新时间&#xff1a;2011年08月06日 20:09:31 作者&#xff1a;好久没更新了&#xff0c;这段时间挺忙的。下面继续php学习 之 操作符与控制结构&#xff1b;一&#xff0e;字符串插入为了给开发人员处理字符串值提供最大的灵活性&#xff0…

spring框架三层架构_Spring框架架构

spring框架三层架构这是Spring Framework Architecture的概述。 了解Spring Framework的各个组成部分如何组织以及如何相互联系。 如果您想了解什么是Spring框架及其功能&#xff0c;请阅读Spring框架简介 。 总览 Spring是一个模块化框架 。 它不是作为一个软件包或多个模块捆…

IntelliJ IDEA for Mac如何管理SDK/JDK,模块如何设置SDK/JDK?

文章目录管理 IDE 中的 SDK设置模块依赖的 SDK管理 IDE 中的 SDK 设置模块依赖的 SDK

php 数组是否属于迭代器,数组的迭代器属性Iterator介绍

[导读]数组默认有迭代器属性数组默认有迭代器属性var arr [111,222,333];var aa arr[Symbol.iterator]();aa.next(); // { value: 111, done: false }aa.next(); // { value: 222, done: false }aa.next(); // { value: 333, done: false }aa.next(); // { value: undefined,…

elk 聚合日志_使用ELK堆栈进行日志聚合

elk 聚合日志1.简介 随着微服务的使用&#xff0c;创建稳定的分布式应用程序和摆脱许多遗留问题变得很容易。 但是微服务的使用也带来了一些挑战&#xff0c; 分布式日志管理就是其中之一。 由于微服务是隔离的&#xff0c;因此它们不共享数据库和日志文件&#xff0c;因此实时…

Java对象如何实现比较规则

文章目录一、Comparable二、Comparator示例代码一、Comparable public interface Comparable 此接口强行对实现它的每个类的对象进行整体排序。这种排序被称为类的自然排序&#xff0c;类的 compareTo 方法被称为它的自然比较方法。 实现此接口的对象列表&#xff08;和数组…

python教材目录,python 目录

python在安装的时候&#xff0c;就自带了很多模块&#xff0c;我们把这些模块称之为标准库&#xff0c;其中&#xff0c;有一个是使用频率比较高的&#xff0c;就是 os 。这个库中方法和属性众多&#xff0c;有兴趣的看官可以参考官方文档&#xff1a;https://docs.python.org/…

quartus状态机生成_生成器作为(快速失败)状态机

quartus状态机生成这个想法是几周前在设计“生成器”类时想到的&#xff0c;该类必须将输入发送给封装的Writer 。 实际上&#xff0c;它是Builder模式。 但是&#xff0c;规则有些复杂&#xff0c;用户必须以某种方式调用add...()方法&#xff0c;才能正确生成输出。 不用说&…

除法算式的正确表述

12 4 3&#xff0c;这个关系表达式叫作除法算式&#xff0c;表述为 12 除以 4 等于 3&#xff1b;也可以表述为 4 除 12 等于 3。

elk 日志管理_具有ELK的APIGEE API网关日志管理(弹性搜索,Logstash和Kibana)

elk 日志管理在本文中&#xff0c;我们将看到如何使用 Elastic Search &#xff0c; Logstash 和 Kibana 管理APIGEE API网关生成的日志 。 下图突出显示了日志数据如何流经ELK堆栈以进行数据可视化和监视。 作为API网关的一部分&#xff0c;我们将使用MessageLogging策略在代…

php输出分组,ThinkPHP 项目分组中的模板输出

模板输出启用了项目分组后&#xff0c;模板输出路径同原来相比有一些差别。默认输出当使用 $this->display() 指令输出默认模板时&#xff0c;输出的模板路径加上了分组名&#xff1a;TPL/模板默认主题/分组名/模块名/操作名模板后缀// 例子&#xff1a;Tpl/default/Admin/U…

平方根/立方根/根式

文章目录平方根/二次方根/二次根立方根/三次方根/三次根平方根/二次方根/二次根 如果一个正数 x 的平方等于 a&#xff0c;即 x2x^2x2 a&#xff0c;那么这个正数 x 就叫 做 a 的算术平方根&#xff08;算术二次方根&#xff09;&#xff0c;记作 a\sqrt{a}a​ &#xff0c;读…

使用junit进行单元测试_使用JUnit5对DynamoDB应用程序进行单元测试

使用junit进行单元测试在上一篇文章中&#xff0c;我描述了新的Java 2 AWS开发工具包&#xff0c;它为调用不同AWS服务的Java客户端提供了非阻塞IO支持。 在本文中&#xff0c;我将介绍一种用于单元测试AWS DynamoDB调用的方法。 有几种方法可以启动DynamoDB的本地版本– 1. …