Kubernetes/k8s之安全机制:

k8s当中的安全机制

核心是分布式集群管理工具,容器编排,安全机制核心是:API SERVER作为整个集群内部通信的中介,也是外部控制的入口,所有的安全机制都是围绕api server开设计的。

请求api资源

1、认证 2、鉴权 3、准入机制

三个条件都通过,才可以在k8s集群当中创建资源。

认证:Authentcation

HTTP TOKEN:识别合法用户。token是一个很长的特殊的编码,很复杂的一个字符串,字符串是表达客户的一种方式。

每一个token都对一个用户名,用户名存储在api'server能够访问的文字中

客户都安发起请求,http headr包含token。

客户都安发起请求-----token----apiserver(用户名存储文件)-----解码---用户名---开始访问集群。

http base:用户名加密码的验证的方式。用户名和密码都是通过加密方式base64,进行加密。加密完了之后加密完的字符串,在http requeset的heder Atuthorization 发送给服务端。服务端收到加密字符串,解码,获取用户名和密码,验证通过,登录成功。

https证书:最严格的方式,也是最严格的方式,基于CA根证书签名的客户端身份认证的方式进行验证。

认证的访问类型:

k8s组件对apiserver组件的访问 kubelet kube-proxy

pod对api server的访问 pod coredns dashborad 都是pod,也需要访问api

客户端访问 kubectl

kubelet kube-proxy:

controller manager sheduler 与apiserver在一台服务器,可以直接使用api server的非安全端口进行访问。(8080端口)

kubectl kubelet kube-proxy 都是通过api server的https证书进行双向验证。进行双向验证,都是用6443端口进行验证。

签发证书

1、手动签发 二进制部署就是手动签发证书 ca签发把证书匹配到每个对应组件访问6443即可

2、自动签发,kubeadm, kubelet第一次访问api server使用api server使用token,token通过之后,controller mannager会为kubelet生成一个证书,以后都是通过证书访问。kubeadm修改了证书的有效期,默认一年

3、kubeconfig文件包含集群的参数,ca证书,API server地址,还存储了客户端的参数(客户端证书和私钥),集群的名称和用户名

整个k8s的组件都是通过启动时指定访问不用的kubeconfig,可以访问不同的集群----apiserver---namespace---资源对象---pod---容器

kubeconfig即是集群的描述文件,也是一个集群信息的保存文件,包含了集群的访问方式和认证信息。

~/.kube/config保存是kubectl的访问认证信息。

4、serviceAcount:

serviceAcount就是为了方便pod中容器来访问API server。pod的动作(增删改查)动态的,每个pod手动生成一个证书就不现实。

k8s使用的service Account来循环,不需要单独创建,service Account里面包含了统一的认证信息,直接进行api'service访问。

5、secret,保存资源对象,serviceAccount内部,保存的token service-account0token

secret保存的是自定义的保密信息。

6、serviceAcount:

1、token

2、ca.crt

3、namespace

都会被自动的挂载到pod当中去

二、鉴权:之前的认证过程,只是确认了双方都是可信的,可以相互通信的,鉴权是为了确定请求方的访问权限

能做哪些指定的操作。

1、AlwaysDeny:拒绝所有,一般是测试

2、AlwaysAllow:允许所有,用测试

3、ABAC attribute-based access control 基于属性的访问控制

4、webhook:外部访问集群内部的鉴权方式

5、RBAC:role-base access control基于角色的访问控制,也是k8s默认的规则机制

第一个叫做角色 role:指定命名空间的资源控制权限

rolebinding::将角色绑定到指定的命名空间

 还有集群

clustrole:可以授权所有命名空间的资源控制权限

clusterrolebinding:将集群的角色绑定到命名空间

准入控制:

是apiserve的一个准入控制器的一个插入列表,不同的插件可以实现不同的准入控制机制,一般情况下建议使用官方默认的准入控制器

limitranger命名空间的配额管理

serviceAccount

resourceQuota:命名空间的配额限制。

实验不同用户管理自己命名空间

useradd lucky

passwd lucky
mkdir /opt/lucky
chmod +x cfssl+
将三个cfssl cfssljson cfssl-cerinfo赋权  
vim user-lucky.sh
cat > lucky-csr.json << EOF
{
 "CN": "lucky",
 "hosts": [],
 "key":{
   "algo":"ras"
   "size": 2048
 },
 "names": [
   {
     "C": "CN",
     "ST": "Nanjing",
     "L": "k8s",
     "OU": "system"
   }

 ]
}
EOF 
cfssl gencert -ca=ca.crt -ca-key=ca.key -profile=kubernets /opt/u=lucky/lucky-csr.json | cfssljson -bare lucky

vim rbac-kubeconfig.sh
APISERVER=$1
# 设置集群参数
export KUBE_APISERVER="https://$APISERVER:6443"
kubectl config set-cluster kubernetes \
  --certificate-authority=/etc/kubernetes/pki/ca.crt \
  --embed-certs=true \
  --server=${KUBE_APISERVER} \
  --kubeconfig=lucky.kubeconfig
