【k8s 系列】k8s 学习二十八,k8s 认证和权限控制

简介: 说到 k8s 的认证机制,其实之前咋那么也有提到过 ServiceAccouont ,以及相应的 token ,证书 crt,和基于 HTTP 的认证等等

【k8s 系列】k8s 学习二十八,k8s 认证和权限控制

k8s 的认证机制是啥?

说到 k8s 的认证机制,其实之前咋那么也有提到过 ServiceAccouont以及相应的 token ,证书 crt,和基于 HTTP 的认证等等

k8s 会使用如上几种方式来获取客户端身份信息,不限于上面几种

前面有说到 ApiServer 收到请求后,会去校验客户端是否有权限访问,ApiServer 会去自身的认证插件中进行处理认证,进而到授权插件中进行授权,例如这样的:

image.png

ServiceAccount 相当重要,之前我们说到过访问 pod 元数据的时候,就提到过 ServiceAccount**,以及相应的挂载文件:**

  • /var/run/secrets/kubernetes.io/serviceaccount/token
  • /var/run/secrets/kubernetes.io/serviceaccount/namespace
  • /var/run/secrets/kubernetes.io/serviceaccount/ca.crt

image.png

pod 就是通过发送上述的 token 文件来进行身份认证的,这是代表了运行的 pod 中的应用程序的身份证明,每一个 pod 都是会有一个 ServiceAccoount 与之关联的

我们可以理解 ServiceAccoount 不是什么也别的东西,也是 k8s 的其中一种资源而已,咱们可以写 yaml 创建该 资源,当然也是可以通过命令来创建 sa 资源的, sa 是 ServiceAccoount  的缩写

例如,我们可以通过命令 kubectl get sa 来查看 ServiceAccoount

image.png

一个 pod 只会对应一个 SA,但是 一个 SA 是可以和多个 pod 关联的,并且,我们需要清楚,这些都是得再同一个命名空间下的,例如画一个简图来是表示一下

image.png

我们可以看到,同一个命名空间中

  • 一个 SA 可以对应多个 pod
  • 一个 ns (namespace) 中可以有多个 ServiceAccount
  • 一个 pod 只能关联 一个 ServiceAccount

再来看看这个:

image.png

绝对不会存在 ns 4 的 pod ,会关联到 ns 3 的 ServiceAccount, 不在同一个命名空间,根本无法操作

自行创建一个 SA

kubectl create sa xmt

创建一个 SA 名为 xmt

image.png

查看上述 xmt SA 的信息,k8s 默认给我们 xmt 账户生成了 tokensecrets

我们可以查看 secrets 的内容

image.png

我们可以通过在线的 jwt 解码工具来查看这个 secrets,他是一个 JWT 编码的信息

https://tooltt.com/jwt-decode/

image.png

我们解码后,可以看到具体的信息


{
  "iss": "kubernetes/serviceaccount",
  "kubernetes.io/serviceaccount/namespace": "default",
  "kubernetes.io/serviceaccount/secret.name": "xmt-token-kbv8b",
  "kubernetes.io/serviceaccount/service-account.name": "xmt",
  "kubernetes.io/serviceaccount/service-account.uid": "587fbca5-f20c-4421-a3fd-db21b76c7ac6",
  "sub": "system:serviceaccount:default:xmt"
}

通过上述 secrets  可以得到 namespace,secret.name,service-account.name,service-account.uid 等信息  ,这个 uid 是唯一的

创建 pod 指定 SA

我们可以查看任意一个 pod 的详情,也可以看到配置里面有 ServiceName

image.png

今天就到这里,学习所得,若有偏差,还请斧正


欢迎点赞,关注,收藏

朋友们,你的支持和鼓励,是我坚持分享,提高质量的动力

image.png

好了,本次就到这里

技术是开放的,我们的心态,更应是开放的。拥抱变化,向阳而生,努力向前行。

我是阿兵云原生,欢迎点赞关注收藏,下次见~

相关实践学习
容器服务Serverless版ACK Serverless 快速入门:在线魔方应用部署和监控
通过本实验,您将了解到容器服务Serverless版ACK Serverless 的基本产品能力,即可以实现快速部署一个在线魔方应用,并借助阿里云容器服务成熟的产品生态,实现在线应用的企业级监控,提升应用稳定性。
云原生实践公开课
课程大纲 开篇:如何学习并实践云原生技术 基础篇: 5 步上手 Kubernetes 进阶篇:生产环境下的 K8s 实践 相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
相关文章
|
27天前
|
Kubernetes 网络协议 网络安全
提升你的云技能:深入了解CKA认证之k8s升级秘籍!
提升你的云技能:深入了解CKA认证之k8s升级秘籍!
19 0
|
4月前
|
Kubernetes 容器
k8s学习-CKS真题-日志审计 log audit
k8s学习-CKS真题-日志审计 log audit
79 0
|
3月前
|
Kubernetes iOS开发 Docker
为什么你应该学习 Docker 🐋 和 Kubernetes ☸️?
如果您是一名开发人员,我相信您一定听说过这句话:“它可以在我的机器上运行”。当我们的代码在您的计算机上运行但在朋友的计算机上表现不佳时,这是令人心碎的。
28 0
|
4月前
|
存储 Kubernetes Cloud Native
云原生|kubernetes|持久化存储pv,pvc和StorageClass的学习
云原生|kubernetes|持久化存储pv,pvc和StorageClass的学习
127 0
|
4月前
|
存储 Kubernetes 关系型数据库
kubernetes学习之持久化存储StorageClass(4---nfs存储服务)
kubernetes学习之持久化存储StorageClass(4---nfs存储服务)
47 0
|
4月前
|
Kubernetes Cloud Native 应用服务中间件
云原生|kubernetes|关于configMap的一些学习
云原生|kubernetes|关于configMap的一些学习
49 1
|
4月前
|
Kubernetes Cloud Native 安全
猿创征文|云原生|kubernetes学习之多账户管理--权限精细化分配方案(两种方式-sa和用户)
猿创征文|云原生|kubernetes学习之多账户管理--权限精细化分配方案(两种方式-sa和用户)
84 0
|
4月前
|
Kubernetes Cloud Native API
猿创征文|云原生|kubernetes学习之RBAC(六)
猿创征文|云原生|kubernetes学习之RBAC(六)
33 0
|
4月前
|
Kubernetes Cloud Native 应用服务中间件
【云原生】kubernetes学习之资源(对象)控制器概述---概念和实战(五)
【云原生】kubernetes学习之资源(对象)控制器概述---概念和实战(五)
22 0
|
4月前
|
Kubernetes 供应链 安全
k8s学习-CKS考试必过宝典
k8s学习-CKS考试必过宝典
90 0