Kubernetes指南:多租户

发布于 2017-11-10 · 本文总共 1231 字 · 阅读大约需要 4 分钟

原生多租户的限制

Kubernetes在多租户方面的支持还是比较少的,没有“租户”这一概念, 也只有namespace提供了一个逻辑的资源池(可以给这个namespace设定一些资源的配额), 并且它在认证授权、网络、Container Runtime等方面离真正的多租户还都比较远。

  • 1.认证方面,虽然支持client certificates,tokens,http basic auth等,但没有用户管理的功能。 如果想要新建用户,需要手动修改配置文件并重启服务。 最新版本增加了Keystone的认证,可以借助Keystone来管理用户。

  • 2.授权方面,目前只有AlwaysDeny ,AlwaysAllow以及ABAC模式。 ABAC模式根据一个策略文件来配置不同用户的权限,比如限定用户只能访问特定的namespace等,但对于新创建的namespace等资源需要重复修改策略文件。

  • 3.Kubernetes要求cluster内部所有的容器之间是全通的,而多租户情况下需要不同租户之前网络是隔离的。

  • 4.Docker的安全性问题,跟虚拟化还是有不少距离。

通俗的讲,认证就是验证用户名密码,授权就是检查该用户是否拥有权限访问请求的资源

Kubernetes中使用Node授权

Node授权是一种特殊授权模式,专门授权由kubelet访问的API请求。

概述

Node授权器允许kubelet执行的API操作包括:

  • 读:

services

endpoints

nodes

pods

secrets,

configmaps,

persistent volume claims and persistent volumes related to pods bound to the kubelet’s node

  • 写:

Node和Node status(启用NodeRestriction准入插件限制kubelet仅修改当前的Node)

Pod和Pod status(启用NodeRestriction准入插件限制kubelet仅修改与当前绑定的pod)

events

Auth-related:

read/write access to the certificationsigningrequests API for TLS bootstrapping the ability to create tokenreviews and subjectaccessreviews for delegated authentication/authorization checks

在以后的版本中,Node授权器支持添加或删除的权限。

为获得Node授权器的授权,kubelet需要使用system:nodes组中的用户名system:node:

启用Node授权器方法:apiserver –authorization-mode=Node。

为了限制kubelets能够写入的API对象,可以启动–admission-control=…,NodeRestriction,…准入(admission)插件。




本博客所有文章采用的授权方式为 自由转载-非商用-非衍生-保持署名 ,转载请务必注明出处,谢谢。
声明:
本博客欢迎转发,但请保留原作者信息!
博客地址:邱文奇(qiuwenqi)的博客;
内容系本人学习、研究和总结,如有雷同,实属荣幸!
阅读次数:

文章评论

comments powered by Disqus


章节列表