# 设置客户端认证参数
kubectl config set-credentials lucky \
  --client-key=/etc/kubernetes/pki/lucky-key.pem \
  --client-certificate=/etc/kubernetes/pki/lucky.pem \
  --embed-certs=true \
  --kubeconfig=lucky.kubeconfig

# 设置上下文参数
kubectl config set-context kubernetes \
  --cluster=kubernetes \
  --user=lucky \
  --namespace=lucky-cloud \
  --kubeconfig=lucky.kubeconfig
kubectl create namespace lucky-cloud
chmod +x rbac-kubeconfig.sh
./rbac-kubeconfig.sh 20.0.0.92

查看证书
cat lucky.kubeconfig
mkdir /home/lucky/.kube
cp lucky.kubeconfig /home/lucky/.kube/config
chown -R lucky:lucky /home/lucky/.kube/

vim rbac.yaml

apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
  namespace: lucky-cloud
  name: pod-reader
rules:
- apiGroups: [""]
  resources: ["pods"]
  verbs: ["get", "watch", "list", "create"]

---
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
  name: read-pods
  namespace: lucky-cloud
subjects:
- kind: User
  name: lucky
  apiGroup: rbac.authorization.k8s.io
roleRef:
  kind: Role
  name: pod-reader
  apiGroup: rbac.authorization.k8s.io
kubectl apply -f rbac.yaml
kubectl get role,rolebinding -n lucky-cloud




kubectl get role,rolebinding -n lucky-cloud

切换用户,测试操作权限
su - lucky

vim pod-test.yaml
apiVersion: v1
kind: Pod
metadata:
  name: pod-test
spec:
  containers:
    - name: nginx
      image: nginx
kubectl create -f pod-test.yaml

访问 svc 资源就会被拒绝
kubectl get svc

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/350654.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【技术预研】StarRocks官方文档浅析(2)

背景说明 基于starRocks官方文档&#xff0c;对其内容进行一定解析&#xff0c;方便大家理解和使用。 若无特殊标注&#xff0c;startRocks版本是3.2。 下面的章节和官方文档保持一致。 参考文档 产品简介 | StarRocks StarRocks StarRocks 是一款高性能分析型数据仓库&…

Conda python管理环境environments 四 从入门到精通

Conda系列&#xff1a; 翻译: Anaconda 与 miniconda的区别Miniconda介绍以及安装Conda python运行的包和环境管理 入门Conda python管理环境environments 一 从入门到精通Conda python管理环境environments 二 从入门到精通Conda python管理环境environments 三 从入门到精通…

CSS复合选择器和CSS层叠性、继承性有哪些内容?

知识引入 1.CSS复合选择器 书写CSS样式表时&#xff0c;可以使用CSS基础选择器选中目标元素。但是在实际网站开发中&#xff0c;一个网页中可能包含成千上万的元素&#xff0c;如果仅使用CSS基础选择器&#xff0c;是远远不够的。为此&#xff0c;CSS提供了几种复合选择器&am…

【论文笔记】Learning Deconvolution Network for Semantic Segmentation

重要说明&#xff1a;严格来说&#xff0c;论文所指的反卷积并不是真正的 deconvolution network 。 关于 deconvolution network 的详细介绍&#xff0c;请参考另一篇博客&#xff1a;什么是Deconvolutional Network&#xff1f; 一、参考资料 Learning Deconvolution Netwo…

命令行启动Android Studio模拟器

1、sdk路径查看&#xff08;打开Android Studio&#xff09; 以上前提是安装的Android Studio并添加了模拟器&#xff01;&#xff01;&#xff01; 2、复制路径在终端进入到 cd /Users/duxi/Library/Android/sdk目录&#xff08;命令行启动不用打开Android Studio就能运行模拟…

深入理解ZooKeeper分布式锁

第1章&#xff1a;引言 分布式系统&#xff0c;简单来说&#xff0c;就是由多台计算机通过网络相连&#xff0c;共同完成任务的系统。想象一下&#xff0c;咱们平时上网浏览网页、看视频&#xff0c;背后其实都是一大堆服务器在协同工作。这些服务器之间需要协调一致&#xff…

微信小程序元素/文字在横向和纵向实现居中对齐、两端对齐、左右对齐、上下对齐

元素对齐往往是新学者的一大困惑点&#xff0c;在此总结常用的各种元素和文字对齐方式以供参考&#xff1a; 初始显示 .wxml <view style"width: 100%;height: 500rpx; background-color: lightgray;"><view style"width: 200rpx;height:100rpx;bac…

navicat连接postgresql、人大金仓等数据库报错

navicat连接postgresql、人大金仓数据库报错问题是一个偶现的问题&#xff0c;需要我们特别关注&#xff1a; 1、客户端连接人大金仓数据库 这里注意&#xff1a;navicat连接postgresql、人大金仓数据库时均选择postgresql类型&#xff0c;因为人大金仓数据库底层和psql数据库…

