求知 文章 文库 Lib 视频 iPerson 课程 认证 咨询 工具 讲座 Model Center   Code  
会员   
 


业务架构设计
4月18-19日 在线直播



基于UML和EA进行系统分析设计
4月25-26日 北京+在线



AI 智能化软件测试方法与实践
5月23-24日 上海+在线
 
 
 

Kubernetes教程
Kubernetes概述
Kubernetes设计架构
kubernetes设计理念
创建Kubernetes集群
基于Docker本地运行Kubernetes
使用Vagrant
本地运行Kubrenetes v1.0
Google Computer Engine入门
AWS EC2快速入门
在Azure上使用CoreOS和Weave的 Kubernetes
从零开始k8s
CoreOS部署Kubernetes集群
CloudStack部署Kubernetes集群
vSphere部署Kubernetes集群
Ferdora部署Kubernetes集群
CentOS部署Kubernetes集群
Ubuntu物理节点上部署Kubernets集群
Mesos部署Kubernetes集群
Kubernetes用户指南:应用程序管理
名词解释 Pods
名词解释 Labels
名词解释:Namespace
名词解释 Replication Controller
名词解释:Node
名词解释:ReplicaSets
名词解释 Services
名词解释 Volumes
名词解释:PV/PVC/StorageClass
名称解释:Deployment
名词解释:Secret
名词解释:StatefulSet
名词解释:DaemonSet
名词解释:Service Account
名词解释:CronJob
名词解释:Job
名词解释:Security Context和PSP
名词解释:Resource Quotas
名词解释:Network Policy
名词解释:Ingress
名词解释:ThirdPartyResources
名词解释:ConfigMap
名词解释:PodPreset
配置Kubernetes
管理应用:部署持续运行的应用
Horizontal Pod Autoscaling
管理应用:连接应用
管理应用: 在生产环境中使用Pods和容器
Kubernetes UI
Kube-API Server
授权插件
认证插件
API Server端口配置
Admission Controller
Service Accounts集群管理指南
使用Kubernetes在云上原生部署cassandra
Spark例子
Storm 示例
示例: 分布式任务队列 Celery, RabbitMQ和Flower
Kubernetes在Hazelcast平台上部署原生云应用
Meteor on Kuberenetes
配置文件使用入门
环境向导示例
在Kubernetes上运行你的第一个容器
kubectl
安装和设置kubectl
kubectl annotate
kubectl api-versions
kubectl apply
kubectl attach
kubectl cluster-info
kubectl config
kubectl config set-cluster
kubectl config set-context
kubectl config set-credentials
kubectl config set
kubectl config unset
kubectl config use-context
kubectl config view
kubectl create
kubectl delete
kubectl describe
kubectl edit
kubectl exec
kubectl logs
kubectl version
故障排查
应用程序相关的故障排查
 
 

授权插件
 
1748 次浏览
59次  

授权是Kubernetes认证中的一个独立部分,参考认证部分的文档。

授权应用在主(安全)API服务端口的所有HTTP访问请求。

任何请求的授权检查都会通过访问策略比较该请求上下文的属性,(比如用户,资源和Namespace)。API的调用必须符合一些规则,按顺序执行。

下面的选项都是可行的,可通过标志位选择:

–authorization-mode=AlwaysDeny

–authorization-mode=AlwaysAllow

–authorization-mode=ABAC

AlwaysDeny会阻止所有的请求(测试中使用的)。AlwaysAllow允许所有请求,如果不需要授权,可以使用这个参数。ABAC(Attribute-Based Access Control)用于已经配置的用户授权规则。

ABAC模式

请求属性

一个授权请求可配置五个参数:

用户(用户是否是用户串)

组(用户所属组名的列表)

请求只读性(GETs是只读的)

资源权限

仅适用于API端点,例如/api/v1/namespaces/default/pods。对于杂端点(miscellaneous endpoints,翻译有待考虑),如/version,是空串。

可访问对象的Namespace,空串的Namespace,该空串端点不支持命名对象。

我们期望增加更多的属性,允许更细粒度的访问控制,并协助策略管理。

策略文件格式

ABAC模式,也可以指定参数:–authorization-policy-file=SOME_FILENAME该文件格式每行有一个JSON对象,不会有封闭列表或者映射,而仅仅每行有一个映射。

每行是一个“策略对象”。一个策略对象是包含以下属性的一个映射:

user, 字符型;来自–token-auth-file,如果指定用户,必须匹配认证用户的用户名。

group,字符型;如果指定用户组,必须匹配认证用户所属组的其中一个。

readonly,布尔型,true表示该策略仅适用于GET操作。

resource,字符型;一个资源来自一个URL,比如Pod。

namespace,字符型;一个Namespace字符串。

未设置的属性同类型设置为zero的属性(如,空串,0,false),含义是相同的。但是,没设置的属性首选是可读性。

在未来,策略可以展现在JSON格式中,并通过REST接口进行管理。

授权算法

一个请求属性和一个策略对象的属性是相关的。

一个请求被接受时,其属性是确定的。未知属性默认设置为0,如空串,0,false。

未设置的属性将匹配相应属性的任何值。

检查属性的元组在每一个策略文件中每个策略的匹配正确性。至少有一行匹配到该请求属性,则授权该请求(但之后的验证也许会失败)。

为了让每个用户都做些事情,编写一个策略用于用户未设置的属性。(To permit any user todo something, write a policy with the user property unset. To permit an action Policy with anunset namespace applies regardless of namespace. 翻译有待考虑)

示例

Alice能够做任何事情: {“user”:”alice”}

Kubelet能够读任何pods:{“user”:”kubelet”, “resource”: “pods”, “readonly”: true}

Kubelet能够读写事件:{“user”: “kubelet”, “resource”: “events”}

Bob只能在”projectCaribou”命名空间中读pods:{“user”:”bob”, “resource”: “pods”,”readonly”: true, “ns”: “projectCaribou”}

服务账户的快速标记

一个服务账户会自动生成一个用户。该用户的名字生成是根据如下命名规范:

创建一个新的Namespace,也会附带创建一个新的服务账户,格式如下:

例如,如果你想要在Kube系统授予API默认账户的所有权限,你需要在规则文件中添加如下一行:

重启apiserver使新添加的规则生效。

插件开发

其余实现的开发相对容易,API服务会调用Authorizer接口:

确认是否允许每一个API行为。

一个授权插件是实现该接口的一个模块。授权插件源码路径:

一个授权模块完全是用Go语言实现的,或者可以调用一个远程授权服务。授权模块有自己的缓存,减少对相同或相似参数重复授权的成本。开发人员应该考虑缓存和权限撤销之间的相互交互。


您可以捐助,支持我们的公益事业。

1元 10元 50元





认证码: 验证码,看不清楚?请点击刷新验证码 必填



1748 次浏览
59次
 捐助