飞天使-k8s基础组件分析-安全

文章目录

      • 名称空间解释
        • 访问kubernetes API的控制
        • RBAC的介绍
      • kubeconfig
        • 用户的创建
        • 集群默认角色
      • 给组创建授权
      • 针对pod配置服务账户
      • 参考文档

名称空间解释

名字是啥? 
答:集群中每个对象的名称对于该类型的资源都是唯一的。并且每一个对象在整个集群中也有一个唯一的UID.名称空间是啥? 
答:名称空间将集群划分为多个领域什么时候使用?
答: 企业中有多人使用时候,可以进行权限管控怎么查看?
答:看输出 是false 还是 true 
kubectl api-resources --namespace=false
kubectl api-resources --namespace=true名称空间和dns的关系? 
答: 
创建服务时,它将创建相应的DNS条目,这个条目的形式是<service-name>.<namespace-name>.svc.cluster.local
上面的namespace-name 是啥就是啥默认的名称空间?
答:
[root@k8s-01 ~]# kubectl get namespace
NAME              STATUS   AGE
default           Active   2d10h
kube-flannel      Active   2d10h
kube-node-lease   Active   2d10h
kube-public       Active   2d10h
kube-system       Active   2d10h
[root@k8s-01 ~]# kubectl get ns
NAME              STATUS   AGE
default           Active   2d10h 
kube-flannel      Active   2d10h
kube-node-lease   Active   2d10h
kube-public       Active   2d10h # 保留给集群使用,保持基本使用
kube-system       Active   2d10h  #管理相关的组件kubectl get pod -n kube-systemkubectl describe -n kube-system如何新增一个名称空间
答:如下命令
[root@k8s-01 ~]# kubectl create ns dev
namespace/dev created
[root@k8s-01 ~]# kubectl  get ns
NAME              STATUS   AGE
default           Active   2d10h
dev               Active   6s
kube-flannel      Active   2d10h
kube-node-lease   Active   2d10h
kube-public       Active   2d10h
kube-system       Active   2d10h
[root@k8s-01 ~]# kubectl delete ns dev如何利用json 创建名称空间
答:
[root@k8s-01 chapter06]# kubectl apply -f namespace-dev.json 
namespace/development created
[root@k8s-01 chapter06]# kubectl app^C
[root@k8s-01 chapter06]# kubectl apply -f namespace-prod.json 
namespace/production created
[root@k8s-01 chapter06]# kubectl get ns
NAME              STATUS   AGE
default           Active   2d10h
development       Active   17s
kube-flannel      Active   2d10h
kube-node-lease   Active   2d10h
kube-public       Active   2d10h
kube-system       Active   2d10h
production        Active   4s
[root@k8s-01 chapter06]# kubectl get ns --show-labels
NAME              STATUS   AGE     LABELS
default           Active   2d10h   <none>
development       Active   35s     name=development
kube-flannel      Active   2d10h   k8s-app=flannel,pod-security.kubernetes.io/enforce=privileged
kube-node-lease   Active   2d10h   <none>
kube-public       Active   2d10h   <none>
kube-system       Active   2d10h   <none>
production        Active   22s     name=production
[root@k8s-01 chapter06]# cat namespace-prod.json 
{"apiVersion": "v1","kind": "Namespace","metadata": {"name": "production","labels": {"name": "production"}}
}[root@k8s-01 chapter06]# cat namespace-dev.json 
{"apiVersion": "v1","kind": "Namespace","metadata": {"name": "development","labels": {"name": "development"}}
}

访问kubernetes API的控制

2. 认证的三种类型
基本认证
基于证书的验证
基于OpenID Connect3. 授权请求
如果Bob有以下策略,那么它可以读取projectCaribou名称空间的Pods
{"apiVersion": "abac.authorization.kuberneres.io/vibeta1","kind": "Policy","spec": {"user": "bob","namespace": "projectCaribou","resource": "pods","readonly": true}
}如果Bob发出以下请求,则请求将被授权,因为它可以读取projecctCaribou名称空间的对象。准入控制(有这块功能,使用场景少)
允许控制模块是可以修改或拒绝请求的软件模块。除了授权模块可用的属性之外 ,允许控制模块还可以访问正在创建或更新的对象的内容。

在这里插入图片描述

RBAC的介绍

为了充分理解RBAC的思想,我们必须理解它包含的三个要素:
Subject
Resources
Verbs人,资源,对资源有啥控制权限方向理解
verbs 有普通的角色和集群的角色

在这里插入图片描述

kubeconfig