Github 无法正常访问?一招解决

查询IP网址: https://ip.chinaz.com/ 主页如下&#xff1a; 分别查询以下三个网址的IP&#xff1a; github.com github.global.ssl.fastly.net assets-cdn.github.com 修改 hosts 文件&#xff1a; 将 /etc/hosts 复制到 home 下 sudo cp /etc/hosts ./ gedit hosts 在底下…

【大根堆】【C++算法】871 最低加油次数

作者推荐 【动态规划】【map】【C算法】1289. 下降路径最小和 II 本文涉及知识点 大根堆 优先队列 LeetCode:871最低加油次数 汽车从起点出发驶向目的地&#xff0c;该目的地位于出发位置东面 target 英里处。 沿途有加油站&#xff0c;用数组 stations 表示。其中 statio…

洛谷P5735 【深基7.例1】距离函数(C语言)

首先&#xff0c;三角形周长为 其次(x1,x2)和 &#xff08;y1,y2&#xff09;的距离 然后就可以为所欲为 #include <stdio.h> #include <math.h>double distance(double a1, double b1, double a2, double b2) {return sqrt((a1 - a2) * (a1 - a2) (b1 - b2) * …

code server安装使用教程

1. 安装 1.1. 下载code-server安装包 类似这种文件&#xff1a;code-server-3.10.2-linux-amd64.tar.gz 解压&#xff1a;tar -xvf code-server-3.10.2-linux-amd64.tar.gz 1.2 &#xff08;可选&#xff09;建立软连接 ln -s path/to/code-server-3.10.2-linux-amd64/bin…

IS-IS:05 ISIS开销值和协议优先级

IS-IS 协议为路由器的每个 IS-IS 接口定义并维护了一个 level-1 开销值和一个 level-2开销值。开销值可以在接口上或者全局上手动配置&#xff0c;也可以使用 auto-cost自动计算确定。 修改接口cost&#xff1a; int g0/0/0 isis cost 50修改全局cost&#xff1a; isis cir…

四、Kotlin 表达式

1. 常量 & 变量 1.1 可读写变量&#xff08;var&#xff09; var x initValue // x 称为可读写变量注意&#xff1a;当 var 声明的变量做成员属性时&#xff0c;默认提供 setter/getter 方法。 1.2 只读变量&#xff08;val&#xff09; val x initValue // x 称为只…

鸿蒙开发第2篇__装饰器

在ArkTS中&#xff0c; 有装饰器语法。 装饰器用于装饰类、结构、方法、变量&#xff0c;赋予其特殊的含义。 1. Component 表示自定义组件&#xff0c; 用此装饰器的组件是可重用的&#xff0c;可以与其他组件重合 此装饰器装饰的 struct 表示该结构体具有组件化能力&#…

学习STM32,该用哪款开发工具?

有很多初学者在问&#xff1a;学习STM32&#xff0c;该用哪款开发工具&#xff1f; 我首先说一下我的观点&#xff1a; 1.没有最好&#xff0c;只有适不适合&#xff0c;适合自己的才是最好的。 2.开发工具很多&#xff0c;各有各的特点&#xff0c;有优点肯定也有缺点。 本文…

Google Chrome RCE漏洞 CVE-2020-6507 和 CVE-2024-0517 流程分析

本文深入研究了两个在 Google Chrome 的 V8 JavaScript 引擎中发现的漏洞&#xff0c;分别是 CVE-2020-6507 和 CVE-2024-0517。这两个漏洞都涉及 V8 引擎的堆损坏问题&#xff0c;允许远程代码执行。通过EXP HTML部分的内存操作、垃圾回收等流程方式实施利用攻击。 CVE-2020-…

8.6 代理设计模式

文章目录 一、代理模式&#xff08;Proxy Pattern&#xff09;概述二、代理模式和观察者设计模式三、模式结构四、协作角色五、实现策略六、相关模式七、示例八、应用 一、代理模式&#xff08;Proxy Pattern&#xff09;概述 代理模式是一种设计模式&#xff0c;它通过引入一个…

ThinkPHP+uni-app框架熊猫电竞赏金电竞系统源码PHP含APP+H5

熊猫电竞赏金电竞系统源码&#xff0c;包含APP、H5和搭建视频教程&#xff0c;支持运营级搭建&#xff0c;这套源码是基于ThinkPHPUniaapp框架开发的。 赏金电竞系统源码 APPh5搭建视频 可搭建&#xff01;运营级&#xff01; 赏金赛源码&#xff0c;用户通过平台打比赛&#x…

区间dp/线性dp,HDU 4293 Groups

一、题目 1、题目描述 After the regional contest, all the ACMers are walking alone a very long avenue to the dining hall in groups. Groups can vary in size for kinds of reasons, which means, several players could walk together, forming a group.   As the …
最新文章