精华内容
下载资源
问答
  • 附007.Kubernetes ABAC授权

    2019-07-02 13:19:00
    一 ABAC 1.1 ABAC授权 ...使用--authorization-policy-file=SOME_FILENAME和--authorization-mode=ABAC启用ABAC模式。 二 ABAC使用 2.1 策略文件格式 策略文件格式是每行一个JSON对象,每一行都是“策略...

    一 ABAC

    1.1 ABAC授权

    基于属性的访问控制(ABAC)定义了访问控制范例,通过使用将属性组合在一起的策略向用户授予访问权限。
    使用--authorization-policy-file=SOME_FILENAME和--authorization-mode=ABAC启用ABAC模式。

    二 ABAC使用

    2.1 策略文件格式

    策略文件格式是每行一个JSON对象,每一行都是“策略对象”,其中每个这样的对象都是具有以下属性的映射:
    版本控制属性:
    apiVersion:字符串类型,有效值为“abac.authorization.kubernetes.io/v1beta1”;
    kind:字符串类型,有效值为“Policy”;
    spec 属性设置为具有以下属性的map:
    • 主题匹配属性:
    user:字符串类型,来自于--token-auth-file。如果指定user,则必须与经过身份验证的用户的用户名匹配。
    group:字符串类型,如果指定group,则必须与经过身份验证的用户的其中一个组匹配。
    system:authenticated:匹配所有经过验证的请求;
    system:unauthenticated:匹配所有未经身份验证的请求。
    • 资源匹配属性:
    apiGroup:字符串类型,一个API组。
    例如: extensions
    通配符:*匹配所有API组。
    namespace:字符串类型,命名空间。
    例如: kube-system
    通配符:*匹配所有资源请求。
    resource:字符串类型,资源类型。
    例如: pods
    通配符:*匹配所有资源请求。
    • 非资源匹配属性:
    nonResourcePath:字符串类型,非资源请求路径。
    例如:/version或/apis
    通配符:
    * 匹配所有非资源请求。
    /foo/*匹配的所有子路径/foo/。
    • readonly:布尔类型,当为true时,表示资源匹配策略仅适用于get,list和watch操作,非资源匹配策略仅适用于get操作。
    注意:unset属性与为其类型设置为零值的属性相同(例如,空字符串,0,false)。

    2.2 Kubectl

    Kubectl使用api-server的端点/api和/apis端点来发现服务的资源类型。
    使用ABAC授权时,必须通过nonResourcePath策略中的属性显式公开这些特殊资源。
    要检查特定kubectl操作中涉及的HTTP调用,可通过以下命令查看:
    kubectl --v=8 version

    2.3 相关授权操作

      1 {"apiVersion": "abac.authorization.kubernetes.io/v1beta1", "kind": "Policy", "spec": {"user": "alice", "namespace": "*", "resource": "*", "apiGroup": "*"}}
    解释:Alice可以对所有资源做任何事情。
      1 {"apiVersion": "abac.authorization.kubernetes.io/v1beta1", "kind": "Policy", "spec": {"user": "kubelet", "namespace": "*", "resource": "pods", "readonly": true}}
    解释:Kubelet可以读取任何pods。
      1 {"apiVersion": "abac.authorization.kubernetes.io/v1beta1", "kind": "Policy", "spec": {"user": "kubelet", "namespace": "*", "resource": "events"}}
    解释:Kubelet可以读写事件。
      1 {"apiVersion": "abac.authorization.kubernetes.io/v1beta1", "kind": "Policy", "spec": {"user": "bob", "namespace": "projectCaribou", "resource": "pods", "readonly": true}}
    解释:Bob可以只读取命名空间“projectCaribou”中的pod。
      1 {"apiVersion": "abac.authorization.kubernetes.io/v1beta1", "kind": "Policy", "spec": {"group": "system:authenticated", "readonly": true, "nonResourcePath": "*"}}
      2 {"apiVersion": "abac.authorization.kubernetes.io/v1beta1", "kind": "Policy", "spec": {"group": "system:unauthenticated", "readonly": true, "nonResourcePath": "*"}}
     
    解释:任何人都可以对所有非资源路径发出只读请求。
    更多RBAC参考:https://kubernetes.io/docs/reference/access-authn-authz/rbac/#role-and-clusterrole

    2.4 服务账户

    每个服务帐户都有一个相应的ABAC用户名,该服务帐户的用户名是根据命名约定生成的:
      1 system:serviceaccount:<namespace>:<serviceaccountname>
    创建新命名空间会导致以下列格式创建新服务帐户:
      1 system:serviceaccount:<namespace>:default
    例如,如果要kube-system使用ABAC为API 授予默认服务帐户(在命名空间中)完全权限,则应将此行添加到策略文件中:
      1 {"apiVersion":"abac.authorization.kubernetes.io/v1beta1","kind":"Policy","spec":{"user":"system:serviceaccount:kube-system:default","namespace":"*","resource":"*","apiGroup":"*"}}
    需要重新启动apiserver才能获取新的策略行。
    注意:该ABAC授权功能在Kubernetes 1.6版本开始已被弃用!

    转载于:https://www.cnblogs.com/itzgr/p/11120069.html

    展开全文
  • 权限系统的设计模式 ACL RBAC ABAC

    万次阅读 2018-11-02 11:17:22
    不同于常见的将用户通过某种方式关联到权限的方式,ABAC则是通过动态计算一个或一组属性来是否满足某种条件来进行授权判断(可以编写简单的逻辑)。属性通常来说分为四类:用户属性(如用户年龄),环境属性(如当前...

    ACL(Access Control List):访问权限列表  如:

     

    user1-->AC1

    user1-->AC2

    user2-->AC1    此时权限汇总成一个列表

    这种设计最常见的应用就是文件系统的权限设计,如微软的NTFS

    对权限控制比较分散,不便于管理,比如无法简单地将一组文件设置统一的权限开放给指定的一群用户

    RBAC(Role Base Access Control):基于角色的权限控制

    与ACL 对比  RBAC不用给用户单个分配权限,只用指向对应的角色就会有对应的权限,而且分配权限和收回权限都很方便

    如菜单权限的设计:用户与角色关联,角色与菜单关联

      

    ABAC(Attribute Base Access Control) 基于属性的权限控制

    不同于常见的将用户通过某种方式关联到权限的方式,ABAC则是通过动态计算一个或一组属性来是否满足某种条件来进行授权判断(可以编写简单的逻辑)。属性通常来说分为四类:用户属性(如用户年龄),环境属性(如当前时间),操作属性(如读取)和对象属性(如一篇文章,又称资源属性),所以理论上能够实现非常灵活的权限控制,几乎能满足所有类型的需求。

    例如规则:“允许所有班主任在上课时间自由进出校门”这条规则,其中,“班主任”是用户的角色属性,“上课时间”是环境属性,“进出”是操作属性,而“校门”就是对象属性了。为了实现便捷的规则设置和规则判断执行,ABAC通常有配置文件(XML、YAML等)或DSL配合规则解析引擎使用。XACML(eXtensible Access Control Markup Language)是ABAC的一个实现,但是该设计过于复杂,我还没有完全理解,故不做介绍。

    总结一下,ABAC有如下特点:

    1. 集中化管理
    2. 可以按需实现不同颗粒度的权限控制
    3. 不需要预定义判断逻辑,减轻了权限系统的维护成本,特别是在需求经常变化的系统中
    4. 定义权限时,不能直观看出用户和对象间的关系
    5. 规则如果稍微复杂一点,或者设计混乱,会给管理者维护和追查带来麻烦
    6. 权限判断需要实时执行,规则过多会导致性能问题

    既然ABAC这么好,那最流行的为什么还是RBAC呢?

    我认为主要还是因为大部分系统对权限控制并没有过多的需求,而且ABAC的管理相对来说太复杂了。Kubernetes便因为ABAC太难用,在1.8版本里引入了RBAC的方案

    ABAC有时也被称为PBAC(Policy-Based Access Control)或CBAC(Claims-Based Access Control)。

    展开全文
  • 20. 权限控制模式:ACL、RBAC、ABAC

    千次阅读 2019-01-24 18:54:54
    文章目录权限控制模式ACLRBACABACGo casbin 权限库的使用 权限控制模式 ACL 概述: 权限访问列表 实现原理: 给每个用户指定相应的权限。典型的用例为,微软的文件系统权限 缺点: 对权限的管理比较分散,无法集中...

    权限控制模式

    ACL

    概述:

    权限访问列表

    实现原理:

    给每个用户指定相应的权限。典型的用例为,微软的文件系统权限

    缺点:

    对权限的管理比较分散,无法集中管理。如无法一次性将某种权限分给一群用户,也无法一次性回收。

    RBAC

    概述:

    基于角色的访问控制

    实现原理:

    权限的分配和回收都是基于角色的,只有对于的角色有相应的权限。用户属于一种或多种角色。

    优点:

    权限的管理非常方便,权限与只与角色相关,不与用户产生直接的关联。

    ABAC

    概述:

    基于属性的权限控制

    实现原理:

    ABAC 则是通过动态计算一个或一组属性来是否满足某种条件来进行授权判断(可以编写简单的逻辑)。属性通常来说分为四类:用户属性(如用户年龄),环境属性(如当前时间),操作属性(如读取)和对象属性(如一篇文章,又称资源属性),所以理论上能够实现非常灵活的权限控制,几乎能满足所有类型的需求。

    例如规则:“允许所有班主任在上课时间自由进出校门” 这条规则,其中,“班主任” 是用户的角色属性,“上课时间” 是环境属性,“进出” 是操作属性,而 “校门” 就是对象属性了。

    缺点:

    管理起来非常复杂且不直观。

    Go casbin 权限库的使用

    model.conf

    [request_definition]
    r = sub, obj, act
    
    [policy_definition]
    p = sub, obj, act
    
    [policy_effect]
    e = some(where (p.eft == allow))
    
    [matchers]
    m = (r.sub == p.sub || p.sub == "*") && keyMatch(r.obj, p.obj) && (r.act == p.act || p.act == "*")
    
    

    policy.csv

    # 0: admin, 1: operator(运营), 9: guest(访客)
    p, 0, *, *
    
    # swagger api docs
    p, *, /swagger/*, GET
    p, *, *.ico, GET
    
    # allow all get method
    p, *, *, GET
    
    # allow all role can login and update password
    p, *, /user/login, POST
    p, *, /user/password, PUT
    
    p, 1, /app_config/*, PUT
    p, 1, /app_version, POST
    p, 1, /notice, POST
    p, 1, /notice/*, *
    p, 1, /ops_ctl, PUT
    
    展开全文
  • ABAC权限控制学习

    2021-08-05 13:49:37
    什么是ABAC模式? ABAC是基于属性的访问控制,可以使用主体、客体或动作的属性,而不是字符串本身来控制访问。 您之前可能就已经听过 XACML ,是一个复杂的 ABAC 访问控制语言。 与XACML相比,Casbin的ABAC非常简单...

    ABAC模型

    什么是ABAC模式?

    ABAC是基于属性的访问控制,可以使用主体、客体或动作的属性,而不是字符串本身来控制访问。 您之前可能就已经听过 XACML ,是一个复杂的 ABAC 访问控制语言。 与XACML相比,Casbin的ABAC非常简单:在ABAC中,可以使用struct(或基于编程语言的类实例) 而不是字符串来表示模型元素。

    例如,ABAC的官方实例如下:

    [request_definition]
    r = sub, obj, act
    
    [policy_definition]
    p = sub, obj, act
    
    [policy_effect]
    e = some(where (p.eft == allow))
    
    [matchers]
    m = r.sub == r.obj.Owner
    

    我们在 matcher 中使用 r.obj.Owner 代替 r.obj。 在 Enforce() 函数中传递的 r.obj 函数是结构或类实例,而不是字符串。 Casbin将使用映像来检索 obj结构或类中的成员变量。

    这里是 r.obj construction 或 class 的定义:

    type testResource struct {
        Name  string
        Owner string
    }
    

    Casbin模型

    Casbin:https://casbin.org/zh-CN/

    定义一个Policy策略,定义一个Matchers匹配规则,通过Request请求参数与Policy策略通过规则进行匹配,获得一个Effect影响,拿到Effect影响的结果,进入Effect影响的表达式,返回一个布尔值

    Policy 策略

    p={sub, obj, act, eft}

    策略(实体,资源,方法,影响)

    属性属性名称描述
    subsubject访问实体
    objobject访问的资源
    actaction访问的方式,POST、GET
    efteffect策略结果,一般为空,只有两种结果(allow(默认)、deny)
    [policy_definition]
    p = sub, obj, act, eft
    
    Effect 影响

    它决定我们是否可以放行,仅以下几种:

    Policy effect意义示例
    some(where (p.eft == allow))allow-overrideACL, RBAC, etc.
    !some(where (p.eft == deny))deny-overrideDeny-override
    some(where (p.eft == allow)) && !some(where (p.eft == deny))allow-and-denyAllow-and-deny
    priority(p.eft) || denypriorityPriority
    subjectPriority(p.eft)基于角色的优先级主题优先级
    • e = some(where(p.eft == allow)) 这种情况下 我们的一个matchers匹配完成,得到了allow 那么这条请求将被放行
    • e = some(where(p.eft == allow)) && !some(where(p.eft == deny))
    [policy_effect]
    e = some(where (p.eft == allow))
    

    解释:看看经过匹配规则后的返回值是否等于allow

    Request 请求
    [request_definition]
    r = sub, obj, act
    

    解释:请求入参(实体,资源,方法)

    Matchers 匹配规则

    Request 和 Policy 的匹配规则

    [matchers]
    m = r.sub == p.sub && r.obj == p.obj && r.act == p.act
    

    解释:进来的实体、资源、方法 能不能在权限表里面找到一致的

    r 请求 p 策略

    这时候会把 r 和 p 按照上述描述进行匹配,从而返回匹配结果(eft),如果不定义,会返回allow,如果定义过了,会返回我们定义过的那个结果

    模型示例:

    [request_definition]
    r = sub, obj, act
    
    [policy_definition]
    p = sub, obj, act
    
    [policy_effect]
    e = some(where (p.eft == allow))
    
    [matchers]
    m = r.sub == p.sub && r.obj == p.obj && r.act == p.act
    

    转载自:https://casbin.org/docs/zh-CN/abac

    展开全文
  • RBAC vs ABAC

    千次阅读 2017-06-06 19:57:29
    K8s在1.3版本中发布了alpha版的基于角色的访问控制(Role-based Access Control,RBAC)的授权模式。相对于基于属性的访问控制(Attribute-based Access Control,ABAC),RBAC主要是引入了角色(Role)和角色绑定...
  • 权限设计从ACL和RBAC发展而来,ABAC现在已经成为各组织的标准模式,以确保员工只有在适当的情况下才能获得他们需要的信息。 今天,数据通常被称为数字时代的新石油。企业正在利用数据来提高运营效率、改善客户体验、...
  • 访问控制Access Control DAC (Discretionary Access Control) 自主访问控制,有权限的人可以给这个权限授权 MAC(Mandatory Access Control) ... 强制访问控制,只能管理员...ABAC(attribute-based) 基于属性...
  • 术语 用户 发起操作的主体。 对象(Subject) 指操作所针对的客体对象,比如订单数据或图片文件。 权限控制表 (ACL: Access ...常见设计模式 自主访问控制(DAC: Discretionary Access Control) 系统会识别用户,然后
  • 问题描述:编写程序,使用正则表达式从一段文本中提取所有ABAC和AABB形式的四字成语,例如我行我素、无忧无虑、一生一世、高高兴兴。 技术要点:正则表达式中子模式编号。在正则表达式中,使用圆括号表示子模式,子...
  • 程序设计(放弃): 在内存页0X0807E800设置FLAG 如果是0XFF代表是新设备没有校准过--此后称重...称重任务一直走正常流程--当BLE/net收到指令的时候跳到校准模式处理完毕在跳回来即可 无需FLAG 无需设计程序 只需要...
  • 这里对后面会用到的词汇做一个说明,老司机请直接翻到常见设计模式。 用户 发起操作的主体。 对象(Subject) 指操作所针对的客体对象,比如订单数据或图片文件。 权限控制表 (ACL: Access Control List) 用来...
  • 正则表达式前加r是为了不转义反斜杠后的字符,\3代表此处重复出现子模式3 from re import findall text = '''行尸走肉、金蝉脱壳、百里挑一、金玉满堂、 背水一战、霸王别姬、天上人间、不吐不快、海阔天空、 情非得...
  • 1、基本模型-RBAC0:定义了支持RBAC模式的任何产品的最低需求。 2、高级模型-RBAC1、RBAC2:包含RBAC0,各自增加了独立的特点。 RBAC1增加了角色分级概念,一个角色可以从另一个角色继承许可权。 RBAC2增加...
  • 实际上 ABAC 是与你要管理的资源无关的,更像是一种模式,在云资源控制中大多数 subject 不是用户或者真正的人,而是客户端、实例机器等。实现一个类似 policy 的策略管理并不是很难,主要的工作在管理端的开发以及...
  • 享元模式 门面模式, 桥梁模式
  • BLP模型的安全策略包括了自主安全策略和强制安全策略: 自主安全策略使用一个访问控制矩阵表示,矩阵中的元素表示主体对客体所有允许的访问模式,主体按照在访问矩阵中被授予的对客体的访问权限对客体进行相应的...
  • 之前jvm写到ZGC了,文章被搞没了,很伤心,jvm先暂停一段时间,后边会续上,先写一下权限系统设计。 本文分为上下两篇,上篇讲一些权限系统设计领域的一些基本概念,以及基本模型的使用,下篇讲我们京东北极星商业...
  • 4.2 字符串模式匹配

    2017-10-15 19:30:09
    字符串的两种模式匹配方式:朴素算法、KMP算法。
  • 依靠不断考证,来促进自己学习新的知识,是一个不错的手段,其中权限系统设计模型分析(DAC,MAC,RBAC,ABAC,XACML),时软件开发中常用到的知识点! 试题一 【说明】某网上购物电子商务公司拟升级正在使用的在线...
  • 字符串的模式匹配:BM算法

    千次阅读 2017-03-19 15:38:03
    1977年,Robert S.Boyer和J Strother Moore提出了另一种在O(n)时间复杂度内,完成字符串匹配的算法,其在绝大多数场合的性能表现,比KMP算法还要出色,下面我们就来详细了解一下这一出色的单模式匹配算法,在此之前...
  • 权限设计模式

    2019-07-08 16:00:00
    权限设计模式 自主权限访问控 DAC的概念 DAC: Discretionry Access Control DAC权限模式下系统会自动识别用户,然后根据被操作对象(Subject)的权限控制列表ACL(Access Control List)或者权限控制矩阵(ACM:Access ...
  • 串的模式匹配算法——KMP

    千次阅读 2013-04-18 17:57:47
    声明 ... 原文的“text”翻译为主串,通常用S表示,长度为n; 原文的"pattern"翻译为模式串,通常用T表示,长度为m;...在移动了模式串之后,原始的算法(应该就是指普通的BF吧~)忽略了之前匹配的信息,
  • 词语模式

    2019-09-15 22:07:21
    1.题目 图片来源: ... ...step1:创建pattern到字符串的一张映射表(哈希),用来记录pattern字符是否被使用... boolean result=wordPattern("dog cat dog cat","abac"); System.out.println(result); } }  

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,225
精华内容 490
关键字:

abac模式