Kubeconfig文件记录如何进行身份验证的详细信息。Kubectl使用这个配置文件来确定api服务器在何处及如何向api服务器发出请求。Kubeconfig文件三个顶级结构:
用户
Cluster属性
Context
查看授权文件: cat ~/.kube/config 有没有演示案例?
答:
[root@k8s-01 chapter06]# kubectl config set-credentials cluster-admin --username=admin --password=123456
User "cluster-admin" set.
[root@k8s-01 chapter06]# kubectl config set-credentials regular-user --username=user --password=654321
User "regular-user" set.[root@k8s-01 chapter06]# kubectl config set-cluster cluster1 --server=https://192.168.1.1
Cluster "cluster1" set.
[root@k8s-01 chapter06]# kubectl config set-cluster cluster2 --server=https://192.168.1.2
Cluster "cluster2" set.
用户名和集群配置完毕上下文将用户名和密码关联起来
[root@k8s-01 chapter06]# kubectl config set-context cluster-regular --cluster=cluster2 --user=regular-user
Context "cluster-regular" created.
[root@k8s-01 chapter06]# kubectl config set-context cluster-admin --cluster=cluster1 --user=cluster-admin
Context "cluster-admin" modified.查看配置
root@k8s-01 chapter06]# kubectl config view
apiVersion: v1
clusters:
- cluster:server: https://192.168.1.1name: cluster1
- cluster:server: https://192.168.1.2name: cluster2
- cluster:certificate-authority-data: DATA+OMITTEDserver: https://192.168.100.30:6443name: kubernetes
contexts:
- context:cluster: cluster1user: cluster-adminname: cluster-admin
- context:cluster: cluster2user: regular-username: cluster-regular
- context:cluster: kubernetesuser: kubernetes-adminname: kubernetes-admin@kubernetes
current-context: kubernetes-admin@kubernetes
kind: Config
preferences: {}
users:
- name: cluster-adminuser:password: "123456"username: admin
- name: kubernetes-adminuser:client-certificate-data: REDACTEDclient-key-data: REDACTED
- name: regular-useruser:password: "654321"username: user切换上下文
[root@k8s-01 chapter06]# kubectl config use-context cluster-admin
Switched to context "cluster-admin".
[root@k8s-01 chapter06]# kubectl get pod
^C
切换到其他的上下文是没有内容的
[root@k8s-01 chapter06]# kubectl config use-context kubernetes-admin@kubernetes
Switched to context "kubernetes-admin@kubernetes".如何删除用户?
kubectl config unset user.regular-user
kubectl config delete-context cluster-admin

在这里插入图片描述

用户的创建

此处实验做错了,可以参考,如果后续在大公司,人员多的情况下,在来复盘,小公司一般不需要
yum install -y openssl
openssl genrsa -out mike.key 2048
openssl req -new -key mike.key -out mike.csr -subj "/CN=mike/O=devs"[root@k8s-01 keys]# openssl x509 -req -in mike.csr -CA /etc/kubernetes/pki/ca.crt -CAkey /etc/kubernetes/pki/ca.key -CAcreateserial -out mike.crt -days 365
Signature ok
subject=/CN=mike/O=devs
Getting CA Private Key查看集群配置信息 kubectl config view
[root@k8s-01 keys]# kubectl config set-cluster mike --certificate-authority=ca.crt --server=https://192.168.100.30:6443
Cluster "mike" set.[root@k8s-01 keys]# kubectl config set-credentials mike --client-certificate=mike.crt --client-key=mike.key
User "mike" set.[root@k8s-01 keys]# kubectl config set-context mike --cluster mike --user mike

集群默认角色

[root@k8s-01 keys]# kubectl describe clusterrole cluster-admin
Name:         cluster-admin
Labels:       kubernetes.io/bootstrapping=rbac-defaults
Annotations:  rbac.authorization.kubernetes.io/autoupdate: true
PolicyRule:Resources  Non-Resource URLs  Resource Names  Verbs---------  -----------------  --------------  -----*.*        []                 []              [*][*]                []              [*]验证Mike的权限
# kubectl config use-context kubernetes-admin@kubernetes
# kubectl get all其它的验证方法
# kubectl auth can-I get pods –-as mike查看角色
# kubectl get roles查看Clusterroles
# kubectl get clusterrolesView集群角色
# kubectl describe clusterrole viewEdit集群角色
# kubectl describe clusterrole editAdmin集群角色
# kubectl describe clusterrole admincluster-admin
# kubectl describe clusterrole cluster-admin创建角色绑定
# kubectl create rolebinding mike --clusterrole view –-user mike --namespace default --save-config
# kubectl get rolebindings验证mike权限
# kubectl describe rolebinding mike
# kubectl --namespace kube-system describe rolebinding mike
# kubectl auth can-I get pods –-as mike
# kubectl auth can-I get pods --as mike --all-namespaces删除角色绑定
# kubectl delete rolebinding mike创建集群所有命名空间查看权限
创建集群角色绑定
# kubectl create –f crb-view.yml --record --save-config
# kubectl describe clusterrolebinding view验证集群角色绑定
# kubectl auth can-I get pods –-as mike --all-namespaces 创建指定命名空间管理权限
创建角色绑定
# kubectl create –f rb-dev.yml --record --save-config验证权限
# kubectl --namespace dev auth can-I create deployments --as mike
# kubectl –-namespace dev auth can-I delete deployments --as mike
# kubectl --namespace dev auth can-I “*”“*” --as mike创建指定名称空间超级管理权限
创建角色绑定
# kubectl create –f rb-mike.yml --record --save-config测试权限
# kubectl –-namespace mike auth can-I \”*” “*” --as mike创建自定义权限- 创建角色和绑定
# kubectl create –f crb-release-manager.yml --record --save-cconfig
# kubectl describe clusterrole release-manager测试权限
# kubectl –-namespace default auth can-I “*” pods –-as mike
# kubectl –-namespace default auth can-I create deployments –-as mike
# kubectl –-namespace  default auth can-I delete deployments –-as mike

