首页 > 其他分享 >创建用户[devuser]认证授权的 kubeconfig 文件

创建用户[devuser]认证授权的 kubeconfig 文件

时间:2023-09-26 10:55:20浏览次数:45  
标签:kubernetes -- devuser dev 认证 key kubeconfig

当我们安装好集群后,如果想要把 kubectl 命令交给用户使用,就不得不对用户的身份进行认证和对其权限做出限制。
下面以创建一个 devuser 用户并将其绑定到 dev 和 test 两个 namespace 为例说明。

创建 CA 证书和秘钥

创建 devuser-csr.json 文件

{
  "CN": "devuser",
  "key": {
    "algo": "rsa",
    "size": 2048
  },
  "names": [
    {
      "C": "CN",
      "ST": "Shanghai",
      "L": "Shanghai",
      "O": "Kubernetes",
      "OU": "Kubernetes"
    }
  ]
}
生成CA证书和私钥

我们已经将生成的证书和秘钥放在了所有节点的/etc/kubernetes/pki目录下,下面我们再在 master 节点上为 devuser 创建证书和秘钥,在/etc/kubernetes/pki目录下执行以下命令:
执行该命令前请先确保该目录下已经包含如下文件:

# ca 集群根证书
ca-key.pem  
ca.pem  
ca-config.json 
devuser-csr.json

生成命令:

