资讯专栏INFORMATION COLUMN

如何理解Kubernetes认证和授权

张率功 / 543人阅读

摘要:当设置产品集群的时候,认证和授权是两个很重要的基本需求。目前来讲,支持种验证策略方案。始终否认这个策略否认所有的请求。基于属性的访问控制允许灵活的用户特定授权策略。调出一个外部授权服务。身份验证和授权机制的选择取决于你的要求。

当设置产品Kubernetes集群的时候,认证和授权是两个很重要的基本需求。在这篇文章中,让我们来浏览一些细节,这些细节可以帮助Kubernetes环境做好方案。

比如说,你现在已经引发了通过输入yaml文件到kubectl(kubectl create-f pod.yaml)创建POD的命令。这个命令被发送到有安全保障的api-server端口(http://),然后身份验证流就开始生效了。注意,如果你正在为api-server使用不安全的端口(http://),那么验证就无法应用。(http://)理想情况下生产环境设置中应该避免不安全端口(http://)。

以下是这篇文章中会提到的在Kubernetes中可使用的验证途径。

客户证书验证

为了使用这个方案,api-server需要用-client-ca-file=选项来开启。
CA_CERTIFICATE_FILE肯定包括一个或者多个认证中心,可以被用来验证呈现给api-server的客户端证书。客户端证书的/CN将作为用户名。

基于令牌的身份验证

为了使用这个方案,api-server需要用-token-auth-file=选项来开启。TOKEN_FILE是个csv文件,每个用户入口都有下列格式:token,user,userid,group。

Group的名字是随意的。

令牌文件的例子:

生成tokens的一个非常简单的方法就是运行以下命令:

基于令牌的身份验证面临的挑战就是,令牌是无期限的,而且对令牌清单做任何的修改都需要重新启动api-server。

基本认证

为了使用这个方案,api-server需要使用-basic-auth-file=选项来开启。HTTP_AUTH_FILE是个csv文件,每个用户入口都有下列格式:password,user name,userid。目前,对AUTH_FILE的任意修都需要重新启动api-server。

Open ID

Open ID支持也是可用的,但是还在试验阶段。

Keystone

Keystone支持也是可用的,但是还在试验阶段。如果你想要将keystone跟LDAP或者动态目录服务整合到一起,那么就要使用keystone认证方法。为了使用这个方案,api-server需要用-experimental-keystone-url=选项来开启服务。
验证成功之后,下一步就是找出对于验证用户来说,哪些操作是允许的。目前来讲,Kubernetes支持4种验证策略方案。api-server需要使用-authorization-mode=选项来开启。

始终否认

这个策略否认所有的请求。

始终允许

这个策略允许所有的请求。

基于属性的访问控制

ABAC允许灵活的用户特定授权策略。当使用-authorization-policy-file=选项开启api-sever的时候,ABAC的策略文件需要指定。目前,对策略文件有任何的修改都需要重启api-server。
ABAC策略文件样本如下所示:

在以上例子中,策略文件中的每一行都是JSON对象,且指定一个策略。这是从Kubernetes文档页面上对策略对象的简要描述。

版本控制特性——允许多版本和策略的转换格式。

api版本,字符串类型:有效值就是“abac.authorization.kubernetes.io/v1beta1”。
kind,字符串类型:有效值是“policy”。

规格属性——是一个用以下属性的映射:

面向对象匹配属性——用户,字符串:用户字符串不是从-token-auth-file,就是从证书文件的普通名字(CN)而来。如果你指定用户,那么它就肯定跟经过身份验证的用户匹配。*跟所有请求都匹配;group,字符串:如果你指定group,那么它肯定跟groups中经过身份验证的用户相匹配。*跟所有请求都匹配。

资源匹配属性

apiGroup,字符串类型:API group,比如拓展版本。*跟所有APIgroup相匹配。
命名空间,字符串类型:命名空间字符串。*跟所有的资源请求相匹配。
资源,字符串类型:资源,比如pods。*匹配所有的资源请求。

非资源匹配属性

nonResourcePath,字符串类型:跟所有的非资源请求路径相匹配(比如/version,/apis)。*跟匹配所有非资源请求。/foo/*跟/foo/,以及它的子路径。
只读,布尔型:当为真,也就意味着策略只应用于获取,列出和监测操作。

Webhook

调出一个外部RESTful授权服务。
身份验证和授权机制的选择取决于你的要求。然而在我的经验看来,我发现基于证书的身份验证方法,基于身份验证方法的keystone(LDAP),基于身份验证策略的ABAC,这三种方法的灵活结合提供了所需的功能,来培养Kubernetes环境。
想要了解更多关于认证和授权的信息,建议浏览一下两个链接:
认证:这里
授权:这里

原文链接
(如果需要转载,请联系我们哦,尊重知识产权人人有责;)

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/32467.html

相关文章

  • Rancher中的K8S认证RBAC

    摘要:在中使用验证使用身份验证策略来认证用户的。审阅状态包含名称和组等用户信息。中的授权模块稍后将以此确定该用户的访问级别。认证请求认证服务决定该用户是否通过认证,并向发送响应。在对的请求成功进行认证之后,必须授权该请求。 Rancher Kubernetes拥有RBAC(基于角色的访问控制)功能,此功能可以让管理员配置不同的策略,允许或拒绝用户和服务帐户访问Kubernetes API资源...

    raise_yang 评论0 收藏0
  • Rancher中的K8S认证RBAC

    摘要:在中使用验证使用身份验证策略来认证用户的。审阅状态包含名称和组等用户信息。中的授权模块稍后将以此确定该用户的访问级别。认证请求认证服务决定该用户是否通过认证,并向发送响应。在对的请求成功进行认证之后,必须授权该请求。 Rancher Kubernetes拥有RBAC(基于角色的访问控制)功能,此功能可以让管理员配置不同的策略,允许或拒绝用户和服务帐户访问Kubernetes API资源...

    Forest10 评论0 收藏0
  • Kubernetes系统架构演进过程与背后驱动的原因

    摘要:本文中,我们将描述系统的架构开发演进过程,以及背后的驱动原因。应用管理层提供基本的部署和路由,包括自愈能力弹性扩容服务发现负载均衡和流量路由。 带你了解Kubernetes架构的设计意图、Kubernetes系统的架构开发演进过程,以及背后的驱动原因。 showImg(https://segmentfault.com/img/remote/1460000016446636?w=1280...

    wuaiqiu 评论0 收藏0
  • kubernetes Authorization

    摘要:授权设置在中授权和认证是各自独立的部分。授权操作适用于所有面向于的请求。授权将会针对每一个请求,根据访问策略来检查对比请求中的属性信息比如用户,资源,等。一个请求必须满足指定的策略才能继续执行。仅仅能处于下的。 kubernetes授权设置 在kubernetes中授权 和 认证是各自独立的部分。认证部分参见 kubernetes认证。 授权操作适用于所有面向于kubernetes ...

    gggggggbong 评论0 收藏0
  • kubernetes 实战[1]

    摘要:不过目前主流的做法包括半自动部署方案都是让主节点通过在容器中运行等东西。 转载自笔者的博客 kubernetes 容器平台分析 Docker 容器算是目前最火的云计算产品了,因为它解决了很多运维和开发上的痛点问题,比如抹平了开发和生产的环境区别,甚至可以做到在生产环境使用 RHEL,而开发使用 Ubuntu,也能平滑部署,但是想要真正的将其投放到生产环境中,实际上还有很多问题亟待解决。...

    J4ck_Chan 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<