给组创建授权

创建一个用户,所属组devs
# openssl req –in keys/mike.csr –noout –subject subject=/CN=mike/O=devs创建组绑定
# kubectl apply –f groups.yml –-record
# kubectl –-namespace dev auth can-I create deployments –-as mike客户端执行
# kubectl config use-context mike
# kubectl –-namespace dev run new-db –-image mongo:3.3

针对pod配置服务账户

查看默认的服务帐户
# kubectl get pods/<podname> - yaml
# kubectl get serviceaccounts创建服务帐户
# kubectl apply –f <<EOF
apiVersion: v1
Kind: ServiceAccount
Metadata: name: build-robot
EOF查看创建的服务帐户
# kubectl get serviceaccounts/build-robot –o yaml删除服务帐户
# kubectl delete serviceaccount/build-robot

参考文档

https://edu.csdn.net/course/detail/27762

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

学习ts(十一)本地存储与发布订阅模式

localStorage实现过期时间 目录 准备 安装 npm i rollup typescript rollup-plugin-typescript2// tsconfig.json"module": "ESNext","moduleResolution": "node", "strict": false, // rollup.config.js import …

【Unity3D赛车游戏】【五】Unity中汽车加速效果是如何优化的?

&#x1f468;‍&#x1f4bb;个人主页&#xff1a;元宇宙-秩沅 &#x1f468;‍&#x1f4bb; hallo 欢迎 点赞&#x1f44d; 收藏⭐ 留言&#x1f4dd; 加关注✅! &#x1f468;‍&#x1f4bb; 本文由 秩沅 原创 &#x1f468;‍&#x1f4bb; 收录于专栏&#xff1a;Uni…

ai课堂行为分析检测评估

ai课堂行为分析检测评估系统通过yolo网络模型算法&#xff0c;ai课堂行为分析检测评估算法利用摄像头采集学生的图像&#xff0c;视线跟踪技术的智能教学系统由情感模型、教师模型、学生模型和课程模型四个模型组成。用户端的视线及表情信息通过摄像头采集并传递到情感模型情感…

[C++] STL_vector 迭代器失效问题

文章目录 1、前言2、情况一&#xff1a;底层空间改变的操作3、情况二&#xff1a;指定位置元素的删除操作4、g编译器对迭代器失效检测4.1 扩容4.2 erase删除任意位置&#xff08;非尾删&#xff09;4.3 erase尾删 5、总结 1、前言 **迭代器的主要作用就是让算法能够不用关心底…

如何查看友商的Camera配流情况

有时候&#xff0c;我们想看下竞品友商机器上&#xff0c;使用到camera的app 申请的分辨率情况。 如果只是抓logcat日志&#xff0c;我们可能没法从中获取到有效信息&#xff0c;毕竟一般出货的机器版本&#xff0c;基本已经把大部分相关日志都给关闭了。 那有没其它方式&…

【Java基础增强】类加载器和反射

1.类加载器 1.1类加载器【理解】 作用 负责将.class文件&#xff08;存储的物理文件&#xff09;加载在到内存中 1.2类加载的过程【理解】 类加载时机 创建类的实例&#xff08;对象&#xff09; 调用类的类方法 访问类或者接口的类变量&#xff0c;或者为该类变量赋值 …

最新两年工作经验总结

最新两年工作经验总结 前言URP的使用1&#xff1a;如何开启URP1、老项目升级为URP2、创建新项目时选择URP创建 2&#xff1a;URP阴影的设置 PolyBrush的使用&#xff08;地图编辑插件&#xff09;制作山峰or低谷边缘柔化雨刷上色制造场景中的物体贴图地形创建容易踩坑的点ProBu…

数值类特征

数值类特征 数值类特征是最常见的一种特征类型&#xff0c;数值可以直接喂给算法。 为了提升效果&#xff0c;我们需要对数值特征做一些处理&#xff0c;本文介绍了4种常见的处理方式&#xff1a;缺失值处理、二值化、分桶、缩放。 什么是数值类特征&#xff1f; 数值类特征就是…

