使用RBAC特性让您的Kubernetes集群更加安全
Posted 容器时代
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用RBAC特性让您的Kubernetes集群更加安全相关的知识,希望对你有一定的参考价值。
Kubernetes是在集群环境中管理应用程序的开源容器编排工具。在最新的版本(version 1.6)中,Kubernetes引入了诸多特性,如DaemonSet, ETCD v3, 支持更大规模的扩展,高级的调度特性和Kubeadmin的改进。此外,新的RBAC授权者是Kubernetes 1.6的另一个有趣的功能。在Kubernetes内,授权作为一个单独的认证步骤发生。授权检查将请求的属性与访问策略进行比较。一个API调用必须满足至少有一个策略才能发生。
RBAC(Role-Based Access Controll)代表基于角色的访问控制,允许Kubernetes管理员以细粒度的方式将权限应用与Kubernetes集群内的所有内容。它在Kubernetes中提供额外的安全性,并允许配置灵活的授权策略,可以在不重启容器集群的情况下进行更新。在深入了解RBAC的功能之前,我们来看看在Kubernetes如何处理授权。
Kubernetes可以在启动ApiServer启动的时候通过"标记——授权模式“进行选择。Kubernetes具有如下几种实现:
AlwaysDeny —— 阻止所有的请求(主要用于测试)
AlwaysAllow —— 允许所有的请求(不需要授权时使用)
ABAC —— 基于属性的访问控制,这里访问规则是由用户配置的,以文件的形式提供给Kubernetes
Webhook —— 允许您使用自定义或外部服务通过REST接口授权
RBAC —— 基于角色的访问控制,此处访问规则存储在Kubernetes API中,也可以预定义或者用户配置
在使用授权的请求中要包含如下属性:
user —— 用于用户认证的用户字符串
group —— 用户是其成员的组名称列表
extra —— 认证层提供的任职字符串秘钥的映射
request path —— 请求的URI,有助于提供对非资源断点的访问,如
/healthz
或/api
该请求是否访问API资源
资源请求方式:
Get, list, create, update, patch, watch, proxy, redirect, delete, deletecollection
非资源请求方式:
Get, post, put, delete
正在访问的资源
正在访问的子资源
正在访问的Namespace
正在访问的API组
正在访问的资源的名称
ABAC | RBAC |
---|---|
ABAC是基于属性的控制 | RBAC是基于角色的控制 |
任何策略改变都需要主机上的文件(ssh and root file system)授权 | 无需ssh授权即可更改策略 |
用户必须重启集群ApiServer才能更新权限 | 用户不必重启ApiServer即可更改权限 |
它允许一个简单的基于本地文件的用户配置的授权策略 | 它允许授权由Kubernetes API驱动 |
基本上,RBAC为用户提供细粒度的访问Kubernetes API资源。 RBAC使用两个对象,即Roles和RoleBindings,描述权限并连接用户和适当的资源。
Roles —— 角色是一组权限,它们在Namespace中定义。
角色有两种风格:
* Role —— 授予对所选Namespace内资源的访问权限 * ClusterRole —— 授予对集群级资源的访问权限
RoleBindings —— 将用户或用户组映射到角色,授予角色Namespace下用户的权限。
就像Roles一样,RoleBindings也有两种风格:
* RoleBinding —— 用于将橘色绑定到用户以访问Namespace下的资源。 * ClusterRoleBinding —— 用于将角色绑定到用户以访问集群中的资源。
RBAC的各个属性之间关系的示意图如下:
接下来我们看几个Roles和它们的RoleBindings的实例。
下面的例子展示了如何定义"Role":允许该角色读取default空间下的所有Pod:
Role Binding
下面的例子给出RoleBindings赋予default命名空间下的pod-reader的角色给用户jane。该策略允许用户jane可以读取default命名空间下的所有pods:
Cluster Role
下面的例子展示该ClusterRole赋予读取所有secret的权限:
下面的例子展示了RoleBinding指向一个ClusterRoles关联的dave用户,dave只能访问development空间下的secret。
ClusterRoleBinding
ClusterRoleBinding允许manager组下的任何用户都可以读取任意命名空间下的任何secret:
Kubernetes使得所有操作都很容易,RBAC使用户能够访问这些Kubernetes API资源。他还允许用户动态的配置集群用户的权限,并定义他们可以交互的资源种类。
(微信群已满,请添加k8stimes或者扫下面二维码添加好友,小助手会将您拉入群聊)
以上是关于使用RBAC特性让您的Kubernetes集群更加安全的主要内容,如果未能解决你的问题,请参考以下文章