创建用户
Kubernetes 集群支持多用户管理,可以使用 kubectl
创建其他用户对集群进行管理,并根据不同的用户赋予不同的权限,以达到安全控制。
本节将以 minikube
为例,为其创建其他的用户,并通过 X.509 证书 的认证方式进行认证。
下面将展示创建一个新的名为 alice
的用户的步骤。
为用户生成证书文件
在讲解之前首先要了解这种认证方式,这种认证方式使用的是 TLS (传输层安全协议) 或 SSL (套接字安全协议) 实现的,在该协议中,通常涉及到三类文件:
.key 文件:通常指私钥;
.csr 文件:证书签名请求,通过 .key 私钥得到,这不是证书,可以简单理解成 公钥,生成证书时要把这个提交给权威的证书颁发机构 CA,由 CA 生成证书给用户;
.crt 文件:证书,由 .csr 公钥交由 CA 后生成的证书文件;
X.509 是一种证书格式。对 X.509 证书来说,认证者总是 CA 或由 CA 指定的人,一份 X.509 证书是一些标准字段的集合,这些字段包含有关用户或设备及其相应公钥的信息。
💫 X.509 的证书文件,一般以 .crt
结尾,根据该文件的内容编码格式,可以分为以下二种格式:
PEM - Privacy Enhanced Mail,打开看文本格式,以
-----BEGIN...
开头,-----END...
结尾,内容是 BASE64 编码。Apache 和 nginx 服务器偏向于使用这种编码格式。DER - Distinguished Encoding Rules,打开看是二进制格式,不可读。Java 和 Windows 服务器偏向于使用这种编码格式。
下面看具体的步骤。
为用户创建一个私钥,文件名为
alice.key
:用该私钥创建一个证书签名文件(公钥),文件名为
alice.csr
,其中我们需要在-subj
后跟上用户信息(CN 为用户名,0 为用户组),例子中的用户名为alice
,用户组为basic-user
:该操作需要在 minikube 虚拟机中运行,将 .csr 证书签名文件拷贝至该虚拟机中。 由于 Kubernetes 集群中有自带的 CA 证书,因此可以通过将证书签名文件交给该 CA 为用户签发证书,文件名为
alice.crt
:
生成用户的 kubeconfig 文件
用户所需的 kubeconfig 文件可以令其以该用户的身份接入集群,需要四步:
向其中填充集群信息;
向其中填充用户的认证参数;
向其中填充上下文参数;
在其中设置默认上下文;
经过这四步后,会得到一个 alice.kubeconfig
文件,通过该文件,alice 用户添加成功。
填充集群信息
minikube
是 minikube 生成的默认的集群名
填充用户的认证参数
设置的用户名为
alice
填充上下文参数
生成的上下文名字为
alice
;集群使用的是名为
minikube
的集群;用户为
alice
;其使用的默认命名空间为
default
;
设置默认上下文
当使用
alice.kubeconfig
配置文件时,使用默认的名为alice
中的配置内容
配置完成后的 alice.kubeconfig 文件内容大致如下:
为用户配置适当权限
经过上面的两大步骤,用户已经创建完成了,但是由于存在 RBAC 认证授权机制,此时该用户仅可以通过 认证阶段,即能够被识别为 alice
用户,但是没有相应的权限。
因此需要为其授予相应的权限,令其可以顺利的使用资源。
在本例中为其赋予了列举、查看各资源的权限,即使用 RoleBinding
将该用户与名为 view
的默认 ClusterRole
绑定:
测试
下面测试使用该用户列举当前命名空间中的 Pods 资源:
若想访问其他命名空间中的资源会失败:
Last updated
Was this helpful?