各地区结婚、离婚、再婚等数据(1990-2021年)

涵盖了1990年至2021年各地区的结婚、离婚以及再婚情况。通过对此数据进行分析&#xff0c;我们可以了解婚姻趋势的演变和地区之间的差异。数据反映了人们的婚姻决策、家庭变化以及社会动态&#xff0c;为研究家庭结构和社会变迁提供了有价值的信息。 一、数据介绍 数据名称&a…

git操作:将一个仓库的分支提交到另外一个仓库分支

这个操作&#xff0c;一般是同步不同网站的同个仓库&#xff0c;比如说gitee 和github。某个网站更新了&#xff0c;你想同步他的分支过来。然后基于分支开发或者其它。 操作步骤 1.本地先clone 你自己的仓库。也就是要push 分支的仓库。比如A仓库&#xff0c;把B仓库分支&am…

Node.JS教程

文章目录 Node.JSNode.js学习指南一、Node.js基础1.认识Node.js2.开发环境搭建3. 模块、包、commonJS3.1、为什么要有模块化开发&#xff1f;3.2、CommonJS规范3.3、 modules模块化规范写法 4.Npm&Yarn4.1、npm使用4.2、全局安装nrm4.3、yarn使用 持续更新中总结 Node.JS N…

物理机ping不通windows server 2012

刚才尝试各种方法&#xff0c;在物理机上就是ping不能wmware中的windows server 2012 . 折腾了几个小时&#xff0c;原来是icmp 被windows server 2012 禁用了 现在使用使用以下协议就能启用Icmp协议。 netsh firewall set icmpsetting 8然后&#xff0c;就能正常ping 通虚…

Ubuntu20 安装 libreoffice

1 更新apt-get sudo apt-get update2 安装jdk 查看jdk安装情况 Command java not found, but can be installed with:sudo apt install default-jre # version 2:1.11-72, or sudo apt install openjdk-11-jre-headless # version 11.0.138-0ubuntu1~20.04 sud…

Android沉浸式实现(记录)

沉浸式先看效果 直接上代码 Android manifest文件 android:theme"style/Theme.AppCompat.NoActionBar"布局文件 <?xml version"1.0" encoding"utf-8"?> <androidx.constraintlayout.widget.ConstraintLayout xmlns:android"ht…

js实现数据关联查找更新。数据求和验证

为了实现这个功能我们和后端定义了数据结构 data:{id&#xff1a;‘’&#xff0c;formInfo:,formInfo2:,formInfo3:,formInfo4:, ......deailData:[ // 明细数据 // saleData 查询带出的对应明细序列号数据{ id:, ocopyId:, copyId:, odoId:, ......, saleData:[ { id:, oc…

SpringCloud学习笔记(九)_使用Java类加载SpringBoot、SpringCloud配置文件

我们都知道平常在使用SpringBoot和SpringCloud的时候&#xff0c;如果需要加载一两个配置文件的话我们通常使用Value(“${属性名称}”)注解去加载。但是如果配置文件属性特别多的时候使用这种方式就显得特别的不友好了。 比如说&#xff0c;我们要加载下方这个名为application.…

C# 使用NPOI操作EXCEL

1.添加NOPI 引用->管理NuGet程序包->添加NOPI 2.相关程序集 3.添加命名空间 using NPOI.HSSF; using NPOI.XSSF; using System.IO; using NPOI.XSSF.UserModel; using NPOI.HSSF.UserModel; 4.样例 //NPOI读入dgv private void button1_Click(object sender, EventArgs…

【详解】文本检测OCR模型的评价指标

关于文本检测OCR模型的评价指标 前言&#xff1a;网上关于评价标准乱七八糟的&#xff0c;有关于单词的&#xff0c;有关于段落的&#xff0c;似乎没见过谁解释一下常见论文中常用的评价指标具体是怎么计算的&#xff0c;比如DBNet&#xff0c;比如RCNN&#xff0c;这似乎好像…

GIT 常用指令

基础指令 $ git init #初始化仓库&#xff0c;在该文件夹创建的为workspace$ git add . #已暂存 [.通配符&#xff0c;全部添加]$ git commit -m "log add file" #提交到仓库,并写了日志 ”log add file“$ git status #查看状态&#xff0c;可查看被修改的文件…

React 使用 useRef() 获取循环中所有子组件实例

目录 背景思考实现完整代码&#xff1a;成功运行后的界面如下&#xff1a; 知识点总结uesRef() 作对象处理useImperativeHandle() 父组件操作引入子组件的内部方法最后 背景 之前项目中使用了antd pro 中的 可编辑表格 (EditableProTable)&#xff0c;在页面中表格要经过多层遍…