cfssl gencert -ca=/etc/kubernetes/pki/ca.pem -ca-key=/etc/kubernetes/pki/ca-key.pem -config=/etc/kubernetes/pki/ca-config.json -profile=kubernetes devuser-csr.json|cfssljson -bare devuser
2023/09/19 17:38:51 [INFO] generate received request
2023/09/19 17:38:51 [INFO] received CSR
2023/09/19 17:38:51 [INFO] generating key: rsa-2048
2023/09/19 17:38:51 [INFO] encoded CSR
2023/09/19 17:38:51 [INFO] signed certificate with serial number 272484136328588252159908466004591786980109646031
2023/09/19 17:38:51 [WARNING] This certificate lacks a "hosts" field. This makes it unsuitable for
websites. For more information see the Baseline Requirements for the Issuance and Management
of Publicly-Trusted Certificates, v.1.1.6, from the CA/Browser Forum (https://cabforum.org);
specifically, section 10.2.3 ("Information Requirements").

# 这将生成如下文件:
devuser.csr
devuser-key.pem
devuser.pem
创建kubeconfig文件
export KUBE_APISERVER="https://172.16.108.157:9443"

# 设置集群参数
kubectl config set-cluster kubernetes --certificate-authority=/etc/kubernetes/pki/ca.pem --embed-certs=true --server=${KUBE_APISERVER} --kubeconfig=devuser.kubeconfig

# 设置客户端认证参数
kubectl config set-credentials devuser --client-certificate=devuser.pem --client-key=devuser-key.pem --embed-certs=true --kubeconfig=devuser.kubeconfig

# 设置上下文参数
kubectl config set-context kubernetes --cluster=kubernetes --user=devuser --namespace=dev --kubeconfig=devuser.kubeconfig

# 设置默认上下文
kubectl config use-context kubernetes --kubeconfig=devuser.kubeconfig

查看kubectl的context:

kubectl config get-contexts
CURRENT   NAME         CLUSTER      AUTHINFO           NAMESPACE
*         kubernetes   kubernetes   kubernetes-admin   

显示的用户仍然是admin,这是因为kubectl中使用了$HOME/.kube/config文件作为了默认的context配置,不要直接替换文件,最好是备份后重命名,或者可以在命令中指定用哪个config文件访问,命令如下:

kubectl --kubeconfig=/root/devuser/devuser.kubeconfig get pods -n dev
kubectl --kubeconfig=/root/.kube/config get pods -n dev
使用kubernetes-plugin插件连接k8s的认证方式
使用证书方式连接k8s
  1. 通过解码方式获取kubectl使用的admin证书
    查看/root/devuser/devuser.kubeconfig文件,文件中有3个值:certificate-authority-data、client-certificate-data、client-key-data,解码它们获得证书。
# 注意将下面的值替换成自己本地生成的字符串值
echo certificate-authority-data | base64 -d > ca.crt
echo client-certificate-data | base64 -d > client.crt
echo client-key-data | base64 -d > client.key

根据这3个文件生成一个PKCS12格式的客户端证书文件。

openssl pkcs12 -export -out cert.pfx -inkey client.key -in client.crt -certfile ca.crt
# 密码:123456

生成证书的时候,需要填写密码,后面会用到,生成的证书如下:

ca.crt
cert.pfx
client.crt
client.key
  1. 添加认证
    将生成的cert.pfx上传到凭证

  1. kubernetes plugin与k8s连接配置
    将ca.crt中的内容填写到kubernetes server certificate key字段

完成后点击测试连接,查看是否成功。

Rolebinding

如果我们想限制devuser用户的行为,需要使用RBAC创建角色绑定以将该用户的行为限制在某个或某几个namespace空间范围内,如:
1.其实测试环境里可以绑定user和clusterrole=admin,能满足我们的需求,只是这样权限太高。

kubectl create rolebinding dev-devuser-rolebinding --clusterrole=admin --user=devuser --namespace=dev

kubectl create rolebinding test-devuser-rolebinding --clusterrole=admin --user=devuser --namespace=test

2.我们这里使用的rolebinding绑定的是用户账号devuser和用户角色role,这样可以让devuser用户对dev和test 2个namespace具有完全访问权限。
namespace: dev

# 新建role
cat dev-devuser.yaml 
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
  name: dev-devuser
  namespace: dev
rules:
- apiGroups:
  - '*'
  resources:
  - '*'
  verbs:
  - '*'

# 新建rolebinding,绑定role和useraccount
k create rolebinding dev-devuser-rolebinding --role=dev-devuser --user=devuser -n dev

# 测试命令
k --kubeconfig=/root/devuser/devuser.kubeconfig get pods -n dev

namespace: test

# 新建role
cat test-devuser.yaml 
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
  name: test-devuser
  namespace: test
rules:
- apiGroups:
  - '*'
  resources:
  - '*'
  verbs:
  - '*'

# 新建rolebinding
k create rolebinding test-devuser-rolebinding --role=test-devuser --user=devuser -n test

# 测试
k --kubeconfig=/root/devuser/devuser.kubeconfig get pods -n test

参考链接:
https://www.cnblogs.com/deny/p/13848781.html
https://jimmysong.io/kubernetes-handbook/guide/kubectl-user-authentication-authorization.html

标签:kubernetes,--,devuser,dev,认证,key,kubeconfig
From: https://www.cnblogs.com/even160941/p/17728030.html

相关文章

  • 2023年DAMA-CDGA/CDGP数据治理认证报名多数人都选择这里
    DAMA认证为数据管理专业人士提供职业目标晋升规划,彰显了职业发展里程碑及发展阶梯定义,帮助数据管理从业人士获得企业数字化转型战略下的必备职业能力,促进开展工作实践应用及实际问题解决,形成企业所需的新数字经济下的核心职业竞争能力。DAMA是数据管理方面的认证,帮助数据从业者提升......
  • 2023年传统行业产品经理认证NPDP班多数人都认可这家
    NPDP产品经理国际资格认证是国际公认的唯一的新产品开发专业认证,集理论、方法与实践为一体的全方位的知识体系,为公司组织层级进行规划、决策、执行提供良好的方法体系支撑。我们针对互联网时代的个人、互联网企业、与传统企业推出一系列学习。课程从商业实战角度出发,梳理出在互联网......
  • 2023年CSPM-3国标项目管理中级认证多数人都认可这家
    CSPM-3中级项目管理专业人员评价,是中国标准化协会(全国项目管理标准化技术委员会秘书处),面向社会开展项目管理专业人员能力的等级证书。旨在构建多层次从业人员培养培训体系,建立健全人才职业能力评价和激励机制的要求,培养我国项目管理领域复合型人才。  【证书含金量】 ·竞聘优先......
  • 2023年DAMA-CDGP数据治理专家认证报名当然这里好
    DAMA认证为数据管理专业人士提供职业目标晋升规划,彰显了职业发展里程碑及发展阶梯定义,帮助数据管理从业人士获得企业数字化转型战略下的必备职业能力,促进开展工作实践应用及实际问题解决,形成企业所需的新数字经济下的核心职业竞争能力。DAMA是数据管理方面的认证,帮助数据从业者提升......
  • SonarQube系列-认证&授权的配置
    参考文档:https://docs.sonarqube.org/latest/instance-administration/security/概述SonarQube具有许多全局安全功能:认证和授权机制强制身份认证委派认证除此之外,还可在group/user级别配置:查看一个已存在的项目访问项目的源代码管理一个项目(设置排除模式,调整该项目......
  • 华为datacom-HCIA​ 华为datacom-HCIA 1​ 1. 第四弹 5​ 1.1. OSPF认证 5​ 1.1.1.
    华为datacom-HCIA华为datacom-HCIA11.第四弹51.1.OSPF认证51.1.1.基于接口认证51.1.1.1.接口认证更优先61.1.1.2.[R2]interfaceg0/0/161.1.1.3.[R2-g0/0/1]ospfauthentication-modesimplehuawei61.1.1.3.1.明文认证61.1.1.4.[R2-g0/0/1]ospfauthentication-mo......
  • CCF第三十一次计算机软件能力认证202309-1坐标变换(其一)
    第一题第二题一般比较简单,需要对编程达到熟悉的要求即可,不要求了解过多的数据结构和算法使用C提交一直编译错误,相同的代码使用C++提交却能通过,真是醉了坐标变化(其一)题目描述1.需要创建一个操作符矩阵,行和列分别是n和22.需要创建一个操作数矩阵,行和列分别是m和23.求出操作符......
  • 亚信科技AntDB数据库与优逸派科技基于人工智能的自动化运维管理平台产品完成兼容性互
    日前,亚信科技AntDB数据库与北京优逸派科技有限公司基于人工智能的自动化运维管理平台产品完成兼容互认。经过双方团队的严格测试,AntDB数据库与基于人工智能的自动化运维管理平台产品完全兼容,整体运行稳定高效。图1:亚信科技AntDB数据库与优逸派科技完成适配随着我国数字经济建设......
  • 产品经理认证备考心得
    UCPM是联合国训练所CIFAL中心颁发的产品经理证书。如今,ESG是推动企业可持续发展的新潮流。UCPM作为一种可持续发展证书,为我们带来了一套先进科学、系统全面的产品管理模式,是产品管理领域公认的权威证书。那么,如何准备这张证书的考试呢?在备考过程中,我总结了一些体会和经验,希......
  • 2023年东莞/深圳CPDA数据分析师认证报名小哥哥来这
    CPDA数据分析师认证是大数据方面的认证,助力数据分析人员打下扎实的数据分析基础知识功底,为入门数据分析保驾护航。帮助数据分析人员掌握系统化的数据分析思维和方法论,提升工作效率和决策能力,遇到问题能够举一反三,为大部分决策难题提供解决方案。帮助数据分析人员掌握几种通用的数据......