【Kubernetes】k8s的安全管理详细说明【k8s框架说明、token验证和kubeconfig验证详细说明】

19 - --feature-gates=RemoveSelfLink=false

[root@master ~]#

编辑bb.csv文件

文件中内容分别为: 上面生成的id,自定义用户名,id【中间必须用,隔开】

[root@master ~]# cat /etc/kubernetes/pki/bb.csv

f53309a4a68ce1ae8ead,ccx,3

[root@master ~]#

然后重启服务,启用token就算配置完成了

[root@master ~]# systemctl restart kubelet

[root@master ~]#

[root@master ~]# kubectl get nodes # 需要等这能看到下面内容

NAME STATUS ROLES AGE VERSION

master Ready master 114d v1.21.0

node1 Ready 114d v1.21.0

node2 Ready 114d v1.21.0

[root@master ~]#

测试token验证

  • 客户端连接集群语法:kubectl -s https://集群master_ip:6443 --token='集群mastre生成的id' get nodeskubectl options可以查看更多参数】

  • 下面我们一步步做认证连接,注意看注释内容

此时连接会报证书错误的报错

[root@master2 ~]# kubectl -s https://192.168.59.142:6443 --token=‘f53309a4a68ce1ae8ead’ get nodes -n kube-system

Unable to connect to the server: x509: certificate signed by unknown authority (possibly because of “crypto/rsa: verification error” while trying to verify candidate authority certificate “kubernetes”)

[root@master2 ~]#

我们可以加上忽略证书检测 --insecure-skip-tls-verify=true

然后又报错说ccx用户没有办法检测nodes的这个命名空间

[root@master2 ~]# kubectl -s https://192.168.59.142:6443 --token=‘f53309a4a68ce1ae8ead’ --insecure-skip-tls-verify=true get nodes -n kube-system

Error from server (Forbidden): nodes is forbidden: User “ccx” cannot list resource “nodes” in API group “” at the cluster scope

[root@master2 ~]#

综上,得到一个结论是:已经认证通过了,只是没有权限查看而已

#下面我们吧token值改一位输,就会提示报错了,说没有认证信息

[root@master2 ~]# kubectl -s https://192.168.59.142:6443 --token=‘f53309a4a68ce1ae8eax’ --insecure-skip-tls-verify=true get nodes -n kube-system

error: You must be logged in to the server (Unauthorized)

[root@master2 ~]#

  • 认证过了,就牵扯到授权了,关于授权,看下面授权部分中的说明吧【内容牵扯很多,这只要知道token是啥东西就行】

base-auth【已经被淘汰】

===============================================================================

感兴趣的自行百度

kubeconfig验证

===========================================================================

说明


  • kubeconfig文件—并不是有一个名字叫做kubeconfig的文件,而是用于做认证的文件我们就叫做kubeconfig

如:aa.txt里有认证信息,所以aa.txt也就是kubeconfig文件

  • 我们搭建集群的时候有一个流程【如下图】,这就是创建kubeconfig文件的流程

在这里插入图片描述

  • 也就是说,安装好kubernetes之后,系统会生成一个管理员权限kubeconfig文件

做下测试,我们在root下是可以执行查看,但我们切换到其他用户,就没有办法查看了,就是因为其他用户没有这个kuebconfig文件

而集群默认使用的是:~/.kube/config的kubeconfig文件,而这个文件,是在/root下面的

[root@master ~]# ls /etc/kubernetes/

admin.conf controller-manager.conf kubelet.conf manifests pki scheduler.conf

[root@master ~]#

[root@master ~]# kubectl get nodes

NAME STATUS ROLES AGE VERSION

master Ready master 114d v1.21.0

node1 Ready 114d v1.21.0

node2 Ready 114d v1.21.0

[root@master ~]#

[root@master ~]# su - ccx

[ccx@master ~]$

[ccx@master ~]$ kubectl get nodes

The connection to the server localhost:8080 was refused - did you specify the right host or port?

[ccx@master ~]$

kubeconfig文件拷贝做测试


  • 现在我们将这个文件拷贝到ccx用户下的这个目录,给予权限以后再次测试【集群master节点】

测试有点多,是逐步测试的,注意看里面的注释内容。

[root@master ~]#

[root@master ~]# cp /etc/kubernetes/admin.conf ~ccx/

[root@master ~]# chown ccx.ccx ~ccx/admin.conf

[root@master ~]#

[root@master ~]# su - ccx

Last login: Wed Nov 3 12:35:22 CST 2021 on pts/0

[ccx@master ~]$ ls ~/

admin.conf

[ccx@master ~]$ cd ~/

[ccx@master ~]$ pwd

/home/ccx

[ccx@master ~]$

此时看呢,还是不行的,因为集群不知道你使用的是哪个kubeconfig文件

[ccx@master ~]$ kubectl get nodes

The connection to the server localhost:8080 was refused - did you specify the right host or port?

[ccx@master ~]$

所以,只要我们指定这个文件名就可以查看了【路径是固定的,所以不需要加路径】

[ccx@master ~]$ kubectl --kubeconfig=admin.conf get nodes

NAME STATUS ROLES AGE VERSION

master Ready master 114d v1.21.0

node1 Ready 114d v1.21.0

node2 Ready 114d v1.21.0

[ccx@master ~]$

综上,所以某用户只要拿到这个文件,不管这个文件的名字是什么,改用户都会具有管理员权限

但是我们也不能每次都只能这个环境变量啊,挺麻烦的,所以我们可以设置变量的形式,这样就不用指定文件了

注意,当前还是在ccx这个普通用户下的

[ccx@master ~]$ export KUBECONFIG=admin.conf

[cc

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值