kubernetes10——访问控制(serviceaccount、useraccount、RBAC)

本文介绍了Kubernetes中的访问控制,重点讲解了ServiceAccount、UserAccount以及基于角色的访问控制(RBAC)。内容涵盖了ServiceAccount的创建与授权,UserAccount的使用,以及RBAC的四种类型Role、ClusterRole、RoleBinding和ClusterRoleBinding的详细解释,同时展示了如何通过RoleBinding将权限授予用户。
摘要由CSDN通过智能技术生成

一、访问控制

在这里插入图片描述
流程:认证授权准入控制

  • Authentication(认证)
    认证方式现共有8种,可以启用一种或多种认证方式,只要有一种认证方式通过,就不再进行其它方式的认证。通常启用X509 Client Certs和Service Accout Tokens两种认证方式。
  • Authorization(授权)
    必须经过认证阶段,才到授权请求,根据所有授权策略匹配请求资源属性,决定允许或拒绝请求。授权方式现共有6种,AlwaysDeny、AlwaysAllow、ABAC、RBAC、Webhook、Node。默认集群强制开启RBAC。
  • Admission Control(准入控制)
    用于拦截请求的一种方式,运行在认证、授权之后,是权限认证链上的最后一环,对请求API资源对象进行修改和校验。
  • Kubernetes集群有两类用户:由Kubernetes管理的Service Accounts (服务账户)(Users Accounts)普通账户。k8s中账号的概念不是我们理解的账号,它并不真的存在,它只是形式上存在。
  • 访问k8s的API Server的客户端主要分为两类:
    kubectl:用户家目录中的 .kube/config 里面保存了客户端访问API Server的密钥相关信息,这样当用kubectl访问k8s时,它就会自动读取该配置文件,向API Server发起认证,然后完成操作请求。
    pod:Pod中的进程需要访问API Server,如果是人去访问或编写的脚本去访问,这类访问使用的账号为:UserAccount;而Pod自身去连接API Server时,使用的账号是:ServiceAccount,生产中后者使用居多。
  • UserAccountserviceaccount
    用户账户是针对人而言的。 服务账户是针对运行在 pod 中的进程而言的。
    用户账户是全局性的。 其名称在集群各 namespace 中都是全局唯一的,未来的用户资源不会做 namespace 隔离, 服务账户是 namespace 隔离的。
    通常情况下,集群的用户账户可能会从企业数据库进行同步,其创建需要特殊权限,并且涉及到复杂的业务流程。 服务账户创建的目的是为了更轻量,允许集群用户为了具体的任务创建服务账户 ( 即权限最小化原则 )。

二、ServiceAccount

创建serviceaccount,此时k8s为用户自动生成认证信息,但没有授权
在这里插入图片描述
添加secrets到serviceaccount中,如果有pod使用admin这个serviceaccount就可以调用myregistrykey,但无法破解具体密码

[root@server2 ~]# kubectl patch serviceaccount admin -p '{"imagePullSecrets": [{"name": "myregistrykey"}]}'
serviceaccount/admin patched

myregistrykey和admin绑定成功
在这里插入图片描述

把serviceaccount和pod绑定起来(将认证信息添加到serviceAccount中,要比直接在Pod指定imagePullSecrets要安全很多)

[root@server2 configmap]# cat registry.yaml 
apiVersion: v1
kind: Pod
metadata:
  name: mypod
spec:
  containers:
  - name: game2048
    image: reg.westos.org/westos/game2048:latest
  serviceAccountName: admin
[root@server2 configmap]# kubectl apply -f registry.yaml 
pod/mypod created
[root@server2 configmap]# kubectl get pod
NAME    READY   STATUS    RESTARTS   AGE
mypod   1/1     Running   0          50s
[root@server2 configmap]# kubectl get pod mypod -o yaml #看到mypod产生时,调用了admin

在这里插入图片描述

三、UserAccount

创建UserAccount

[root@server2 configmap]# cd /etc/kubernetes/pki/      #可以看到有许多证书
[root@server2 pki]# openssl genrsa -out test.key 2048  #创建认证密钥
Generating RSA private key, 2048 bit long modulus      #提交证书申请请求
.
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

贾几人要努力

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值