`
m635674608
  • 浏览: 5052980 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

如何理解Kubernetes认证和授权

 
阅读更多

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

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

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

客户证书验证

为了使用这个方案,api-server需要用-client-ca-file=<PATH_TO_CA_CERTIFICATE_FILE>选项来开启。

CA_CERTIFICATE_FILE肯定包括一个或者多个认证中心,可以被用来验证呈现给api-server的客户端证书。客户端证书的/CN将作为用户名。

基于令牌的身份验证

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

Group的名字是随意的。

令牌文件的例子:

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

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

基本认证

为了使用这个方案,api-server需要使用-basic-auth-file=<PATH_TO_HTTP_AUTH>选项来开启。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=<KEYSTONE_URL>选项来开启服务。

验证成功之后,下一步就是找出对于验证用户来说,哪些操作是允许的。目前来讲,Kubernetes支持4种验证策略方案。api-server需要使用-authorization-mode=<AUTHORIZATION_POLICY_NAME>选项来开启。

始终否认

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

始终允许

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

基于属性的访问控制

ABAC允许灵活的用户特定授权策略。当使用-authorization-policy-file=<PATH_TO_ABAC_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环境。

想要了解更多关于认证和授权的信息,建议浏览一下两个链接:

认证:http://kubernetes.io/docs/admin/authentication/

授权:http://kubernetes.io/docs/admin/authorization

 

 

原文链接:http://cloudgeekz.com/1045/kubernetes-authentication-and-authorization.html#rd?sukey=3997c0719f1515203c1d484623e7ce856d8c5abebd3e3bf44f7761a8579fb1f1c4bb5e509f603c1481f70266e9e3071a

 

https://my.oschina.net/caicloud/blog/701308

分享到:
评论

相关推荐

    Go-GuardbyAppsCode是一个Kubernetes认证WebHook服务器

    Go-Guard by AppsCode 是一个专门针对 Kubernetes 集群安全和认证的 WebHook 服务器。这个工具的主要目的是扩展 Kubernetes 的认证流程,确保只有经过验证的用户和应用程序能够访问集群资源。通过使用自定义 WebHook...

    Kubernetes(K8s) CKA 认证班(第4期,2021年3月课程,基于V1.20最新版本).rar

    **Kubernetes(K8s)CKA认证简介** ...总的来说,CKA认证对于想要深入理解和管理Kubernetes集群的专业人士来说是一项重要的资格证明。通过学习和实践,不仅可以提升技能,还有助于在云计算和DevOps领域建立专业形象。

    027 Kubernetes的Dashboard认证及分级授权.mp4

    027 Kubernetes的Dashboard认证及分级授权.mp4

    基于kubernetes构建Docker集群环境培训视频.rar

    │ 15-kubernetes认证及serviceaccount.mp4 │ 16-kubernetes RBAC.mp4 │ 17-kubernetes dashboard认证及分级授权.mp4 │ 18-配置网络插件flannel.mp4 │ 19-基于canel的网络策略.mp4 │ 20-调度器、预选策略及优选...

    Kubernetes+in+Action.rar

    9. **安全与认证**:Kubernetes支持多种身份验证和授权机制,如TLS、Service Accounts和RBAC(Role-Based Access Control),保障了集群的安全性。 10. **监控与日志**:Kubernetes集成Prometheus、Heapster和...

    Go-hobbyist的Kubernetes集群

    6. **Kubernetes认证和授权**:在Go语言中与Kubernetes交互时,理解认证和授权流程,如kubeconfig文件的使用,以及如何进行安全的API调用。 7. **监控和日志**:如何使用Go语言收集和分析Kubernetes集群的性能数据...

    2、Kubernetes 集群安全 - 认证1

    在Kubernetes集群中,安全是至关重要的,特别是对于认证机制,它是确保只有授权的实体能够访问和操作资源的关键。本文将详细阐述Kubernetes集群安全中的认证机制,主要关注HTTP Base认证、HTTP Token认证以及HTTPS...

    Go-Gravity-一个基于快照的Kubernetes打包和管理工具

    此外,Gravity提供了一套完整的认证和授权机制,确保了集群的安全性和数据的隐私。 在实际应用中,Gravity的使用流程大致如下:首先,通过Gravity的打包功能,生成包含整个集群状态的快照文件;然后,将这个文件...

    Kubernetes工作坊_kubernetes实践_Kubernetes_

    安全方面,Kubernetes支持资源配额、网络策略和认证授权机制,确保集群内应用的安全运行。 **六、监控与日志** 工作坊还讨论了Kubernetes中的监控和日志收集,包括如何集成Prometheus和Grafana进行指标监控,以及...

    2021年最新Kubernetes中文加固手册.pdf

    第四部分为认证和授权,介绍了Kubernetes的认证和授权机制,包括RBAC、RoleBinding和ClusterRoleBinding等。 第五部分为日志审计,介绍了Kubernetes的日志审计机制,包括日志收集、日志分析和日志存储等。 第六...

    Kubernetes RBAC with Openssl Authentication.pdf

    其中,基于角色的访问控制(RBAC)和基于OpenSSL的认证机制是Kubernetes安全策略中的重要组成部分。 1. 关于Kubernetes RBAC RBAC(Role-Based Access Control,基于角色的访问控制)是Kubernetes用来驱动授权决策...

    Kubernetes安装.docx

    * 提供认证和授权 * DevOps自动化运维=&gt;AiOps Kubernetes的架构包括: * Master节点:负责调度和管理Kubernetes集群 * Node节点:运行容器和提供计算资源 * Pod:最小的部署单元,包含一个或多个容器 * Controller...

    Kubernetes Handbook

    - Kubernetes提供了TLS证书和秘钥管理机制,并通过kubelet的认证授权保护集群的安全性。 - 支持用户认证授权的kubeconfig文件配置,以及跨集群认证。 10. **应用开发与部署**: - 描述了如何在Kubernetes中开发...

    kubernetes-handbook-jimmysong-v1.3

    - **用户身份认证授权**:访问Kubernetes集群的认证机制,包括kubeconfig文件和token。 - **跨集群认证**:配置跨不同集群的认证。 - **通过端口转发和Service访问集群中的应用程序**。 ### Kubernetes的用户界面 -...

    kubernetes handbook

    对于Kubernetes集群的安全性管理,涉及到多个层面,包括认证、授权和网络策略。TLS(Transport Layer Security)用于保证集群间通信的安全,而RBAC(基于角色的访问控制)则用来定义用户和用户组对集群资源的访问...

    certified-kubernetes-administrator-course:Kubernetes认证管理员-CKA课程

    【Kubernetes认证管理员-CKA课程】是一门深入学习和掌握Kubernetes管理技能的专业课程,旨在帮助学员通过Kubernetes认证管理员考试(CKA)。Kubernetes作为当下最热门的容器编排系统,对于IT专业人士来说,拥有CKA...

    Kubernetes安装笔记

    - **apiserver**:提供资源操作的唯一入口,同时还负责认证、授权、访问控制、API注册和发现等功能。 - **controller manager**:负责维护集群的状态,如故障检测、自动扩展、滚动更新等任务。 - **scheduler**:...

    linux-SaltStack自动化部署Kubernetes

    本文将深入探讨如何使用SaltStack自动化部署Kubernetes v1.9.3,包括TLS双向认证、RBAC授权、Flannel网络和ETCD集群的配置。 **一、SaltStack简介** SaltStack是一款开源的远程执行和配置管理系统,它提供了灵活的...

    KubernetesK8s、CKS 认证实战班(安全专家)2022版

    10. **文档资料**:提供的完整文档资料将作为学习的辅助工具,帮助学员系统地复习和理解Kubernetes安全相关的知识点,有助于备考CKS认证。 总之,这个课程全面覆盖了Kubernetes安全的各个方面,旨在帮助学员掌握...

    Kubernetes : Up and Running: Dive into the Future of Infrastructure

    - **安全性**:了解Kubernetes的安全模型,包括Pod安全策略、网络策略以及认证和授权机制。 - **扩展性**:探讨Kubernetes的插件体系,如Operator模式,以实现对复杂应用的自动化管理。 此外,书中还涵盖了...

Global site tag (gtag.js) - Google Analytics