一 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 相关授权操作

 {"apiVersion": "abac.authorization.kubernetes.io/v1beta1", "kind": "Policy", "spec": {"user": "alice", "namespace": "*", "resource": "*", "apiGroup": "*"}}
解释:Alice可以对所有资源做任何事情。
 {"apiVersion": "abac.authorization.kubernetes.io/v1beta1", "kind": "Policy", "spec": {"user": "kubelet", "namespace": "*", "resource": "pods", "readonly": true}}
解释:Kubelet可以读取任何pods。
 {"apiVersion": "abac.authorization.kubernetes.io/v1beta1", "kind": "Policy", "spec": {"user": "kubelet", "namespace": "*", "resource": "events"}}
解释:Kubelet可以读写事件。
 {"apiVersion": "abac.authorization.kubernetes.io/v1beta1", "kind": "Policy", "spec": {"user": "bob", "namespace": "projectCaribou", "resource": "pods", "readonly": true}}
解释:Bob可以只读取命名空间“projectCaribou”中的pod。
 {"apiVersion": "abac.authorization.kubernetes.io/v1beta1", "kind": "Policy", "spec": {"group": "system:authenticated", "readonly": true, "nonResourcePath": "*"}}
{"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用户名,该服务帐户的用户名是根据命名约定生成的:
 system:serviceaccount:<namespace>:<serviceaccountname>
创建新命名空间会导致以下列格式创建新服务帐户:
 system:serviceaccount:<namespace>:default
例如,如果要kube-system使用ABAC为API 授予默认服务帐户(在命名空间中)完全权限,则应将此行添加到策略文件中:
 {"apiVersion":"abac.authorization.kubernetes.io/v1beta1","kind":"Policy","spec":{"user":"system:serviceaccount:kube-system:default","namespace":"*","resource":"*","apiGroup":"*"}}
需要重新启动apiserver才能获取新的策略行。
注意:该ABAC授权功能在Kubernetes 1.6版本开始已被弃用!

附007.Kubernetes ABAC授权的更多相关文章

  1. 附006.Kubernetes RBAC授权

    一 RBAC 1.1 RBAC授权 基于角色的访问控制(RBAC)是一种基于个人用户的角色来管理对计算机或网络资源的访问的方法. RBAC使用rbac.authorization.k8s.io API ...

  2. 附024.Kubernetes全系列大总结

    Kubernetes全系列总结如下,后期不定期更新.欢迎基于学习.交流目的的转载和分享,禁止任何商业盗用,同时希望能带上原文出处,尊重ITer的成果,也是尊重知识.若发现任何错误或纰漏,留言反馈或右侧 ...

  3. 附010.Kubernetes永久存储之GlusterFS超融合部署

    一 前期准备 1.1 基础知识 在Kubernetes中,使用GlusterFS文件系统,操作步骤通常是: 创建brick-->创建volume-->创建PV-->创建PVC--&g ...

  4. 附004.Kubernetes Dashboard简介及使用

    一 Kubernetes dashboard简介 1.1 Web UI简介 dashboard是基于Web的Kubernetes用户界面.可以使用dashboard将容器化应用程序部署到Kuberne ...

  5. Kubernetes RBAC授权普通用户对命名空间访问权限

    Kubernetes RBAC授权普通用户对命名空间访问权限 官方文档:https://www.cnblogs.com/xiangsikai/p/11413970.html kind: Role ap ...

  6. 附014.Kubernetes Prometheus+Grafana+EFK+Kibana+Glusterfs整合解决方案

    一 glusterfs存储集群部署 注意:以下为简略步骤,详情参考<附009.Kubernetes永久存储之GlusterFS独立部署>. 1.1 架构示意 略 1.2 相关规划 主机 I ...

  7. 附014.Kubernetes Prometheus+Grafana+EFK+Kibana+Glusterfs整合性方案

    一 glusterfs存储集群部署 注意:以下为简略步骤,详情参考<附009.Kubernetes永久存储之GlusterFS独立部署>. 1.1 架构示意 略 1.2 相关规划 主机 I ...

  8. 附005.Kubernetes身份认证

    一 Kubernetes访问 1.1 Kubernetes交互 与Kubernetes交互通常有kubectl.客户端(Dashboard).REST API请求. 1.2 API访问流程 用户使用k ...

  9. 附008.Kubernetes TLS证书介绍及创建

    一 Kubernetes证书 1.1 TLS Kubernetes系统的各个组件需要使用TLS证书对其通信加密以及授权认证,建议在部署之前先生成相关的TLS证书. 1.2 CA证书创建方式 kuber ...

随机推荐

  1. java之JVM内存模型

    简而言之: 基础数据类型,值是保存在栈中: 引用数据类型,值保存在堆中,栈中保存的是引用数据类型在堆中的地址: 方法区:保存所有的class和static变量:

  2. UVA-156

    Most crossword puzzle fans are used to anagrams - groups of words with the same letters in different ...

  3. Python学习笔记—自动化部署【新手必学】

      前言本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理.作者:唯恋殊雨   目录 pexpect fabric pexpect P ...

  4. VIP 视频开发板 上位机 测试软件 下载地址,玩转各自分辨率(V201抢先版)

    本上位机最高测试帧率 133fps 目前支持分辨率:更多分辨率支持,敬请期待或给我留言VGA:640*4801.3M:1280*10242M:1600*1200786p:1024*768 格式兼容:1 ...

  5. Django 06

    目录 注意 聚合查询 分组查询 F与Q查询 orm字段和参数 自定义字段类型 事务 ACID 三大范式 开启事务 注意 只要和数据库相关的功能, 基本在 django.db.models 里面 聚合查 ...

  6. Python3 类的继承小练习

    1.打印并解释结果 class Parent(object): x = 1 class Child1(Parent): pass class Child2(Parent): pass print(Pa ...

  7. 解密国内BAT等大厂前端技术体系-携程篇(长文建议收藏)

    1 引言 为了了解当前前端的发展趋势,让我们从国内各大互联网大厂开始,了解他们的最新动态和未来规划.这是解密大厂前端技术体系的第四篇,前三篇已经讲述了阿里.腾讯.百度在前端技术这几年的技术发展. 这一 ...

  8. 5分钟搞清楚Synchronized和Lock的概念与区别

    前言 并发编程中,锁是经常需要用到的,今天我们一起来看下Java中的锁机制:synchronized和lock. Synchronized 和 Lock的概念 Synchronized 是Java 并 ...

  9. android之 xml文件一般用到的属性

    android:layout_above 将该控件的底部至于给定ID的控件之上android:layout_below 将该控件的顶部至于给定ID的控件之下android:layout_toLeftO ...

  10. item()方法遍历字典

    Python字典的遍历方法有好几种,其中一种是for...in,这个我就不说明,在Python了几乎随处都可见for...in.下面说的这种遍历方式是item()方法. item() item()方法 ...