欢迎光临POS机办理_POS机申请-拉卡拉银联POS机办理安装中心官网!
专业pos机办理平台正规一清机 个人商户均可申请
全国咨询热线:15202915905
联系我们

POS机办理中心

地址: 陕西西安

手机:

电话:15202915905

邮箱:

当前位置:首页 > 城市分站 > 内蒙古 > 巴彦淖尔

巴彦淖尔pos机n4代码代表什么(pos机代码40什么意思)

时间:2023-02-18 12:51:18 来源:https://sxcjq.cn 点击:


  • 本文偏实战,内容涉及:
    • token方式的API Server认证Demo
    • Kubeconfig文件方式的API Server认证Demo
    • Kubeconfig文件创建Demo

只有能做到“尽人事而听天命”,一个人才能永远保持心情的平衡。 ----- 《季羡林谈人生》


Kubernetes集群中所有资源的访问和变更都是通过Kubernetes API Server的REST API来实现的,所以集群安全的关键点就在于如何鉴权和授权

一个简单的Demo,在master节点上,我们通过root用户可以直接通kubectl来请求API Service从而获取集群信息,但是我们通过其他用户登录就没有这个权限,这就涉及到k8s的一个认证问题.

root用户可以正常访问

切换tom用户来访问,没有权限,报错找不到集群API的位置,那么为什么会这样呢?

为了演示认证,我们需要在集群外的机器上安装一个客户端工具kubectl,用于和集群的入口api-Service交互

可以通过kubectl cluster-info来查看集群的相关信息

Kubernetes集群提供了3种级别的客户端身份认证方式

HTTP Token认证:通过一个Token来识别合法用户。
HTTPS 证书认证:基于CA根证书签名的双向数字证书认证方式
HTTP Base认证:通过用户名+密码的方式认证,这个只有1.19之前的版本适用,之后的版本不在支持

下面就Token和SSL和小伙伴分享下,Bash因为在高版本的K8s中不在支持,所以我们这里不聊。关于上面的普通用户范围集群的问题,我们也会改出解答

HTTP Token的认证是用一个很长的特殊编码方式的并且难以被模仿的字符串Token来表明客户身份的一种方式

每个Token对应一个用户名,存储在APIServer能访问的一个文件中。当客户端发起API调用请求时,需要在HTTP Header里放入Token,这样一来, API Server就能识别合法用户和非法用户了。

当 API 服务器的命令行设置了--token-auth-file=SOMEFILE选项时,会从文件中 读取持有者令牌。目前,令牌会长期有效,并且在不重启 API 服务器的情况下 无法更改令牌列表。下面我们一个通过Demo来演示通过静态Token的用户认证,

通过openssl生成一个令牌

令牌文件是一个 CSV 文件,包含至少 3 个列:令牌用户名用户的 UID。 其余列被视为可选的组名。这里需要注意的是,令牌文件要放到/etc/kubernetes/pki目录下才可以,可能默认读取令牌的位置即是这个位置

通过Sed添加kube-apiserver服务启动参数,- --token-auth-file=/etc/kubernetes/pki/liruilong.csv

检查修改的启动参数

重启kubelet服务

确认集群能够正常访问

在集群外的客户机访问集群信息,这里提示我们admin2用户没有访问的权限,说明已经认证成功了,只是没有权限

这里我们修改一些token的字符串,Token和集群的Token文件不对应,会提示我们没有获得授权,即认证失败

在回到我们之前的那个问题,为什么使用root用户可以访问集群信息,但是通过tom用户去不能够访问集群信息,这里就涉及到一个kubeconfig 文件认证的问题

在通过kubeadm创建集群的时候,不知道小伙伴没还记不记得下面这个文件admin.conf,这个文件就是kubeadm帮我们生成的kubeconfig文件

我们把这个文件拷贝到tom用户的目录下,修改权限

这个时候发现通过 --kubeconfig=admin.conf 指定这个文件,就可以访问集群信息

那个,kubeconfig文件是个什么东西,官方文档中这样描述:

使用 kubeconfig 文件来组织有关集群、用户、命名空间和身份认证机制的信息。kubectl 命令行工具使用 kubeconfig 文件来查找选择集群所需的信息,并与集群的 API 服务器进行通信。

换句话讲,通过kubeconfig与集群的 API 服务器进行通信,类似上面的Token的作用,我们要说的HTTPS证书认证就是放到这里

默认情况下,kubectl$HOME/.kube 目录下查找名为 config 的文件。

kubeconfig文件复制到 $HOME/.kube 目录下改名为 config 发现tom用户依旧可以访问

也可以通过设置 KUBECONFIG 环境变量或者设置 --kubeconfig参数来指定其他kubeconfig文件。

当我们什么都不设置时,tom用户获取不到kubeconfig文件,没有认证信息,无法访问

查看kubeconfig文件的配置信息

所以我们要想访问集群信息,只需要把这个kubeconfig 文件拷贝到客户机上就OK了

一个kubeconfig 文件包括一下几部分:

  • 集群信息:
    • 集群CA证书
    • 集群地址
  • 上下文信息
    • 所有上下文信息
    • 当前上下文
  • 用户信息
    • 用户CA证书
    • 用户私钥

要创建 kubeconfig 文件的话,我们需要一个私钥,以及集群 CA 授权颁发的证书。同理我们不能直接用私钥生成公钥,而必须是用私钥生成证书请求文件(申请书),然后根据证书请求文件向 CA(权威机构)申请证书(身份证),CA 审核通过之后会颁发证书。

环境准备

生成一个 2048 位的 私钥 iruilong.key 文件

查看私钥文件

利用刚生成的私有 liruilong.key 生成证书请求文件 liruilong.key:这里CN的值 liruilong,就是后面我们授权的用户。

对证书请求文件进行 base64 编码

编写申请证书请求文件的 yaml 文件:cat csr.yaml

这里 request 里的是 base64 编码之后的证书请求文件。申请证书

查看已经发出证书申请请求:

批准证书:

查看审批通过的证书:

导出证书文件:

给用户授权,这里给 liruilong 一个集群角色 cluster-role(类似于root一样的角色),这样 liruilong 具有管理员权限

拷贝 CA 证书

设置集群字段,这里包含集群名字,服务地址和集群证书

在上面集群中创建一个上下文context1

这里–embed-certs=true 的意思是把证书内容写入到此 kubeconfig 文件里。
设置用户字段,包含用户名字,用户证书,用户私钥

查看创建的kubeconfig文件信息

修改kubeconfig文件当前的上下文为之前创建的上下文

这样 kubeconfig 文件就创建完毕了,下面开始验证 kubeconfig 文件。

拷贝证书到客户机

客户机指定证书访问测试

这样一个kubeconfig文件就创建完成



Tags: