如何不挂载Service Accounts的token到Pod中?

摘要:设置服务账号Service Accounts(sa)的token不挂载到pod,Service Accounts(sa)简介,在pod里设置sa的token不挂载到pod,在sa里设置sa对应的token不挂载到pod上
目录一.系统环境二.前言三.Service Accounts(sa)简介四.在pod里设置sa的token不挂载到pod五.在sa里设置sa对应的token不挂载到pod上六.总结 一.系统环境 本文主要基于Kubernetes1.22.2和Linux操作系统Ubuntu 18.04。 服务器版本 docker软件版本 Kubernetes(k8s)集群版本 CPU架构 Ubuntu 18.04.5 LTS Docker version 20.10.14 v1.22.2 x86_64 Kubernetes集群架构:k8scludes1作为master节点,k8scludes2,k8scludes3作为worker节点。 服务器 操作系统版本 CPU架构 进程 功能描述 k8scludes1/192.168.110.128 Ubuntu 18.04.5 LTS x86_64 docker,kube-apiserver,etcd,kube-scheduler,kube-controller-manager,kubelet,kube-proxy,coredns,calico k8s master节点 k8scludes2/192.168.110.129 Ubuntu 18.04.5 LTS x86_64 docker,kubelet,kube-proxy,calico k8s worker节点 k8scludes3/192.168.110.130 Ubuntu 18.04.5 LTS x86_64 docker,kubelet,kube-proxy,calico k8s worker节点 二.前言 在我们使用Kubernetes进行容器化部署时,经常需要为Pod设置特定的权限。这种权限管理通常通过Kubernetes的服务账号(Service Accounts)实现。然而,默认情况下,Service Account的token会自动挂载到对应的Pod中,这可能引发一些安全问题。因此,本文将介绍如何设置Service Account的token不自动挂载到Pod中。 设置Kubernetes(k8s)服务账号Service Accounts(sa)的token不挂载到pod的前提是已经有一套可以正常运行的Kubernetes集群,关于Kubernetes(k8s)集群的安装部署,可以查看博客《Ubuntu 安装部署Kubernetes(k8s)集群》https://www.cnblogs.com/renshengdezheli/p/17632858.html。 三.Service Accounts(sa)简介 Service Accounts(服务账户)通常用于计算机程序或操作系统中。它们不是普通用户账户,而是被某些应用程序或服务用于特定的、通常自动化的任务。 在Kubernetes(一个开源的容器编排平台)中,Service Accounts主要为Pod中运行的进程提供身份。与面向人类的普通用户不同,Service Accounts由Kubernetes集群内的Pods/服务使用。 关于Service Accounts的关键点: 它们是有命名空间的:可以为每个命名空间创建Service Accounts,并且不能跨命名空间访问(除非被赋予明确的权限)。 默认情况下,当创建一个Pod时,Kubernetes会自动为其分配一个"default" Service Account,但你也可以创建并指定特定的Service Account。 Service Account 被绑定到一组角色(Roles),这些角色定义了 Service Account 的权限,例如对某些资源的读写权限等。 总的来说,Service Accounts 是一种安全和权限管理的机制,让我们能更好地控制在复杂环境中的应用程序和服务的访问权限。 默认情况下,Service Account的token会自动挂载到Pod内的应用程序使用。但在某些情况下,我们可能不希望token自动挂载,以避免潜在的安全风险。Service Accounts(sa)的token自动挂载到pod的方式具有安全隐患,假如我们拉取的镜像存有恶意代码,如果给了sa一个不正当的权限,pod使用这个sa权限的时候就可能干坏事,避免的方法有: 授予的权限最小化,够用就行 ; 如果没有必要 的话,不需要把sa的token挂载到pod里,不然恶意程序使用token干坏事。 关于Service Accounts(sa)的更多内容,请查看博客《Kubernetes(k8s)服务账号Service Accounts》。
阅读全文